62 if (io.name() == polyMesh::defaultRegion)
64 meshSubDir = polyMesh::meshSubDir;
68 meshSubDir = io.name()/polyMesh::meshSubDir;
76 PtrList<entry> patchEntries;
77 if (Pstream::master())
105 const fileName facesInstance = io.time().findInstance
112 patchEntries = polyBoundaryMeshEntries
129 int slave=Pstream::firstSlave();
130 slave<=Pstream::lastSlave();
134 OPstream toSlave(Pstream::commsTypes::scheduled, slave);
135 toSlave << patchEntries;
143 Pstream::commsTypes::scheduled,
146 fromMaster >> patchEntries;
159 io.time().path()/io.instance()/meshSubDir/
"faces"
165 const bool oldParRun = Pstream::parRun();
166 Pstream::parRun() =
false;
170 IOobject noReadIO(io);
171 noReadIO.readOpt() = IOobject::NO_READ;
172 noReadIO.writeOpt() = IOobject::AUTO_WRITE;
173 fvMesh dummyMesh(noReadIO,
Zero,
false);
176 List<polyPatch*>
patches(patchEntries.size());
179 forAll(patchEntries, patchi)
181 const entry&
e = patchEntries[patchi];
182 const word
type(
e.dict().get<word>(
"type"));
183 const word&
name =
e.keyword();
187 type != processorPolyPatch::typeName
188 &&
type != processorCyclicPolyPatch::typeName
191 dictionary patchDict(
e.dict());
192 patchDict.set(
"nFaces", 0);
193 patchDict.set(
"startFace", 0);
200 dummyMesh.boundaryMesh()
205 dummyMesh.addFvPatches(
patches,
false);
218 dummyMesh.pointZones()
228 dummyMesh.faceZones()
238 dummyMesh.cellZones()
241 dummyMesh.addZones(pz, fz, cz);
242 dummyMesh.pointZones().clear();
243 dummyMesh.faceZones().clear();
244 dummyMesh.cellZones().clear();
249 Pstream::parRun() = oldParRun;
268 if (!Pstream::master() && haveMesh)
272 const polyBoundaryMesh&
patches =
mesh.boundaryMesh();
274 forAll(patchEntries, patchi)
276 const entry&
e = patchEntries[patchi];
277 const word
type(
e.dict().get<word>(
"type"));
278 const word&
name =
e.keyword();
280 if (
type == processorPolyPatch::typeName)
288 <<
"Non-processor patches not synchronised."
290 <<
"Processor " << Pstream::myProcNo()
291 <<
" has only " <<
patches.size()
292 <<
" patches, master has "
304 <<
"Non-processor patches not synchronised."
306 <<
"Master patch " << patchi
309 <<
"Processor " << Pstream::myProcNo()
310 <<
" patch " << patchi
311 <<
" has name:" <<
patches[patchi].name()
312 <<
" type:" <<
patches[patchi].type()
323 Pstream::scatter(pointZoneNames);
325 Pstream::scatter(faceZoneNames);
327 Pstream::scatter(cellZoneNames);
332 mesh.pointZones().clear();
333 mesh.faceZones().clear();
334 mesh.cellZones().clear();
336 List<pointZone*> pz(pointZoneNames.size());
339 pz[i] =
new pointZone
346 List<faceZone*> fz(faceZoneNames.size());
356 List<cellZone*> cz(cellZoneNames.size());
366 mesh.addZones(pz, fz, cz);
376 if (Pstream::master())
379 IOobjectList objects(
mesh,
mesh.facesInstance(),
"polyMesh/sets");
380 pointSetNames = objects.sortedNames(pointSet::typeName);
381 faceSetNames = objects.sortedNames(faceSet::typeName);
382 cellSetNames = objects.sortedNames(cellSet::typeName);
384 Pstream::scatter(pointSetNames);
385 Pstream::scatter(faceSetNames);
386 Pstream::scatter(cellSetNames);
390 for (
const word& setName : pointSetNames)
392 pointSet(
mesh, setName, 0).write();
394 for (
const word& setName : faceSetNames)
396 faceSet(
mesh, setName, 0).write();
398 for (
const word& setName : cellSetNames)
400 cellSet(
mesh, setName, 0).write();
422 mesh.boundaryMesh().checkDefinition(
true);
424 mesh.boundaryMesh().checkParallelSync(
true);
426 mesh.cellZones().checkDefinition(
true);
427 mesh.cellZones().checkParallelSync(
true);
428 mesh.faceZones().checkDefinition(
true);
429 mesh.faceZones().checkParallelSync(
true);
430 mesh.pointZones().checkDefinition(
true);
431 mesh.pointZones().checkParallelSync(
true);