57 if (io.name() == polyMesh::defaultRegion)
59 meshSubDir = polyMesh::meshSubDir;
63 meshSubDir = io.name()/polyMesh::meshSubDir;
71 PtrList<entry> patchEntries;
72 if (Pstream::master())
74 const bool oldParRun = Pstream::parRun(
false);
76 patchEntries = polyBoundaryMeshEntries
90 Pstream::parRun(oldParRun);
93 for (
const int slave : Pstream::subProcs())
95 OPstream toSlave(Pstream::commsTypes::scheduled, slave);
96 toSlave << patchEntries;
104 Pstream::commsTypes::scheduled,
107 fromMaster >> patchEntries;
120 haveMesh = Pstream::master();
124 const fileName facesFile
138 const bool oldParRun = Pstream::parRun(
false);
142 IOobject noReadIO(io);
143 noReadIO.readOpt(IOobject::NO_READ);
144 noReadIO.writeOpt(IOobject::AUTO_WRITE);
145 fvMesh dummyMesh(noReadIO,
Zero,
false);
148 List<polyPatch*>
patches(patchEntries.size());
151 forAll(patchEntries, patchi)
153 const entry&
e = patchEntries[patchi];
154 const word
type(
e.dict().get<word>(
"type"));
155 const word&
name =
e.keyword();
159 type != processorPolyPatch::typeName
160 &&
type != processorCyclicPolyPatch::typeName
163 dictionary patchDict(
e.dict());
164 patchDict.set(
"nFaces", 0);
165 patchDict.set(
"startFace", 0);
172 dummyMesh.boundaryMesh()
177 dummyMesh.addFvPatches(
patches,
false);
190 dummyMesh.pointZones()
200 dummyMesh.faceZones()
210 dummyMesh.cellZones()
213 dummyMesh.addZones(pz, fz, cz);
214 dummyMesh.pointZones().clear();
215 dummyMesh.faceZones().clear();
216 dummyMesh.cellZones().clear();
221 Pstream::parRun(oldParRun);
237 tmp<fvGeometryScheme> basicGeometry
243 basicFvGeometryScheme::typeName
246 mesh.geometry(basicGeometry);
253 if (!Pstream::master() && haveMesh)
257 const polyBoundaryMesh&
patches =
mesh.boundaryMesh();
259 forAll(patchEntries, patchi)
261 const entry&
e = patchEntries[patchi];
262 const word
type(
e.dict().get<word>(
"type"));
263 const word&
name =
e.keyword();
267 type == processorPolyPatch::typeName
268 ||
type == processorCyclicPolyPatch::typeName
277 <<
"Non-processor patches not synchronised."
279 <<
"Processor " << Pstream::myProcNo()
280 <<
" has only " <<
patches.size()
281 <<
" patches, master has "
293 <<
"Non-processor patches not synchronised."
295 <<
"Master patch " << patchi
298 <<
"Processor " << Pstream::myProcNo()
299 <<
" patch " << patchi
300 <<
" has name:" <<
patches[patchi].name()
301 <<
" type:" <<
patches[patchi].type()
312 Pstream::scatter(pointZoneNames);
314 Pstream::scatter(faceZoneNames);
316 Pstream::scatter(cellZoneNames);
321 mesh.pointZones().clear();
322 mesh.faceZones().clear();
323 mesh.cellZones().clear();
325 List<pointZone*> pz(pointZoneNames.size());
328 pz[i] =
new pointZone
335 List<faceZone*> fz(faceZoneNames.size());
345 List<cellZone*> cz(cellZoneNames.size());
355 mesh.addZones(pz, fz, cz);
365 if (Pstream::master())
368 const bool oldParRun = Pstream::parRun(
false);
369 IOobjectList objects(
mesh,
mesh.facesInstance(),
"polyMesh/sets");
370 Pstream::parRun(oldParRun);
372 pointSetNames = objects.sortedNames(pointSet::typeName);
373 faceSetNames = objects.sortedNames(faceSet::typeName);
374 cellSetNames = objects.sortedNames(cellSet::typeName);
376 Pstream::scatter(pointSetNames);
377 Pstream::scatter(faceSetNames);
378 Pstream::scatter(cellSetNames);
382 for (
const word& setName : pointSetNames)
384 pointSet(
mesh, setName, 0).write();
386 for (
const word& setName : faceSetNames)
388 faceSet(
mesh, setName, 0).write();
390 for (
const word& setName : cellSetNames)
392 cellSet(
mesh, setName, 0).write();
404 mesh.boundaryMesh().checkDefinition(
true);
406 mesh.boundaryMesh().checkParallelSync(
true);
408 mesh.cellZones().checkDefinition(
true);
409 mesh.cellZones().checkParallelSync(
true);
410 mesh.faceZones().checkDefinition(
true);
411 mesh.faceZones().checkParallelSync(
true);
412 mesh.pointZones().checkDefinition(
true);
413 mesh.pointZones().checkParallelSync(
true);
500 fileName
path(meshPath);
515 for (
const auto& dir : dirs)