getfem-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Getfem-commits] r5200 - /trunk/getfem/src/


From: Yves . Renard
Subject: [Getfem-commits] r5200 - /trunk/getfem/src/
Date: Fri, 18 Dec 2015 13:23:04 -0000

Author: renard
Date: Fri Dec 18 14:23:03 2015
New Revision: 5200

URL: http://svn.gna.org/viewcvs/getfem?rev=5200&view=rev
Log:
small fixes

Modified:
    trunk/getfem/src/getfem_generic_assembly.cc
    trunk/getfem/src/getfem_integration.cc
    trunk/getfem/src/getfem_mesh_im_level_set.cc
    trunk/getfem/src/getfem_mesh_level_set.cc

Modified: trunk/getfem/src/getfem_generic_assembly.cc
URL: 
http://svn.gna.org/viewcvs/getfem/trunk/getfem/src/getfem_generic_assembly.cc?rev=5200&r1=5199&r2=5200&view=diff
==============================================================================
--- trunk/getfem/src/getfem_generic_assembly.cc (original)
+++ trunk/getfem/src/getfem_generic_assembly.cc Fri Dec 18 14:23:03 2015
@@ -7646,8 +7646,9 @@
             mi1[i] = size_type(round(pnode->children[i+1]->t[0])-1);
             if (mi1[i] >= child0->tensor_proper_size(i))
               ga_throw_error(expr, pnode->children[i+1]->pos,
-                             "Index out of range, " << mi1[i]+1 << " > "
-                             << child0->tensor_proper_size(i) << " .");
+                             "Index out of range, " << mi1[i]+1
+                            << ". Should be between 1 and "
+                             << child0->tensor_proper_size(i) << ".");
           }
         }
         mi.resize(0);

Modified: trunk/getfem/src/getfem_integration.cc
URL: 
http://svn.gna.org/viewcvs/getfem/trunk/getfem/src/getfem_integration.cc?rev=5200&r1=5199&r2=5200&view=diff
==============================================================================
--- trunk/getfem/src/getfem_integration.cc      (original)
+++ trunk/getfem/src/getfem_integration.cc      Fri Dec 18 14:23:03 2015
@@ -494,8 +494,6 @@
     repartition[2] = nbpt + 2; 
     
     Legendre_polynomials Lp;
-
-    // Legendre_polynomials &Lp = 
dal::singleton<Legendre_polynomials>::instance();
     Lp.init(nbpt);
     
     for (short_type i = 0; i < nbpt; ++i) {

Modified: trunk/getfem/src/getfem_mesh_im_level_set.cc
URL: 
http://svn.gna.org/viewcvs/getfem/trunk/getfem/src/getfem_mesh_im_level_set.cc?rev=5200&r1=5199&r2=5200&view=diff
==============================================================================
--- trunk/getfem/src/getfem_mesh_im_level_set.cc        (original)
+++ trunk/getfem/src/getfem_mesh_im_level_set.cc        Fri Dec 18 14:23:03 2015
@@ -262,7 +262,7 @@
     base_matrix pc(pgt2->nb_points(), n);
     std::vector<size_type> ptsing;
 
-    //cerr << "testing convex " << cv << ", " << msh.convex_index().card() << 
" subconvexes\n";
+    // cout << "testing convex " << cv << ", " << msh.convex_index().card() << 
" subconvexes\n";
 
     for (dal::bv_visitor i(msh.convex_index()); !i.finished(); ++i) {
       papprox_integration pai = regular_simplex_pim->approx_method();
@@ -371,21 +371,23 @@
        
        
        for (size_type j = 0; j < pai->nb_points_on_face(f); ++j) {
-         c.set_xref(pai->point_on_face(f, j));
-         base_small_vector un = pgt2->normals()[f], up(msh.dim());
-         gmm::mult(c.B(), un, up);
-         scalar_type nup = gmm::vect_norm2(up);
-
-         scalar_type nnup(1);
-         if (integrate_where == INTEGRATE_BOUNDARY) {
-           cc.set_xref(c.xreal());
-           mesherls0[isin]->grad(c.xreal(), un);
-           un /= gmm::vect_norm2(un);
-           gmm::mult(cc.B(), un, up);
-           nnup = gmm::vect_norm2(up);
+         if (gmm::abs(c.J()) > 1E-11) {
+           c.set_xref(pai->point_on_face(f, j));
+           base_small_vector un = pgt2->normals()[f], up(msh.dim());
+           gmm::mult(c.B(), un, up);
+           scalar_type nup = gmm::vect_norm2(up);
+           
+           scalar_type nnup(1);
+           if (integrate_where == INTEGRATE_BOUNDARY) {
+             cc.set_xref(c.xreal());
+             mesherls0[isin]->grad(c.xreal(), un);
+             un /= gmm::vect_norm2(un);
+             gmm::mult(cc.B(), un, up);
+             nnup = gmm::vect_norm2(up);
+           }
+           new_approx->add_point(c.xreal(), pai->coeff_on_face(f, j)
+                                 * gmm::abs(c.J()) * nup * nnup, ff);
          }
-         new_approx->add_point(c.xreal(), pai->coeff_on_face(f, j)
-                               * gmm::abs(c.J()) * nup * nnup, ff);
        } 
       }
     }
@@ -436,6 +438,7 @@
       }
     }
     is_adapted = true; touch();
