getfem-commits
[Top][All Lists]
Advanced

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

[Getfem-commits] r4586 - in /trunk/getfem/src: getfem/getfem_im_data.h g


From: andriy . andreykiv
Subject: [Getfem-commits] r4586 - in /trunk/getfem/src: getfem/getfem_im_data.h getfem_im_data.cc
Date: Thu, 03 Apr 2014 14:01:04 -0000

Author: andrico
Date: Thu Apr  3 16:01:03 2014
New Revision: 4586

URL: http://svn.gna.org/viewcvs/getfem?rev=4586&view=rev
Log:
small improvements in im_data regarding its dependency update

Modified:
    trunk/getfem/src/getfem/getfem_im_data.h
    trunk/getfem/src/getfem_im_data.cc

Modified: trunk/getfem/src/getfem/getfem_im_data.h
URL: 
http://svn.gna.org/viewcvs/getfem/trunk/getfem/src/getfem/getfem_im_data.h?rev=4586&r1=4585&r2=4586&view=diff
==============================================================================
--- trunk/getfem/src/getfem/getfem_im_data.h    (original)
+++ trunk/getfem/src/getfem/getfem_im_data.h    Thu Apr  3 16:01:03 2014
@@ -327,7 +327,6 @@
     mutable std::vector<size_type> filtered_int_point_index_; 
     mutable std::vector<size_type> int_point_index_; 
     mutable dal::bit_vector        filtered_convex_index_;
-    mutable bool                   require_update_;
     mutable gmm::uint64_type       v_num_;
 
     size_type              filtered_region_;

Modified: trunk/getfem/src/getfem_im_data.cc
URL: 
http://svn.gna.org/viewcvs/getfem/trunk/getfem/src/getfem_im_data.cc?rev=4586&r1=4585&r2=4586&view=diff
==============================================================================
--- trunk/getfem/src/getfem_im_data.cc  (original)
+++ trunk/getfem/src/getfem_im_data.cc  Thu Apr  3 16:01:03 2014
@@ -1,4 +1,5 @@
 #include "getfem/getfem_im_data.h"
+#include "getfem/getfem_omp.h"
 
 namespace getfem
 {
@@ -6,7 +7,7 @@
   im_data::im_data(const getfem::mesh_im& meshIm,
                    bgeot::multi_index tensorSize,
                    size_type filteredRegion)
-    :im_(meshIm), nb_filtered_index_(0), nb_index_(0), require_update_(true),
+    :im_(meshIm), nb_filtered_index_(0), nb_index_(0),
     filtered_region_(filteredRegion) {
     set_tensor_size(tensorSize);
     add_dependency(im_);
@@ -14,7 +15,7 @@
   }
 
   im_data::im_data(const getfem::mesh_im& meshIm, size_type filteredRegion)
-    :im_(meshIm), nb_filtered_index_(0), nb_index_(0), require_update_(true),
+    :im_(meshIm), nb_filtered_index_(0), nb_index_(0),
     filtered_region_(filteredRegion) {
     tensor_size_.resize(1);
     tensor_size_[0] = 1;
@@ -24,6 +25,7 @@
   }
     
   void im_data::update_index_() const {
+    omp_guard lock;
     nb_index_         = 0;      
     size_type nElement = im_.convex_index().last_true() + 1;
     int_point_index_.clear();
@@ -50,32 +52,27 @@
         nb_filtered_index_            += nPoint;
       }
     }
-
-    require_update_ = false;
-    touch();
     v_num_ = act_counter();
   }
 
   size_type im_data::nb_index() const{
     context_check();
-    if (require_update_) update_index_();
     return nb_index_;
   }
 
   size_type im_data::nb_filtered_index() const{
     context_check();
-    if (require_update_) update_index_();
     return nb_filtered_index_;
   }
 
   size_type im_data::nb_points_of_element(size_type cv) const{
+    context_check();
     if (!im_.convex_index().is_in(cv)) return 0;
     return 
im_.int_method_of_element(cv)->approx_method()->nb_points_on_convex();
   }
 
   size_type im_data::index_of_point(size_type cv, size_type i) const{
     context_check();
-    if (require_update_) update_index_();
     if (cv < int_point_index_.size()) return int_point_index_[cv] + i;
     else return size_type(-1);
   }
@@ -94,7 +91,6 @@
 
   size_type im_data::filtered_index_of_point(size_type cv, size_type i) const{
     context_check();
-    if (require_update_) update_index_();
     if(cv < filtered_int_point_index_.size())
     {
       if (filtered_int_point_index_[cv] == size_type(-1)) return size_type(-1);
@@ -105,22 +101,21 @@
 
   dal::bit_vector im_data::filtered_convex_index() const{
     context_check();
-    if (require_update_) update_index_();
     return filtered_convex_index_;
   }
 
   std::vector<size_type> im_data::filtered_index_of_first_point() const{
     context_check();
-    if (require_update_) update_index_();
     return filtered_int_point_index_;
   }
 
   void im_data::set_region(size_type rg){
     filtered_region_ = rg;
-    update_index_();
+    touch();
   }
 
   void im_data::update_from_context() const{
-    require_update_ = true;
+    update_index_();
+    touch();
   }
 }




reply via email to

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