63 if (io.name() == polyMesh::defaultRegion)
65 meshSubDir = polyMesh::meshSubDir;
69 meshSubDir = io.name()/polyMesh::meshSubDir;
77 PtrList<entry> patchEntries;
78 if (Pstream::master())
106 const fileName facesInstance = io.time().findInstance
113 patchEntries = polyBoundaryMeshEntries
128 for (
const int slave : Pstream::subProcs())
130 OPstream toSlave(Pstream::commsTypes::scheduled, slave);
131 toSlave << patchEntries;
139 Pstream::commsTypes::scheduled,
142 fromMaster >> patchEntries;
155 io.time().path()/io.instance()/meshSubDir/
"faces"
161 const bool oldParRun = Pstream::parRun(
false);
165 IOobject noReadIO(io);
166 noReadIO.readOpt() = IOobject::NO_READ;
167 noReadIO.writeOpt() = IOobject::AUTO_WRITE;
168 fvMesh dummyMesh(noReadIO,
Zero,
false);
171 List<polyPatch*>
patches(patchEntries.size());
174 forAll(patchEntries, patchi)
176 const entry&
e = patchEntries[patchi];
177 const word
type(
e.dict().get<word>(
"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);
213 dummyMesh.pointZones()
223 dummyMesh.faceZones()
233 dummyMesh.cellZones()
236 dummyMesh.addZones(pz, fz, cz);
237 dummyMesh.pointZones().clear();
238 dummyMesh.faceZones().clear();
239 dummyMesh.cellZones().clear();
244 Pstream::parRun(oldParRun);
260 tmp<fvGeometryScheme> basicGeometry
266 basicFvGeometryScheme::typeName
269 mesh.geometry(basicGeometry);
276 if (!Pstream::master() && haveMesh)
280 const polyBoundaryMesh&
patches =
mesh.boundaryMesh();
282 forAll(patchEntries, patchi)
284 const entry&
e = patchEntries[patchi];
285 const word
type(
e.dict().get<word>(
"type"));
286 const word&
name =
e.keyword();
288 if (
type == processorPolyPatch::typeName)
296 <<
"Non-processor patches not synchronised."
298 <<
"Processor " << Pstream::myProcNo()
299 <<
" has only " <<
patches.size()
300 <<
" patches, master has "
312 <<
"Non-processor patches not synchronised."
314 <<
"Master patch " << patchi
317 <<
"Processor " << Pstream::myProcNo()
318 <<
" patch " << patchi
319 <<
" has name:" <<
patches[patchi].name()
320 <<
" type:" <<
patches[patchi].type()
331 Pstream::scatter(pointZoneNames);
333 Pstream::scatter(faceZoneNames);
335 Pstream::scatter(cellZoneNames);
340 mesh.pointZones().clear();
341 mesh.faceZones().clear();
342 mesh.cellZones().clear();
344 List<pointZone*> pz(pointZoneNames.size());
347 pz[i] =
new pointZone
354 List<faceZone*> fz(faceZoneNames.size());
364 List<cellZone*> cz(cellZoneNames.size());
374 mesh.addZones(pz, fz, cz);
384 if (Pstream::master())
387 IOobjectList objects(
mesh,
mesh.facesInstance(),
"polyMesh/sets");
388 pointSetNames = objects.sortedNames(pointSet::typeName);
389 faceSetNames = objects.sortedNames(faceSet::typeName);
390 cellSetNames = objects.sortedNames(cellSet::typeName);
392 Pstream::scatter(pointSetNames);
393 Pstream::scatter(faceSetNames);
394 Pstream::scatter(cellSetNames);
398 for (
const word& setName : pointSetNames)
400 pointSet(
mesh, setName, 0).write();
402 for (
const word& setName : faceSetNames)
404 faceSet(
mesh, setName, 0).write();
406 for (
const word& setName : cellSetNames)
408 cellSet(
mesh, setName, 0).write();
430 mesh.boundaryMesh().checkDefinition(
true);
432 mesh.boundaryMesh().checkParallelSync(
true);
434 mesh.cellZones().checkDefinition(
true);
435 mesh.cellZones().checkParallelSync(
true);
436 mesh.faceZones().checkDefinition(
true);
437 mesh.faceZones().checkParallelSync(
true);
438 mesh.pointZones().checkDefinition(
true);
439 mesh.pointZones().checkParallelSync(
true);