getfem-commits
[Top][All Lists]
Advanced

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

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


From: logari81
Subject: [Getfem-commits] r4951 - /trunk/getfem/src/getfem_generic_assembly.cc
Date: Tue, 14 Apr 2015 06:43:55 -0000

Author: logari81
Date: Tue Apr 14 08:43:54 2015
New Revision: 4951

URL: http://svn.gna.org/viewcvs/getfem?rev=4951&view=rev
Log:
add basic support for MPI in the high level generic assembly

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=4951&r1=4950&r2=4951&view=diff
==============================================================================
--- trunk/getfem/src/getfem_generic_assembly.cc (original)
+++ trunk/getfem/src/getfem_generic_assembly.cc Tue Apr 14 08:43:54 2015
@@ -4846,6 +4846,11 @@
     ga_exec(gis, *this);
     // cout << "Exec time " << gmm::uclock_sec()-time << endl;
 
+    if (order == 1) {
+       MPI_SUM_VECTOR(assembled_vector());
+       MPI_SUM_VECTOR(unreduced_V);
+    }
+
     // Deal with reduced fems.
     if (order) {
       std::list<ga_tree>::iterator it = gis.trees.begin();
@@ -8870,7 +8875,9 @@
 
       // iteration on elements (or faces of elements)
       std::vector<size_type> ind;
-      for (getfem::mr_visitor v(region, m); !v.finished(); ++v) {
+      mesh_region rg(region);
+      m.intersect_with_mpi_region(rg);
+      for (getfem::mr_visitor v(rg, m); !v.finished(); ++v) {
         if (gic.use_mim()) {
           if (!mim.convex_index().is_in(v.cv())) continue;
           gis.pai = mim.int_method_of_element(v.cv())->approx_method();
@@ -8978,7 +8985,9 @@
       const mesh_region &region = *(it->first.region());
 
       // iteration on elements (or faces of elements)
-      for (getfem::mr_visitor v(region, m); !v.finished(); ++v) {
+      mesh_region rg(region);
+      m.intersect_with_mpi_region(rg);
+      for (getfem::mr_visitor v(rg, m); !v.finished(); ++v) {
         if (mim.convex_index().is_in(v.cv())) {
           // cout << "proceed with element " << v.cv() << endl;
           bgeot::vectors_to_base_matrix(G, m.points_of_convex(v.cv()));




reply via email to

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