changeset 257:fb67b636616f

Distribute mesh after creating it * Subdomain markers are not supported by DOLFIN in parallel execution!
author Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
date Wed, 30 Jul 2014 21:09:52 +0200
parents 8fe68d94ab76
children ab35a8b0deef
files src/Mesh.cc
diffstat 1 files changed, 200 insertions(+), 187 deletions(-) [+]
line wrap: on
line diff
--- a/src/Mesh.cc	Wed Jul 30 20:59:37 2014 +0200
+++ b/src/Mesh.cc	Wed Jul 30 21:09:52 2014 +0200
@@ -17,6 +17,9 @@
 
 #include "mesh.h"
 #include "dolfin_compat.h"
+#ifdef LATEST_DOLFIN
+#include <dolfin/mesh/MeshPartitioning.h>
+#endif
 
 DEFUN_DLD (Mesh, args, ,"-*- texinfo -*-\n\
 @deftypefn {Function File} {[@var{mesh_out}]} = \
@@ -133,59 +136,67 @@
       dolfin::MeshValueCollection<std::size_t> facet(*msh, D - 1);
       std::size_t num_side_edges = e.cols ();
 
-      if (D == 2)
+      unsigned const num_procs =
+#ifdef LATEST_DOLFIN
+        dolfin::MPI::size (MPI_COMM_WORLD);
+#else
+        dolfin::MPI::num_processes ();
+#endif
+
+      if (num_procs == 1)
         {
-          for (uint i = 0; i < num_side_edges; ++i)
+          if (D == 2)
             {
-              dolfin::Vertex v (*msh, e.xelem (0, i) - 1);
-              for (dolfin::FacetIterator f (v); ! f.end (); ++f)
+              for (uint i = 0; i < num_side_edges; ++i)
                 {
-                  if ((*f).entities(0)[0] == e.xelem (0, i) - 1
-                      && (*f).entities(0)[1] == e.xelem (1, i) - 1
-                      || (*f).entities(0)[0] == e.xelem (1, i) - 1
-                      && (*f).entities(0)[1] == e.xelem (0, i) - 1)
+                  dolfin::Vertex v (*msh, e.xelem (0, i) - 1);
+                  for (dolfin::FacetIterator f (v); ! f.end (); ++f)
                     {
-                      std::pair <std::size_t, std::size_t>
-                        idxvl ((*f).index (), e.xelem (4, i));
-                      msh->domains ().set_marker (idxvl, D - 1);
-                      break;
+                      if ((*f).entities(0)[0] == e.xelem (0, i) - 1
+                          && (*f).entities(0)[1] == e.xelem (1, i) - 1
+                          || (*f).entities(0)[0] == e.xelem (1, i) - 1
+                          && (*f).entities(0)[1] == e.xelem (0, i) - 1)
+                        {
+                          std::pair <std::size_t, std::size_t>
+                            idxvl ((*f).index (), e.xelem (4, i));
+                          msh->domains ().set_marker (idxvl, D - 1);
+                          break;
+                        }
                     }
                 }
             }
-        }
 
-
-
-      if (D == 3)
-        {
-          for (uint i = 0; i < num_side_edges; ++i)
+          if (D == 3)
             {
-              dolfin::Vertex v (*msh, e.xelem (0, i) - 1);
-              for (dolfin::FacetIterator f (v); ! f.end (); ++f)
+              for (uint i = 0; i < num_side_edges; ++i)
                 {
-                  if ((*f).entities(0)[0] == e(0, i) - 1
-                      && (*f).entities(0)[1] == e.xelem (1, i) - 1
-                      && (*f).entities(0)[2] == e.xelem (2, i) - 1
-                      || (*f).entities(0)[0] == e.xelem (0, i) - 1
-                      && (*f).entities(0)[1] == e.xelem (2, i) - 1
-                      && (*f).entities(0)[2] == e.xelem (1, i) - 1
-                      || (*f).entities(0)[0] == e.xelem (1, i) - 1
-                      && (*f).entities(0)[1] == e.xelem (0, i) - 1
-                      && (*f).entities(0)[2] == e.xelem (2, i) - 1
-                      || (*f).entities(0)[0] == e.xelem (1, i) - 1
-                      && (*f).entities(0)[1] == e.xelem (2, i) - 1
-                      && (*f).entities(0)[2] == e.xelem (0, i) - 1
-                      || (*f).entities(0)[0] == e.xelem (2, i) - 1
-                      && (*f).entities(0)[1] == e.xelem (0, i) - 1
-                      && (*f).entities(0)[2] == e.xelem (1, i) - 1
-                      || (*f).entities(0)[0] == e.xelem (2, i) - 1
-                      && (*f).entities(0)[1] == e.xelem (1, i) - 1
-                      && (*f).entities(0)[2] == e.xelem (0, i) - 1)
+                  dolfin::Vertex v (*msh, e.xelem (0, i) - 1);
+                  for (dolfin::FacetIterator f (v); ! f.end (); ++f)
                     {
-                      std::pair <std::size_t, std::size_t> 
-                        idxvl ((*f).index (), e.xelem (9, i));
-                      msh->domains ().set_marker (idxvl, D - 1);
-                      break;
+                      if ((*f).entities(0)[0] == e(0, i) - 1
+                          && (*f).entities(0)[1] == e.xelem (1, i) - 1
+                          && (*f).entities(0)[2] == e.xelem (2, i) - 1
+                          || (*f).entities(0)[0] == e.xelem (0, i) - 1
+                          && (*f).entities(0)[1] == e.xelem (2, i) - 1
+                          && (*f).entities(0)[2] == e.xelem (1, i) - 1
+                          || (*f).entities(0)[0] == e.xelem (1, i) - 1
+                          && (*f).entities(0)[1] == e.xelem (0, i) - 1
+                          && (*f).entities(0)[2] == e.xelem (2, i) - 1
+                          || (*f).entities(0)[0] == e.xelem (1, i) - 1
+                          && (*f).entities(0)[1] == e.xelem (2, i) - 1
+                          && (*f).entities(0)[2] == e.xelem (0, i) - 1
+                          || (*f).entities(0)[0] == e.xelem (2, i) - 1
+                          && (*f).entities(0)[1] == e.xelem (0, i) - 1
+                          && (*f).entities(0)[2] == e.xelem (1, i) - 1
+                          || (*f).entities(0)[0] == e.xelem (2, i) - 1
+                          && (*f).entities(0)[1] == e.xelem (1, i) - 1
+                          && (*f).entities(0)[2] == e.xelem (0, i) - 1)
+                        {
+                          std::pair <std::size_t, std::size_t> 
+                            idxvl ((*f).index (), e.xelem (9, i));
+                          msh->domains ().set_marker (idxvl, D - 1);
+                          break;
+                        }
                     }
                 }
             }
@@ -195,159 +206,161 @@
       dolfin::MeshValueCollection<std::size_t> cell (*msh, D);
       std::size_t num_cells = t.cols ();
 
-      if (D == 2)
+      if (num_procs == 1)
         {
-          for (uint i = 0; i < num_cells; ++i)
+          if (D == 2)
             {
-              dolfin::Vertex v (*msh, t.xelem (0, i) - 1);
-              for (dolfin::CellIterator f (v); ! f.end (); ++f)
+              for (uint i = 0; i < num_cells; ++i)
+                {
+                  dolfin::Vertex v (*msh, t.xelem (0, i) - 1);
+                  for (dolfin::CellIterator f (v); ! f.end (); ++f)
+                    {
+                      if ((*f).entities(0)[0] == t.xelem (0, i) - 1
+                          && (*f).entities(0)[1] == t.xelem (1, i) - 1
+                          && (*f).entities(0)[2] == t.xelem (2, i) - 1
+                          || (*f).entities(0)[0] == t.xelem (0, i) - 1
+                          && (*f).entities(0)[1] == t.xelem (2, i) - 1
+                          && (*f).entities(0)[2] == t.xelem (1, i) - 1
+                          || (*f).entities(0)[0] == t.xelem (1, i) - 1
+                          && (*f).entities(0)[1] == t.xelem (0, i) - 1
+                          && (*f).entities(0)[2] == t.xelem (2, i) - 1
+                          || (*f).entities(0)[0] == t.xelem (1, i) - 1
+                          && (*f).entities(0)[1] == t.xelem (2, i) - 1
+                          && (*f).entities(0)[2] == t.xelem (0, i) - 1
+                          || (*f).entities(0)[0] == t.xelem (2, i) - 1
+                          && (*f).entities(0)[1] == t.xelem (0, i) - 1
+                          && (*f).entities(0)[2] == t.xelem (1, i) - 1
+                          || (*f).entities(0)[0] == t.xelem (2, i) - 1
+                          && (*f).entities(0)[1] == t.xelem (1, i) - 1
+                          && (*f).entities(0)[2] == t.xelem (0, i) - 1)
+                        {
+                          std::pair <std::size_t, std::size_t>
+                            idxvl ((*f).index (), t.xelem (3, i));
+                          msh->domains ().set_marker (idxvl, D);
+                          break;
+                        }
+                    }
+                }
+            }
+
+          if (D == 3)
+            {
+              for (uint i = 0; i < num_cells; ++i)
                 {
-                  if ((*f).entities(0)[0] == t.xelem (0, i) - 1
-                      && (*f).entities(0)[1] == t.xelem (1, i) - 1
-                      && (*f).entities(0)[2] == t.xelem (2, i) - 1
-                      || (*f).entities(0)[0] == t.xelem (0, i) - 1
-                      && (*f).entities(0)[1] == t.xelem (2, i) - 1
-                      && (*f).entities(0)[2] == t.xelem (1, i) - 1
-                      || (*f).entities(0)[0] == t.xelem (1, i) - 1
-                      && (*f).entities(0)[1] == t.xelem (0, i) - 1
-                      && (*f).entities(0)[2] == t.xelem (2, i) - 1
-                      || (*f).entities(0)[0] == t.xelem (1, i) - 1
-                      && (*f).entities(0)[1] == t.xelem (2, i) - 1
-                      && (*f).entities(0)[2] == t.xelem (0, i) - 1
-                      || (*f).entities(0)[0] == t.xelem (2, i) - 1
-                      && (*f).entities(0)[1] == t.xelem (0, i) - 1
-                      && (*f).entities(0)[2] == t.xelem (1, i) - 1
-                      || (*f).entities(0)[0] == t.xelem (2, i) - 1
-                      && (*f).entities(0)[1] == t.xelem (1, i) - 1
-                      && (*f).entities(0)[2] == t.xelem (0, i) - 1)
+                  dolfin::Vertex v (*msh, t.xelem (0, i) - 1);
+                  for (dolfin::CellIterator f (v); ! f.end (); ++f)
                     {
-                      std::pair <std::size_t, std::size_t>
-                        idxvl ((*f).index (), t.xelem (3, i));
-                      msh->domains ().set_marker (idxvl, D);
-                      break;
+                      if ((*f).entities(0)[0] == t.xelem (0, i) - 1
+                           && (*f).entities(0)[1] == t.xelem (1, i) - 1
+                           && (*f).entities(0)[2] == t.xelem (2, i) - 1
+                           && (*f).entities(0)[3] == t.xelem (3, i) - 1
+                           || (*f).entities(0)[0] == t.xelem (0, i) - 1
+                           && (*f).entities(0)[1] == t.xelem (1, i) - 1
+                           && (*f).entities(0)[2] == t.xelem (3, i) - 1
+                           && (*f).entities(0)[3] == t.xelem (2, i) - 1
+                           || (*f).entities(0)[0] == t.xelem (0, i) - 1
+                           && (*f).entities(0)[1] == t.xelem (2, i) - 1
+                           && (*f).entities(0)[2] == t.xelem (1, i) - 1
+                           && (*f).entities(0)[3] == t.xelem (3, i) - 1
+                           || (*f).entities(0)[0] == t.xelem (0, i) - 1
+                           && (*f).entities(0)[1] == t.xelem (2, i) - 1
+                           && (*f).entities(0)[2] == t.xelem (3, i) - 1
+                           && (*f).entities(0)[3] == t.xelem (1, i) - 1
+                           || (*f).entities(0)[0] == t.xelem (0, i) - 1
+                           && (*f).entities(0)[1] == t.xelem (3, i) - 1
+                           && (*f).entities(0)[2] == t.xelem (1, i) - 1
+                           && (*f).entities(0)[3] == t.xelem (2, i) - 1
+                           || (*f).entities(0)[0] == t.xelem (0, i) - 1
+                           && (*f).entities(0)[1] == t.xelem (3, i) - 1
+                           && (*f).entities(0)[2] == t.xelem (2, i) - 1
+                           && (*f).entities(0)[3] == t.xelem (1, i) - 1
+
+                           || (*f).entities(0)[0] == t.xelem (1, i) - 1
+                           && (*f).entities(0)[1] == t.xelem (0, i) - 1
+                           && (*f).entities(0)[2] == t.xelem (2, i) - 1
+                           && (*f).entities(0)[3] == t.xelem (3, i) - 1
+                           || (*f).entities(0)[0] == t.xelem (1, i) - 1
+                           && (*f).entities(0)[1] == t.xelem (0, i) - 1
+                           && (*f).entities(0)[2] == t.xelem (3, i) - 1
+                           && (*f).entities(0)[3] == t.xelem (2, i) - 1
+                           || (*f).entities(0)[0] == t.xelem (1, i) - 1
+                           && (*f).entities(0)[1] == t.xelem (2, i) - 1
+                           && (*f).entities(0)[2] == t.xelem (0, i) - 1
+                           && (*f).entities(0)[3] == t.xelem (3, i) - 1
+                           || (*f).entities(0)[0] == t.xelem (1, i) - 1
+                           && (*f).entities(0)[1] == t.xelem (2, i) - 1
+                           && (*f).entities(0)[2] == t.xelem (3, i) - 1
+                           && (*f).entities(0)[3] == t.xelem (0, i) - 1
+                           || (*f).entities(0)[0] == t.xelem (1, i) - 1
+                           && (*f).entities(0)[1] == t.xelem (3, i) - 1
+                           && (*f).entities(0)[2] == t.xelem (0, i) - 1
+                           && (*f).entities(0)[3] == t.xelem (2, i) - 1
+                           || (*f).entities(0)[0] == t.xelem (1, i) - 1
+                           && (*f).entities(0)[1] == t.xelem (3, i) - 1
+                           && (*f).entities(0)[2] == t.xelem (2, i) - 1
+                           && (*f).entities(0)[3] == t.xelem (0, i) - 1
+
+                           || (*f).entities(0)[0] == t.xelem (2, i) - 1
+                           && (*f).entities(0)[1] == t.xelem (0, i) - 1
+                           && (*f).entities(0)[2] == t.xelem (1, i) - 1
+                           && (*f).entities(0)[3] == t.xelem (3, i) - 1
+                           || (*f).entities(0)[0] == t.xelem (2, i) - 1
+                           && (*f).entities(0)[1] == t.xelem (0, i) - 1
+                           && (*f).entities(0)[2] == t.xelem (3, i) - 1
+                           && (*f).entities(0)[3] == t.xelem (1, i) - 1
+                           || (*f).entities(0)[0] == t.xelem (2, i) - 1
+                           && (*f).entities(0)[1] == t.xelem (1, i) - 1
+                           && (*f).entities(0)[2] == t.xelem (0, i) - 1
+                           && (*f).entities(0)[3] == t.xelem (3, i) - 1
+                           || (*f).entities(0)[0] == t.xelem (2, i) - 1
+                           && (*f).entities(0)[1] == t.xelem (1, i) - 1
+                           && (*f).entities(0)[2] == t.xelem (3, i) - 1
+                           && (*f).entities(0)[3] == t.xelem (0, i) - 1
+                           || (*f).entities(0)[0] == t.xelem (2, i) - 1
+                           && (*f).entities(0)[1] == t.xelem (3, i) - 1
+                           && (*f).entities(0)[2] == t.xelem (0, i) - 1
+                           && (*f).entities(0)[3] == t.xelem (1, i) - 1
+                           || (*f).entities(0)[0] == t.xelem (2, i) - 1
+                           && (*f).entities(0)[1] == t.xelem (3, i) - 1
+                           && (*f).entities(0)[2] == t.xelem (1, i) - 1
+                           && (*f).entities(0)[3] == t.xelem (0, i) - 1
+
+                           || (*f).entities(0)[0] == t.xelem (3, i) - 1
+                           && (*f).entities(0)[1] == t.xelem (0, i) - 1
+                           && (*f).entities(0)[2] == t.xelem (1, i) - 1
+                           && (*f).entities(0)[3] == t.xelem (2, i) - 1
+                           || (*f).entities(0)[0] == t.xelem (3, i) - 1
+                           && (*f).entities(0)[1] == t.xelem (0, i) - 1
+                           && (*f).entities(0)[2] == t.xelem (2, i) - 1
+                           && (*f).entities(0)[3] == t.xelem (1, i) - 1
+                           || (*f).entities(0)[0] == t.xelem (3, i) - 1
+                           && (*f).entities(0)[1] == t.xelem (1, i) - 1
+                           && (*f).entities(0)[2] == t.xelem (0, i) - 1
+                           && (*f).entities(0)[3] == t.xelem (2, i) - 1
+                           || (*f).entities(0)[0] == t.xelem (3, i) - 1
+                           && (*f).entities(0)[1] == t.xelem (1, i) - 1
+                           && (*f).entities(0)[2] == t.xelem (2, i) - 1
+                           && (*f).entities(0)[3] == t.xelem (0, i) - 1
+                           || (*f).entities(0)[0] == t.xelem (3, i) - 1
+                           && (*f).entities(0)[1] == t.xelem (2, i) - 1
+                           && (*f).entities(0)[2] == t.xelem (0, i) - 1
+                           && (*f).entities(0)[3] == t.xelem (1, i) - 1
+                           || (*f).entities(0)[0] == t.xelem (3, i) - 1
+                           && (*f).entities(0)[1] == t.xelem (2, i) - 1
+                           && (*f).entities(0)[2] == t.xelem (1, i) - 1
+                           && (*f).entities(0)[3] == t.xelem (0, i) - 1)
+                        {
+                          std::pair <std::size_t, std::size_t>
+                            idxvl ((*f).index (), t.xelem (4, i));
+                          msh->domains ().set_marker (idxvl, D);
+                          break;
+                        }
                     }
                 }
             }
         }
 
-
-
-      if (D == 3)
-        {
-          for (uint i = 0; i < num_cells; ++i)
-            {
-              dolfin::Vertex v (*msh, t.xelem (0, i) - 1);
-              for (dolfin::CellIterator f (v); ! f.end (); ++f)
-                {
-                  if ((*f).entities(0)[0] == t.xelem (0, i) - 1
-                       && (*f).entities(0)[1] == t.xelem (1, i) - 1
-                       && (*f).entities(0)[2] == t.xelem (2, i) - 1
-                       && (*f).entities(0)[3] == t.xelem (3, i) - 1
-                       || (*f).entities(0)[0] == t.xelem (0, i) - 1
-                       && (*f).entities(0)[1] == t.xelem (1, i) - 1
-                       && (*f).entities(0)[2] == t.xelem (3, i) - 1
-                       && (*f).entities(0)[3] == t.xelem (2, i) - 1
-                       || (*f).entities(0)[0] == t.xelem (0, i) - 1
-                       && (*f).entities(0)[1] == t.xelem (2, i) - 1
-                       && (*f).entities(0)[2] == t.xelem (1, i) - 1
-                       && (*f).entities(0)[3] == t.xelem (3, i) - 1
-                       || (*f).entities(0)[0] == t.xelem (0, i) - 1
-                       && (*f).entities(0)[1] == t.xelem (2, i) - 1
-                       && (*f).entities(0)[2] == t.xelem (3, i) - 1
-                       && (*f).entities(0)[3] == t.xelem (1, i) - 1
-                       || (*f).entities(0)[0] == t.xelem (0, i) - 1
-                       && (*f).entities(0)[1] == t.xelem (3, i) - 1
-                       && (*f).entities(0)[2] == t.xelem (1, i) - 1
-                       && (*f).entities(0)[3] == t.xelem (2, i) - 1
-                       || (*f).entities(0)[0] == t.xelem (0, i) - 1
-                       && (*f).entities(0)[1] == t.xelem (3, i) - 1
-                       && (*f).entities(0)[2] == t.xelem (2, i) - 1
-                       && (*f).entities(0)[3] == t.xelem (1, i) - 1
-
-                       || (*f).entities(0)[0] == t.xelem (1, i) - 1
-                       && (*f).entities(0)[1] == t.xelem (0, i) - 1
-                       && (*f).entities(0)[2] == t.xelem (2, i) - 1
-                       && (*f).entities(0)[3] == t.xelem (3, i) - 1
-                       || (*f).entities(0)[0] == t.xelem (1, i) - 1
-                       && (*f).entities(0)[1] == t.xelem (0, i) - 1
-                       && (*f).entities(0)[2] == t.xelem (3, i) - 1
-                       && (*f).entities(0)[3] == t.xelem (2, i) - 1
-                       || (*f).entities(0)[0] == t.xelem (1, i) - 1
-                       && (*f).entities(0)[1] == t.xelem (2, i) - 1
-                       && (*f).entities(0)[2] == t.xelem (0, i) - 1
-                       && (*f).entities(0)[3] == t.xelem (3, i) - 1
-                       || (*f).entities(0)[0] == t.xelem (1, i) - 1
-                       && (*f).entities(0)[1] == t.xelem (2, i) - 1
-                       && (*f).entities(0)[2] == t.xelem (3, i) - 1
-                       && (*f).entities(0)[3] == t.xelem (0, i) - 1
-                       || (*f).entities(0)[0] == t.xelem (1, i) - 1
-                       && (*f).entities(0)[1] == t.xelem (3, i) - 1
-                       && (*f).entities(0)[2] == t.xelem (0, i) - 1
-                       && (*f).entities(0)[3] == t.xelem (2, i) - 1
-                       || (*f).entities(0)[0] == t.xelem (1, i) - 1
-                       && (*f).entities(0)[1] == t.xelem (3, i) - 1
-                       && (*f).entities(0)[2] == t.xelem (2, i) - 1
-                       && (*f).entities(0)[3] == t.xelem (0, i) - 1
-
-                       || (*f).entities(0)[0] == t.xelem (2, i) - 1
-                       && (*f).entities(0)[1] == t.xelem (0, i) - 1
-                       && (*f).entities(0)[2] == t.xelem (1, i) - 1
-                       && (*f).entities(0)[3] == t.xelem (3, i) - 1
-                       || (*f).entities(0)[0] == t.xelem (2, i) - 1
-                       && (*f).entities(0)[1] == t.xelem (0, i) - 1
-                       && (*f).entities(0)[2] == t.xelem (3, i) - 1
-                       && (*f).entities(0)[3] == t.xelem (1, i) - 1
-                       || (*f).entities(0)[0] == t.xelem (2, i) - 1
-                       && (*f).entities(0)[1] == t.xelem (1, i) - 1
-                       && (*f).entities(0)[2] == t.xelem (0, i) - 1
-                       && (*f).entities(0)[3] == t.xelem (3, i) - 1
-                       || (*f).entities(0)[0] == t.xelem (2, i) - 1
-                       && (*f).entities(0)[1] == t.xelem (1, i) - 1
-                       && (*f).entities(0)[2] == t.xelem (3, i) - 1
-                       && (*f).entities(0)[3] == t.xelem (0, i) - 1
-                       || (*f).entities(0)[0] == t.xelem (2, i) - 1
-                       && (*f).entities(0)[1] == t.xelem (3, i) - 1
-                       && (*f).entities(0)[2] == t.xelem (0, i) - 1
-                       && (*f).entities(0)[3] == t.xelem (1, i) - 1
-                       || (*f).entities(0)[0] == t.xelem (2, i) - 1
-                       && (*f).entities(0)[1] == t.xelem (3, i) - 1
-                       && (*f).entities(0)[2] == t.xelem (1, i) - 1
-                       && (*f).entities(0)[3] == t.xelem (0, i) - 1
-
-                       || (*f).entities(0)[0] == t.xelem (3, i) - 1
-                       && (*f).entities(0)[1] == t.xelem (0, i) - 1
-                       && (*f).entities(0)[2] == t.xelem (1, i) - 1
-                       && (*f).entities(0)[3] == t.xelem (2, i) - 1
-                       || (*f).entities(0)[0] == t.xelem (3, i) - 1
-                       && (*f).entities(0)[1] == t.xelem (0, i) - 1
-                       && (*f).entities(0)[2] == t.xelem (2, i) - 1
-                       && (*f).entities(0)[3] == t.xelem (1, i) - 1
-                       || (*f).entities(0)[0] == t.xelem (3, i) - 1
-                       && (*f).entities(0)[1] == t.xelem (1, i) - 1
-                       && (*f).entities(0)[2] == t.xelem (0, i) - 1
-                       && (*f).entities(0)[3] == t.xelem (2, i) - 1
-                       || (*f).entities(0)[0] == t.xelem (3, i) - 1
-                       && (*f).entities(0)[1] == t.xelem (1, i) - 1
-                       && (*f).entities(0)[2] == t.xelem (2, i) - 1
-                       && (*f).entities(0)[3] == t.xelem (0, i) - 1
-                       || (*f).entities(0)[0] == t.xelem (3, i) - 1
-                       && (*f).entities(0)[1] == t.xelem (2, i) - 1
-                       && (*f).entities(0)[2] == t.xelem (0, i) - 1
-                       && (*f).entities(0)[3] == t.xelem (1, i) - 1
-                       || (*f).entities(0)[0] == t.xelem (3, i) - 1
-                       && (*f).entities(0)[1] == t.xelem (2, i) - 1
-                       && (*f).entities(0)[2] == t.xelem (1, i) - 1
-                       && (*f).entities(0)[3] == t.xelem (0, i) - 1)
-                    {
-                      std::pair <std::size_t, std::size_t>
-                        idxvl ((*f).index (), t.xelem (4, i));
-                      msh->domains ().set_marker (idxvl, D);
-                      break;
-                    }
-                }
-            }
-        }
-
-     pmsh = msh;
+      dolfin::MeshPartitioning::build_distributed_mesh (*msh);
+      pmsh = msh;
     }
 }