+    // cout << "Number of built methods : " << build_methods.size() << endl;
   }
 
 

Modified: trunk/getfem/src/getfem_mesh_level_set.cc
URL: 
http://svn.gna.org/viewcvs/getfem/trunk/getfem/src/getfem_mesh_level_set.cc?rev=5200&r1=5199&r2=5200&view=diff
==============================================================================
--- trunk/getfem/src/getfem_mesh_level_set.cc   (original)
+++ trunk/getfem/src/getfem_mesh_level_set.cc   Fri Dec 18 14:23:03 2015
@@ -35,7 +35,7 @@
     return os;
   }
 
-  std::ostream &operator<<(std::ostream &os, const mesh_level_set::zoneset 
&zs) {
+  std::ostream &operator<<(std::ostream &os,const mesh_level_set::zoneset &zs) 
{
     os << "zoneset[";
     for (mesh_level_set::zoneset::const_iterator it = zs.begin(); 
         it != zs.end(); ++it) {
@@ -102,7 +102,7 @@
 
   static void interpolate_face(mesh &m, dal::bit_vector& ptdone, 
                               const std::vector<size_type>& ipts,
-                              bgeot::pconvex_structure cvs, 
+                              const bgeot::pconvex_structure &cvs, 
                               size_type nb_vertices,
                               const std::vector<dal::bit_vector> &constraints,
                               const std::vector<const
@@ -142,8 +142,9 @@
          // if (cts.card() > 1)
          //   cout << "WARNING, projection sur " << cts << endl;
          if (!pure_multi_constraint_projection(list_constraints, P, cts)) {
-           GMM_WARNING1("Pure multi has failed in interpolate_face !! Original 
point " << m.points()[ipts[i]] << " projection " << P);
-           // GMM_ASSERT1(false, "");
+           GMM_WARNING1("Pure multi has failed in interpolate_face !! "
+                        "Original point " << m.points()[ipts[i]]
+                        << " projection " << P);
          } else {
            m.points()[ipts[i]] = P;
          }
@@ -505,7 +506,7 @@
 
       dmin = 2.*h0;
       if (noisy) cout << "dmin = " << dmin << " h0 = " << h0 << endl;
-      if (noisy) cout << "cetait le convexe " << cv << endl;
+      if (noisy) cout << "convex " << cv << endl;
       
       dal::bit_vector retained_points
        = mesh_points.decimate(*ref_element, dmin);
@@ -552,7 +553,7 @@
          size_type j = msh.add_convex(bgeot::simplex_geotrans(n,1),
                                       
gmm::vect_const_begin(gmm::mat_col(simplexes, i)));
          /* remove flat convexes => beware the final mesh may not be conformal 
! */
-         if (msh.convex_quality_estimate(j) < 1E-12) msh.sup_convex(j);
+         if (msh.convex_quality_estimate(j) < 1E-10) msh.sup_convex(j);
          else {
            std::vector<scalar_type> signs(list_constraints.size());
            std::vector<size_type> prev_point(list_constraints.size());
@@ -562,7 +563,7 @@
                  (*(list_constraints[jj]))(msh.points_of_convex(j)[ii]);
                if (gmm::abs(dd) > radius_cv * 1E-7) {
                  if (dd * signs[jj] < 0.0) {
-                   if (noisy) cout << "Intersection trouvee ... " << jj
+                   if (noisy) cout << "Intersection found ... " << jj
                                    << " dd = " << dd << " convex quality = "
                                    << msh.convex_quality_estimate(j) << "\n";
                    // calcul d'intersection
@@ -623,8 +624,8 @@
              (pgt2->convex_ref()->points()[k], msh.points_of_convex(j));
          }
          msh.sup_convex(j);
-         /* some new point will be added to the mesh, but the initial ones 
(those on the
-            convex vertices) are kepts */
+         /* some new point will be added to the mesh, but the initial ones
+            (those on the convex vertices) are kepts */
          size_type jj = msh.add_convex_by_points(pgt2, cvpts.begin());
          assert(jj == j);
        }
@@ -653,7 +654,7 @@
              assert(K>1);
              continue; /* ignore additional point inserted when K>1 */
            }
-           if (first) { cts = fixed_points_constraints[fpts[k]]; first = 
false; }
+           if (first) { cts = fixed_points_constraints[fpts[k]]; first=false; }
            else cts &= fixed_points_constraints[fpts[k]];
          }
          for (dal::bv_visitor ii(cts); !ii.finished(); ++ii) {
@@ -664,11 +665,14 @@
       }
 
       
-      if (K > 1) { // à ne faire que sur les convexes concernés ..
+      if (K > 1) { // To be done only on the level-set ...
        dal::bit_vector ptdone;
        std::vector<size_type> ipts;
-       for (dal::bv_visitor i(msh.convex_index()); !i.finished(); ++i) {
-         for (short_type f = 0; f <= n; ++f) {
+       for (mr_visitor icv(ls_border_faces); !icv.finished(); ++icv) {
+         size_type i = icv.cv();
+         short_type f = icv.f();
+       // for (dal::bv_visitor i(msh.convex_index()); !i.finished(); ++i) {
+       //  for (short_type f = 0; f <= n; ++f) {
            const mesh::ind_pt_face_ct &fpts
              = msh.ind_points_of_face_of_convex(i, f);
            ipts.assign(fpts.begin(), fpts.end());
@@ -684,7 +688,7 @@
            interpolate_face_chrono.toc();
 #endif
          }
-       }
+       // }
       }
 
       if (noisy) {
@@ -717,15 +721,14 @@
          pgt2->poly_vector_grad(pai->point(j), pc);
          gmm::mult(G,pc,KK);
          scalar_type J = gmm::lu_det(KK);
-         if (noisy && J * sign < 0)
-           cout << "ATTENTION retrournement de situation en convexe " << i
-                << "sign = " << sign << " J = " << J << " p1 = "
-                << msh.points_of_convex(i)[0] << " p2 = "
-                << msh.points_of_convex(i)[1] << " p3 = "
-                << msh.points_of_convex(i)[2] << " p4 = "
-                << msh.points_of_convex(i)[3] << " p5 = "
-                << msh.points_of_convex(i)[4] << " p6 = "
-                << msh.points_of_convex(i)[5] << " K = " << int(K) << endl;
+         if (noisy && J * sign < 0) {
+           cout << "CAUTION reversal situation in convex " << i
+                << "sign = " << sign << " J = " << J << endl;
+           for (size_type nip = 0; nip < msh.nb_points_of_convex(i); ++nip)
+             cout << "Point " << nip << "=" << msh.points_of_convex(i)[nip]
+                  << " ";
+           cout << endl;
+         }
          if (sign == 0 && gmm::abs(J) > 1E-14) sign = J;
          new_approx->add_point(c.xreal(), pai->coeff(j) * gmm::abs(J));
        }
@@ -752,7 +755,7 @@
       scalar_type error = test_integration_error(new_approx, 1);
       if (noisy) cout << " max monomial integration err: " << error << "\n";
       if (error > 1e-5) {
-       if (noisy) cout << "PAS BON NON PLUS\n"; if (noisy) getchar();
+       if (noisy) cout << "Not Good ! Let us make a finer cut.\n"; if (noisy) 
getchar();
        if (dmin > 3*h0) { dmin /= 2.; }
        else { h0 /= 2.0; dmin = 2.*h0; }
        h0_is_ok = false;
@@ -824,8 +827,10 @@
       mesh &msh = *(it->second.pmsh);      
       for (unsigned ils = 0; ils < nb_level_sets(); ++ils) {
        if (get_level_set(ils)->has_secondary()) {
-         pmesher_signed_distance mesherls0 = 
get_level_set(ils)->mls_of_convex(cv, 0, false);
-         pmesher_signed_distance mesherls1 = 
get_level_set(ils)->mls_of_convex(cv, 1, false);
+         pmesher_signed_distance
+           mesherls0 = get_level_set(ils)->mls_of_convex(cv, 0, false);
+         pmesher_signed_distance
+           mesherls1 = get_level_set(ils)->mls_of_convex(cv, 1, false);
          for (dal::bv_visitor ii(msh.convex_index()); !ii.finished(); ++ii) {
            for (unsigned ipt = 0; ipt < msh.nb_points_of_convex(ii); ++ipt) {
              if (gmm::abs((*mesherls0)(msh.points_of_convex(ii)[ipt])) < 1E-10




reply via email to

[Prev in Thread] Current Thread [Next in Thread]