26 #include "loadOrCreateMesh.H"
55 if (io.name() == polyMesh::defaultRegion)
57 meshSubDir = polyMesh::meshSubDir;
61 meshSubDir = io.name()/polyMesh::meshSubDir;
69 PtrList<entry> patchEntries;
70 if (Pstream::master())
98 const fileName facesInstance = io.time().findInstance
105 patchEntries = polyBoundaryMeshEntries
122 int slave=Pstream::firstSlave();
123 slave<=Pstream::lastSlave();
127 OPstream toSlave(Pstream::scheduled, slave);
128 toSlave << patchEntries;
134 IPstream fromMaster(Pstream::scheduled, Pstream::masterNo());
135 fromMaster >> patchEntries;
145 const bool haveMesh =
isFile
147 io.time().path()/io.instance()/meshSubDir/
"faces"
153 bool oldParRun = Pstream::parRun();
154 Pstream::parRun() =
false;
158 IOobject noReadIO(io);
159 noReadIO.readOpt() = IOobject::NO_READ;
174 forAll(patchEntries, patchI)
176 const entry&
e = patchEntries[patchI];
177 const word
type(
e.dict().lookup(
"type"));
178 const word&
name =
e.keyword();
182 type != processorPolyPatch::typeName
183 &&
type != processorCyclicPolyPatch::typeName
186 dictionary patchDict(
e.dict());
187 patchDict.set(
"nFaces", 0);
188 patchDict.set(
"startFace", 0);
195 dummyMesh.boundaryMesh()
200 dummyMesh.addFvPatches(
patches,
false);
214 dummyMesh.pointZones()
226 dummyMesh.faceZones()
237 dummyMesh.cellZones()
240 dummyMesh.addZones(pz, fz, cz);
241 dummyMesh.pointZones().clear();
242 dummyMesh.faceZones().clear();
243 dummyMesh.cellZones().clear();
248 Pstream::parRun() = oldParRun;
259 autoPtr<fvMesh>
meshPtr(
new fvMesh(io));
267 if (!Pstream::master() && haveMesh)
271 const polyBoundaryMesh&
patches =
mesh.boundaryMesh();
273 forAll(patchEntries, patchI)
275 const entry&
e = patchEntries[patchI];
276 const word
type(
e.dict().lookup(
"type"));
277 const word&
name =
e.keyword();
279 if (
type == processorPolyPatch::typeName)
287 <<
"Non-processor patches not synchronised."
289 <<
"Processor " << Pstream::myProcNo()
290 <<
" has only " <<
patches.size()
291 <<
" patches, master has "
303 <<
"Non-processor patches not synchronised."
305 <<
"Master patch " << patchI
308 <<
"Processor " << Pstream::myProcNo()
309 <<
" patch " << patchI
310 <<
" has name:" <<
patches[patchI].name()
311 <<
" type:" <<
patches[patchI].type()
322 Pstream::scatter(pointZoneNames);
324 Pstream::scatter(faceZoneNames);
326 Pstream::scatter(cellZoneNames);
331 mesh.pointZones().clear();
332 mesh.faceZones().clear();
333 mesh.cellZones().clear();
338 pz[i] =
new pointZone
369 mesh.addZones(pz, fz, cz);
390 mesh.boundaryMesh().checkDefinition(
true);
392 mesh.boundaryMesh().checkParallelSync(
true);
394 mesh.cellZones().checkDefinition(
true);
395 mesh.cellZones().checkParallelSync(
true);
396 mesh.faceZones().checkDefinition(
true);
397 mesh.faceZones().checkParallelSync(
true);
398 mesh.pointZones().checkDefinition(
true);
399 mesh.pointZones().checkParallelSync(
true);