getfem-commits
[Top][All Lists]
Advanced

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

[Getfem-commits] r4865 - /trunk/getfem/src/getfem_generic_assembly.cc


From: Yves . Renard
Subject: [Getfem-commits] r4865 - /trunk/getfem/src/getfem_generic_assembly.cc
Date: Wed, 25 Feb 2015 19:38:47 -0000

Author: renard
Date: Wed Feb 25 20:38:46 2015
New Revision: 4865

URL: http://svn.gna.org/viewcvs/getfem?rev=4865&view=rev
Log:
important bug fix for the interpolate transformation with expression

Modified:
    trunk/getfem/src/getfem_generic_assembly.cc

Modified: trunk/getfem/src/getfem_generic_assembly.cc
URL: 
http://svn.gna.org/viewcvs/getfem/trunk/getfem/src/getfem_generic_assembly.cc?rev=4865&r1=4864&r2=4865&view=diff
==============================================================================
--- trunk/getfem/src/getfem_generic_assembly.cc (original)
+++ trunk/getfem/src/getfem_generic_assembly.cc Wed Feb 25 20:38:46 2015
@@ -8880,7 +8880,14 @@
           bgeot::pgeometric_trans pgt = target_mesh.trans_of_convex(cv);
 
           size_type nbd_t = pgt->nb_points();
-          for (short_type ip = 0; ip < nbd_t; ++ip) {
+          if (nbd_t) {
+            gmm::copy(target_mesh.points_of_convex(cv)[0], bmin);
+            gmm::copy(bmin, bmax);
+          } else {
+            gmm::clear(bmin);
+            gmm::clear(bmax);
+          }
+          for (short_type ip = 1; ip < nbd_t; ++ip) {
             // size_type ind = target_mesh.ind_points_of_convex(cv)[ip];
             const base_node &pt = target_mesh.points_of_convex(cv)[ip];
 
@@ -8933,10 +8940,10 @@
       *m_t = &target_mesh;
 
       while (bset.size()) {
-
         // Searching the box for which the point is the most in the interior
-        bgeot::rtree::pbox_set::iterator it = bset.begin(), itmax;
-        scalar_type rate_max = scalar_type(0);
+        bgeot::rtree::pbox_set::iterator it = bset.begin(), itmax = it;
+
+        scalar_type rate_max = scalar_type(-1);
         for (; it != bset.end(); ++it) {
           
           scalar_type rate_box = scalar_type(1);
@@ -8948,13 +8955,12 @@
               rate_box = std::min(rate, rate_box);                
             }
           }
-          if (rate_box != scalar_type(1) && rate_box > rate_max) {
+          if (rate_box > rate_max) {
             itmax = it;
             rate_max = rate_box;
           }
         }
-        
-   
+
         cv = (*itmax)->id;
         bset.erase(itmax);
 
@@ -8969,8 +8975,6 @@
           ret_type = 1;
           break;
         }
-
-
       }
 
       // Note on derivatives of the transformation : for efficiency and




reply via email to

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