Mercurial > fem-fenics-eugenio
comparison src/Mesh.cc @ 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 | 5e9b5bbdc56b |
children | ab35a8b0deef |
comparison
equal
deleted
inserted
replaced
256:8fe68d94ab76 | 257:fb67b636616f |
---|---|
15 this program; if not, see <http://www.gnu.org/licenses/>. | 15 this program; if not, see <http://www.gnu.org/licenses/>. |
16 */ | 16 */ |
17 | 17 |
18 #include "mesh.h" | 18 #include "mesh.h" |
19 #include "dolfin_compat.h" | 19 #include "dolfin_compat.h" |
20 #ifdef LATEST_DOLFIN | |
21 #include <dolfin/mesh/MeshPartitioning.h> | |
22 #endif | |
20 | 23 |
21 DEFUN_DLD (Mesh, args, ,"-*- texinfo -*-\n\ | 24 DEFUN_DLD (Mesh, args, ,"-*- texinfo -*-\n\ |
22 @deftypefn {Function File} {[@var{mesh_out}]} = \ | 25 @deftypefn {Function File} {[@var{mesh_out}]} = \ |
23 Mesh (@var{mesh_in}) \n\ | 26 Mesh (@var{mesh_in}) \n\ |
24 Construct a mesh from file or from (p, e, t) format.\n\ | 27 Construct a mesh from file or from (p, e, t) format.\n\ |
131 // store information associated with e | 134 // store information associated with e |
132 msh->init (D - 1); | 135 msh->init (D - 1); |
133 dolfin::MeshValueCollection<std::size_t> facet(*msh, D - 1); | 136 dolfin::MeshValueCollection<std::size_t> facet(*msh, D - 1); |
134 std::size_t num_side_edges = e.cols (); | 137 std::size_t num_side_edges = e.cols (); |
135 | 138 |
136 if (D == 2) | 139 unsigned const num_procs = |
137 { | 140 #ifdef LATEST_DOLFIN |
138 for (uint i = 0; i < num_side_edges; ++i) | 141 dolfin::MPI::size (MPI_COMM_WORLD); |
139 { | 142 #else |
140 dolfin::Vertex v (*msh, e.xelem (0, i) - 1); | 143 dolfin::MPI::num_processes (); |
141 for (dolfin::FacetIterator f (v); ! f.end (); ++f) | 144 #endif |
142 { | 145 |
143 if ((*f).entities(0)[0] == e.xelem (0, i) - 1 | 146 if (num_procs == 1) |
144 && (*f).entities(0)[1] == e.xelem (1, i) - 1 | 147 { |
145 || (*f).entities(0)[0] == e.xelem (1, i) - 1 | 148 if (D == 2) |
146 && (*f).entities(0)[1] == e.xelem (0, i) - 1) | 149 { |
150 for (uint i = 0; i < num_side_edges; ++i) | |
151 { | |
152 dolfin::Vertex v (*msh, e.xelem (0, i) - 1); | |
153 for (dolfin::FacetIterator f (v); ! f.end (); ++f) | |
147 { | 154 { |
148 std::pair <std::size_t, std::size_t> | 155 if ((*f).entities(0)[0] == e.xelem (0, i) - 1 |
149 idxvl ((*f).index (), e.xelem (4, i)); | 156 && (*f).entities(0)[1] == e.xelem (1, i) - 1 |
150 msh->domains ().set_marker (idxvl, D - 1); | 157 || (*f).entities(0)[0] == e.xelem (1, i) - 1 |
151 break; | 158 && (*f).entities(0)[1] == e.xelem (0, i) - 1) |
159 { | |
160 std::pair <std::size_t, std::size_t> | |
161 idxvl ((*f).index (), e.xelem (4, i)); | |
162 msh->domains ().set_marker (idxvl, D - 1); | |
163 break; | |
164 } | |
152 } | 165 } |
153 } | 166 } |
154 } | 167 } |
155 } | 168 |
156 | 169 if (D == 3) |
157 | 170 { |
158 | 171 for (uint i = 0; i < num_side_edges; ++i) |
159 if (D == 3) | 172 { |
160 { | 173 dolfin::Vertex v (*msh, e.xelem (0, i) - 1); |
161 for (uint i = 0; i < num_side_edges; ++i) | 174 for (dolfin::FacetIterator f (v); ! f.end (); ++f) |
162 { | |
163 dolfin::Vertex v (*msh, e.xelem (0, i) - 1); | |
164 for (dolfin::FacetIterator f (v); ! f.end (); ++f) | |
165 { | |
166 if ((*f).entities(0)[0] == e(0, i) - 1 | |
167 && (*f).entities(0)[1] == e.xelem (1, i) - 1 | |
168 && (*f).entities(0)[2] == e.xelem (2, i) - 1 | |
169 || (*f).entities(0)[0] == e.xelem (0, i) - 1 | |
170 && (*f).entities(0)[1] == e.xelem (2, i) - 1 | |
171 && (*f).entities(0)[2] == e.xelem (1, i) - 1 | |
172 || (*f).entities(0)[0] == e.xelem (1, i) - 1 | |
173 && (*f).entities(0)[1] == e.xelem (0, i) - 1 | |
174 && (*f).entities(0)[2] == e.xelem (2, i) - 1 | |
175 || (*f).entities(0)[0] == e.xelem (1, i) - 1 | |
176 && (*f).entities(0)[1] == e.xelem (2, i) - 1 | |
177 && (*f).entities(0)[2] == e.xelem (0, i) - 1 | |
178 || (*f).entities(0)[0] == e.xelem (2, i) - 1 | |
179 && (*f).entities(0)[1] == e.xelem (0, i) - 1 | |
180 && (*f).entities(0)[2] == e.xelem (1, i) - 1 | |
181 || (*f).entities(0)[0] == e.xelem (2, i) - 1 | |
182 && (*f).entities(0)[1] == e.xelem (1, i) - 1 | |
183 && (*f).entities(0)[2] == e.xelem (0, i) - 1) | |
184 { | 175 { |
185 std::pair <std::size_t, std::size_t> | 176 if ((*f).entities(0)[0] == e(0, i) - 1 |
186 idxvl ((*f).index (), e.xelem (9, i)); | 177 && (*f).entities(0)[1] == e.xelem (1, i) - 1 |
187 msh->domains ().set_marker (idxvl, D - 1); | 178 && (*f).entities(0)[2] == e.xelem (2, i) - 1 |
188 break; | 179 || (*f).entities(0)[0] == e.xelem (0, i) - 1 |
180 && (*f).entities(0)[1] == e.xelem (2, i) - 1 | |
181 && (*f).entities(0)[2] == e.xelem (1, i) - 1 | |
182 || (*f).entities(0)[0] == e.xelem (1, i) - 1 | |
183 && (*f).entities(0)[1] == e.xelem (0, i) - 1 | |
184 && (*f).entities(0)[2] == e.xelem (2, i) - 1 | |
185 || (*f).entities(0)[0] == e.xelem (1, i) - 1 | |
186 && (*f).entities(0)[1] == e.xelem (2, i) - 1 | |
187 && (*f).entities(0)[2] == e.xelem (0, i) - 1 | |
188 || (*f).entities(0)[0] == e.xelem (2, i) - 1 | |
189 && (*f).entities(0)[1] == e.xelem (0, i) - 1 | |
190 && (*f).entities(0)[2] == e.xelem (1, i) - 1 | |
191 || (*f).entities(0)[0] == e.xelem (2, i) - 1 | |
192 && (*f).entities(0)[1] == e.xelem (1, i) - 1 | |
193 && (*f).entities(0)[2] == e.xelem (0, i) - 1) | |
194 { | |
195 std::pair <std::size_t, std::size_t> | |
196 idxvl ((*f).index (), e.xelem (9, i)); | |
197 msh->domains ().set_marker (idxvl, D - 1); | |
198 break; | |
199 } | |
189 } | 200 } |
190 } | 201 } |
191 } | 202 } |
192 } | 203 } |
193 | 204 |
194 | 205 |
195 dolfin::MeshValueCollection<std::size_t> cell (*msh, D); | 206 dolfin::MeshValueCollection<std::size_t> cell (*msh, D); |
196 std::size_t num_cells = t.cols (); | 207 std::size_t num_cells = t.cols (); |
197 | 208 |
198 if (D == 2) | 209 if (num_procs == 1) |
199 { | 210 { |
200 for (uint i = 0; i < num_cells; ++i) | 211 if (D == 2) |
201 { | 212 { |
202 dolfin::Vertex v (*msh, t.xelem (0, i) - 1); | 213 for (uint i = 0; i < num_cells; ++i) |
203 for (dolfin::CellIterator f (v); ! f.end (); ++f) | 214 { |
204 { | 215 dolfin::Vertex v (*msh, t.xelem (0, i) - 1); |
205 if ((*f).entities(0)[0] == t.xelem (0, i) - 1 | 216 for (dolfin::CellIterator f (v); ! f.end (); ++f) |
206 && (*f).entities(0)[1] == t.xelem (1, i) - 1 | |
207 && (*f).entities(0)[2] == t.xelem (2, i) - 1 | |
208 || (*f).entities(0)[0] == t.xelem (0, i) - 1 | |
209 && (*f).entities(0)[1] == t.xelem (2, i) - 1 | |
210 && (*f).entities(0)[2] == t.xelem (1, i) - 1 | |
211 || (*f).entities(0)[0] == t.xelem (1, i) - 1 | |
212 && (*f).entities(0)[1] == t.xelem (0, i) - 1 | |
213 && (*f).entities(0)[2] == t.xelem (2, i) - 1 | |
214 || (*f).entities(0)[0] == t.xelem (1, i) - 1 | |
215 && (*f).entities(0)[1] == t.xelem (2, i) - 1 | |
216 && (*f).entities(0)[2] == t.xelem (0, i) - 1 | |
217 || (*f).entities(0)[0] == t.xelem (2, i) - 1 | |
218 && (*f).entities(0)[1] == t.xelem (0, i) - 1 | |
219 && (*f).entities(0)[2] == t.xelem (1, i) - 1 | |
220 || (*f).entities(0)[0] == t.xelem (2, i) - 1 | |
221 && (*f).entities(0)[1] == t.xelem (1, i) - 1 | |
222 && (*f).entities(0)[2] == t.xelem (0, i) - 1) | |
223 { | 217 { |
224 std::pair <std::size_t, std::size_t> | 218 if ((*f).entities(0)[0] == t.xelem (0, i) - 1 |
225 idxvl ((*f).index (), t.xelem (3, i)); | 219 && (*f).entities(0)[1] == t.xelem (1, i) - 1 |
226 msh->domains ().set_marker (idxvl, D); | 220 && (*f).entities(0)[2] == t.xelem (2, i) - 1 |
227 break; | 221 || (*f).entities(0)[0] == t.xelem (0, i) - 1 |
222 && (*f).entities(0)[1] == t.xelem (2, i) - 1 | |
223 && (*f).entities(0)[2] == t.xelem (1, i) - 1 | |
224 || (*f).entities(0)[0] == t.xelem (1, i) - 1 | |
225 && (*f).entities(0)[1] == t.xelem (0, i) - 1 | |
226 && (*f).entities(0)[2] == t.xelem (2, i) - 1 | |
227 || (*f).entities(0)[0] == t.xelem (1, i) - 1 | |
228 && (*f).entities(0)[1] == t.xelem (2, i) - 1 | |
229 && (*f).entities(0)[2] == t.xelem (0, i) - 1 | |
230 || (*f).entities(0)[0] == t.xelem (2, i) - 1 | |
231 && (*f).entities(0)[1] == t.xelem (0, i) - 1 | |
232 && (*f).entities(0)[2] == t.xelem (1, i) - 1 | |
233 || (*f).entities(0)[0] == t.xelem (2, i) - 1 | |
234 && (*f).entities(0)[1] == t.xelem (1, i) - 1 | |
235 && (*f).entities(0)[2] == t.xelem (0, i) - 1) | |
236 { | |
237 std::pair <std::size_t, std::size_t> | |
238 idxvl ((*f).index (), t.xelem (3, i)); | |
239 msh->domains ().set_marker (idxvl, D); | |
240 break; | |
241 } | |
228 } | 242 } |
229 } | 243 } |
230 } | 244 } |
231 } | 245 |
232 | 246 if (D == 3) |
233 | 247 { |
234 | 248 for (uint i = 0; i < num_cells; ++i) |
235 if (D == 3) | 249 { |
236 { | 250 dolfin::Vertex v (*msh, t.xelem (0, i) - 1); |
237 for (uint i = 0; i < num_cells; ++i) | 251 for (dolfin::CellIterator f (v); ! f.end (); ++f) |
238 { | |
239 dolfin::Vertex v (*msh, t.xelem (0, i) - 1); | |
240 for (dolfin::CellIterator f (v); ! f.end (); ++f) | |
241 { | |
242 if ((*f).entities(0)[0] == t.xelem (0, i) - 1 | |
243 && (*f).entities(0)[1] == t.xelem (1, i) - 1 | |
244 && (*f).entities(0)[2] == t.xelem (2, i) - 1 | |
245 && (*f).entities(0)[3] == t.xelem (3, i) - 1 | |
246 || (*f).entities(0)[0] == t.xelem (0, i) - 1 | |
247 && (*f).entities(0)[1] == t.xelem (1, i) - 1 | |
248 && (*f).entities(0)[2] == t.xelem (3, i) - 1 | |
249 && (*f).entities(0)[3] == t.xelem (2, i) - 1 | |
250 || (*f).entities(0)[0] == t.xelem (0, i) - 1 | |
251 && (*f).entities(0)[1] == t.xelem (2, i) - 1 | |
252 && (*f).entities(0)[2] == t.xelem (1, i) - 1 | |
253 && (*f).entities(0)[3] == t.xelem (3, i) - 1 | |
254 || (*f).entities(0)[0] == t.xelem (0, i) - 1 | |
255 && (*f).entities(0)[1] == t.xelem (2, i) - 1 | |
256 && (*f).entities(0)[2] == t.xelem (3, i) - 1 | |
257 && (*f).entities(0)[3] == t.xelem (1, i) - 1 | |
258 || (*f).entities(0)[0] == t.xelem (0, i) - 1 | |
259 && (*f).entities(0)[1] == t.xelem (3, i) - 1 | |
260 && (*f).entities(0)[2] == t.xelem (1, i) - 1 | |
261 && (*f).entities(0)[3] == t.xelem (2, i) - 1 | |
262 || (*f).entities(0)[0] == t.xelem (0, i) - 1 | |
263 && (*f).entities(0)[1] == t.xelem (3, i) - 1 | |
264 && (*f).entities(0)[2] == t.xelem (2, i) - 1 | |
265 && (*f).entities(0)[3] == t.xelem (1, i) - 1 | |
266 | |
267 || (*f).entities(0)[0] == t.xelem (1, i) - 1 | |
268 && (*f).entities(0)[1] == t.xelem (0, i) - 1 | |
269 && (*f).entities(0)[2] == t.xelem (2, i) - 1 | |
270 && (*f).entities(0)[3] == t.xelem (3, i) - 1 | |
271 || (*f).entities(0)[0] == t.xelem (1, i) - 1 | |
272 && (*f).entities(0)[1] == t.xelem (0, i) - 1 | |
273 && (*f).entities(0)[2] == t.xelem (3, i) - 1 | |
274 && (*f).entities(0)[3] == t.xelem (2, i) - 1 | |
275 || (*f).entities(0)[0] == t.xelem (1, i) - 1 | |
276 && (*f).entities(0)[1] == t.xelem (2, i) - 1 | |
277 && (*f).entities(0)[2] == t.xelem (0, i) - 1 | |
278 && (*f).entities(0)[3] == t.xelem (3, i) - 1 | |
279 || (*f).entities(0)[0] == t.xelem (1, i) - 1 | |
280 && (*f).entities(0)[1] == t.xelem (2, i) - 1 | |
281 && (*f).entities(0)[2] == t.xelem (3, i) - 1 | |
282 && (*f).entities(0)[3] == t.xelem (0, i) - 1 | |
283 || (*f).entities(0)[0] == t.xelem (1, i) - 1 | |
284 && (*f).entities(0)[1] == t.xelem (3, i) - 1 | |
285 && (*f).entities(0)[2] == t.xelem (0, i) - 1 | |
286 && (*f).entities(0)[3] == t.xelem (2, i) - 1 | |
287 || (*f).entities(0)[0] == t.xelem (1, i) - 1 | |
288 && (*f).entities(0)[1] == t.xelem (3, i) - 1 | |
289 && (*f).entities(0)[2] == t.xelem (2, i) - 1 | |
290 && (*f).entities(0)[3] == t.xelem (0, i) - 1 | |
291 | |
292 || (*f).entities(0)[0] == t.xelem (2, i) - 1 | |
293 && (*f).entities(0)[1] == t.xelem (0, i) - 1 | |
294 && (*f).entities(0)[2] == t.xelem (1, i) - 1 | |
295 && (*f).entities(0)[3] == t.xelem (3, i) - 1 | |
296 || (*f).entities(0)[0] == t.xelem (2, i) - 1 | |
297 && (*f).entities(0)[1] == t.xelem (0, i) - 1 | |
298 && (*f).entities(0)[2] == t.xelem (3, i) - 1 | |
299 && (*f).entities(0)[3] == t.xelem (1, i) - 1 | |
300 || (*f).entities(0)[0] == t.xelem (2, i) - 1 | |
301 && (*f).entities(0)[1] == t.xelem (1, i) - 1 | |
302 && (*f).entities(0)[2] == t.xelem (0, i) - 1 | |
303 && (*f).entities(0)[3] == t.xelem (3, i) - 1 | |
304 || (*f).entities(0)[0] == t.xelem (2, i) - 1 | |
305 && (*f).entities(0)[1] == t.xelem (1, i) - 1 | |
306 && (*f).entities(0)[2] == t.xelem (3, i) - 1 | |
307 && (*f).entities(0)[3] == t.xelem (0, i) - 1 | |
308 || (*f).entities(0)[0] == t.xelem (2, i) - 1 | |
309 && (*f).entities(0)[1] == t.xelem (3, i) - 1 | |
310 && (*f).entities(0)[2] == t.xelem (0, i) - 1 | |
311 && (*f).entities(0)[3] == t.xelem (1, i) - 1 | |
312 || (*f).entities(0)[0] == t.xelem (2, i) - 1 | |
313 && (*f).entities(0)[1] == t.xelem (3, i) - 1 | |
314 && (*f).entities(0)[2] == t.xelem (1, i) - 1 | |
315 && (*f).entities(0)[3] == t.xelem (0, i) - 1 | |
316 | |
317 || (*f).entities(0)[0] == t.xelem (3, i) - 1 | |
318 && (*f).entities(0)[1] == t.xelem (0, i) - 1 | |
319 && (*f).entities(0)[2] == t.xelem (1, i) - 1 | |
320 && (*f).entities(0)[3] == t.xelem (2, i) - 1 | |
321 || (*f).entities(0)[0] == t.xelem (3, i) - 1 | |
322 && (*f).entities(0)[1] == t.xelem (0, i) - 1 | |
323 && (*f).entities(0)[2] == t.xelem (2, i) - 1 | |
324 && (*f).entities(0)[3] == t.xelem (1, i) - 1 | |
325 || (*f).entities(0)[0] == t.xelem (3, i) - 1 | |
326 && (*f).entities(0)[1] == t.xelem (1, i) - 1 | |
327 && (*f).entities(0)[2] == t.xelem (0, i) - 1 | |
328 && (*f).entities(0)[3] == t.xelem (2, i) - 1 | |
329 || (*f).entities(0)[0] == t.xelem (3, i) - 1 | |
330 && (*f).entities(0)[1] == t.xelem (1, i) - 1 | |
331 && (*f).entities(0)[2] == t.xelem (2, i) - 1 | |
332 && (*f).entities(0)[3] == t.xelem (0, i) - 1 | |
333 || (*f).entities(0)[0] == t.xelem (3, i) - 1 | |
334 && (*f).entities(0)[1] == t.xelem (2, i) - 1 | |
335 && (*f).entities(0)[2] == t.xelem (0, i) - 1 | |
336 && (*f).entities(0)[3] == t.xelem (1, i) - 1 | |
337 || (*f).entities(0)[0] == t.xelem (3, i) - 1 | |
338 && (*f).entities(0)[1] == t.xelem (2, i) - 1 | |
339 && (*f).entities(0)[2] == t.xelem (1, i) - 1 | |
340 && (*f).entities(0)[3] == t.xelem (0, i) - 1) | |
341 { | 252 { |
342 std::pair <std::size_t, std::size_t> | 253 if ((*f).entities(0)[0] == t.xelem (0, i) - 1 |
343 idxvl ((*f).index (), t.xelem (4, i)); | 254 && (*f).entities(0)[1] == t.xelem (1, i) - 1 |
344 msh->domains ().set_marker (idxvl, D); | 255 && (*f).entities(0)[2] == t.xelem (2, i) - 1 |
345 break; | 256 && (*f).entities(0)[3] == t.xelem (3, i) - 1 |
257 || (*f).entities(0)[0] == t.xelem (0, i) - 1 | |
258 && (*f).entities(0)[1] == t.xelem (1, i) - 1 | |
259 && (*f).entities(0)[2] == t.xelem (3, i) - 1 | |
260 && (*f).entities(0)[3] == t.xelem (2, i) - 1 | |
261 || (*f).entities(0)[0] == t.xelem (0, i) - 1 | |
262 && (*f).entities(0)[1] == t.xelem (2, i) - 1 | |
263 && (*f).entities(0)[2] == t.xelem (1, i) - 1 | |
264 && (*f).entities(0)[3] == t.xelem (3, i) - 1 | |
265 || (*f).entities(0)[0] == t.xelem (0, i) - 1 | |
266 && (*f).entities(0)[1] == t.xelem (2, i) - 1 | |
267 && (*f).entities(0)[2] == t.xelem (3, i) - 1 | |
268 && (*f).entities(0)[3] == t.xelem (1, i) - 1 | |
269 || (*f).entities(0)[0] == t.xelem (0, i) - 1 | |
270 && (*f).entities(0)[1] == t.xelem (3, i) - 1 | |
271 && (*f).entities(0)[2] == t.xelem (1, i) - 1 | |
272 && (*f).entities(0)[3] == t.xelem (2, i) - 1 | |
273 || (*f).entities(0)[0] == t.xelem (0, i) - 1 | |
274 && (*f).entities(0)[1] == t.xelem (3, i) - 1 | |
275 && (*f).entities(0)[2] == t.xelem (2, i) - 1 | |
276 && (*f).entities(0)[3] == t.xelem (1, i) - 1 | |
277 | |
278 || (*f).entities(0)[0] == t.xelem (1, i) - 1 | |
279 && (*f).entities(0)[1] == t.xelem (0, i) - 1 | |
280 && (*f).entities(0)[2] == t.xelem (2, i) - 1 | |
281 && (*f).entities(0)[3] == t.xelem (3, i) - 1 | |
282 || (*f).entities(0)[0] == t.xelem (1, i) - 1 | |
283 && (*f).entities(0)[1] == t.xelem (0, i) - 1 | |
284 && (*f).entities(0)[2] == t.xelem (3, i) - 1 | |
285 && (*f).entities(0)[3] == t.xelem (2, i) - 1 | |
286 || (*f).entities(0)[0] == t.xelem (1, i) - 1 | |
287 && (*f).entities(0)[1] == t.xelem (2, i) - 1 | |
288 && (*f).entities(0)[2] == t.xelem (0, i) - 1 | |
289 && (*f).entities(0)[3] == t.xelem (3, i) - 1 | |
290 || (*f).entities(0)[0] == t.xelem (1, i) - 1 | |
291 && (*f).entities(0)[1] == t.xelem (2, i) - 1 | |
292 && (*f).entities(0)[2] == t.xelem (3, i) - 1 | |
293 && (*f).entities(0)[3] == t.xelem (0, i) - 1 | |
294 || (*f).entities(0)[0] == t.xelem (1, i) - 1 | |
295 && (*f).entities(0)[1] == t.xelem (3, i) - 1 | |
296 && (*f).entities(0)[2] == t.xelem (0, i) - 1 | |
297 && (*f).entities(0)[3] == t.xelem (2, i) - 1 | |
298 || (*f).entities(0)[0] == t.xelem (1, i) - 1 | |
299 && (*f).entities(0)[1] == t.xelem (3, i) - 1 | |
300 && (*f).entities(0)[2] == t.xelem (2, i) - 1 | |
301 && (*f).entities(0)[3] == t.xelem (0, i) - 1 | |
302 | |
303 || (*f).entities(0)[0] == t.xelem (2, i) - 1 | |
304 && (*f).entities(0)[1] == t.xelem (0, i) - 1 | |
305 && (*f).entities(0)[2] == t.xelem (1, i) - 1 | |
306 && (*f).entities(0)[3] == t.xelem (3, i) - 1 | |
307 || (*f).entities(0)[0] == t.xelem (2, i) - 1 | |
308 && (*f).entities(0)[1] == t.xelem (0, i) - 1 | |
309 && (*f).entities(0)[2] == t.xelem (3, i) - 1 | |
310 && (*f).entities(0)[3] == t.xelem (1, i) - 1 | |
311 || (*f).entities(0)[0] == t.xelem (2, i) - 1 | |
312 && (*f).entities(0)[1] == t.xelem (1, i) - 1 | |
313 && (*f).entities(0)[2] == t.xelem (0, i) - 1 | |
314 && (*f).entities(0)[3] == t.xelem (3, i) - 1 | |
315 || (*f).entities(0)[0] == t.xelem (2, i) - 1 | |
316 && (*f).entities(0)[1] == t.xelem (1, i) - 1 | |
317 && (*f).entities(0)[2] == t.xelem (3, i) - 1 | |
318 && (*f).entities(0)[3] == t.xelem (0, i) - 1 | |
319 || (*f).entities(0)[0] == t.xelem (2, i) - 1 | |
320 && (*f).entities(0)[1] == t.xelem (3, i) - 1 | |
321 && (*f).entities(0)[2] == t.xelem (0, i) - 1 | |
322 && (*f).entities(0)[3] == t.xelem (1, i) - 1 | |
323 || (*f).entities(0)[0] == t.xelem (2, i) - 1 | |
324 && (*f).entities(0)[1] == t.xelem (3, i) - 1 | |
325 && (*f).entities(0)[2] == t.xelem (1, i) - 1 | |
326 && (*f).entities(0)[3] == t.xelem (0, i) - 1 | |
327 | |
328 || (*f).entities(0)[0] == t.xelem (3, i) - 1 | |
329 && (*f).entities(0)[1] == t.xelem (0, i) - 1 | |
330 && (*f).entities(0)[2] == t.xelem (1, i) - 1 | |
331 && (*f).entities(0)[3] == t.xelem (2, i) - 1 | |
332 || (*f).entities(0)[0] == t.xelem (3, i) - 1 | |
333 && (*f).entities(0)[1] == t.xelem (0, i) - 1 | |
334 && (*f).entities(0)[2] == t.xelem (2, i) - 1 | |
335 && (*f).entities(0)[3] == t.xelem (1, i) - 1 | |
336 || (*f).entities(0)[0] == t.xelem (3, i) - 1 | |
337 && (*f).entities(0)[1] == t.xelem (1, i) - 1 | |
338 && (*f).entities(0)[2] == t.xelem (0, i) - 1 | |
339 && (*f).entities(0)[3] == t.xelem (2, i) - 1 | |
340 || (*f).entities(0)[0] == t.xelem (3, i) - 1 | |
341 && (*f).entities(0)[1] == t.xelem (1, i) - 1 | |
342 && (*f).entities(0)[2] == t.xelem (2, i) - 1 | |
343 && (*f).entities(0)[3] == t.xelem (0, i) - 1 | |
344 || (*f).entities(0)[0] == t.xelem (3, i) - 1 | |
345 && (*f).entities(0)[1] == t.xelem (2, i) - 1 | |
346 && (*f).entities(0)[2] == t.xelem (0, i) - 1 | |
347 && (*f).entities(0)[3] == t.xelem (1, i) - 1 | |
348 || (*f).entities(0)[0] == t.xelem (3, i) - 1 | |
349 && (*f).entities(0)[1] == t.xelem (2, i) - 1 | |
350 && (*f).entities(0)[2] == t.xelem (1, i) - 1 | |
351 && (*f).entities(0)[3] == t.xelem (0, i) - 1) | |
352 { | |
353 std::pair <std::size_t, std::size_t> | |
354 idxvl ((*f).index (), t.xelem (4, i)); | |
355 msh->domains ().set_marker (idxvl, D); | |
356 break; | |
357 } | |
346 } | 358 } |
347 } | 359 } |
348 } | 360 } |
349 } | 361 } |
350 | 362 |
351 pmsh = msh; | 363 dolfin::MeshPartitioning::build_distributed_mesh (*msh); |
364 pmsh = msh; | |
352 } | 365 } |
353 } | 366 } |