46 int main(
int argc,
char *argv[])
48 timeSelector::addOptions();
51 argList::addBoolOption
54 "Do not combine patches"
65 const polyBoundaryMesh& bm =
mesh.boundaryMesh();
70 runTime.setTime(
timeDirs[timeI], timeI);
72 Info<<
"Time = " << runTime.timeName() <<
nl <<
endl;
75 if (
mesh.readUpdate() == polyMesh::TOPO_PATCH_CHANGE)
77 Info<<
"Detected changed patches. Recreating patch group table."
82 const IOobjectList fieldObjs(
mesh, runTime.timeName());
83 const wordList objNames = fieldObjs.names();
85 PtrList<volScalarField> vsf(objNames.size());
86 PtrList<volVectorField> vvf(objNames.size());
87 PtrList<volSphericalTensorField> vsptf(objNames.size());
88 PtrList<volSymmTensorField> vsytf(objNames.size());
89 PtrList<volTensorField> vtf(objNames.size());
91 PtrList<pointScalarField> psf(objNames.size());
92 PtrList<pointVectorField> pvf(objNames.size());
93 PtrList<pointSphericalTensorField> psptf(objNames.size());
94 PtrList<pointSymmTensorField> psytf(objNames.size());
95 PtrList<pointTensorField> ptf(objNames.size());
134 Info<< bm[patchI].type() <<
"\t: " << bm[patchI].name() <<
nl;
155 DynamicList<HashTable<word> > fieldToTypes(bm.size());
157 DynamicList<DynamicList<label> > groupToPatches(bm.size());
160 HashTable<word> fieldToType;
176 DynamicList<label>
group(1);
177 group.append(patchI);
178 groupToPatches.append(
group);
179 fieldToTypes.append(fieldToType);
183 groupToPatches[groupI].append(patchI);
188 forAll(groupToPatches, groupI)
190 const DynamicList<label>& patchIDs = groupToPatches[groupI];
192 if (patchIDs.size() > 1)
197 bm.matchGroups(patchIDs, groups, nonGroupPatches);
199 const labelList sortedPatches(nonGroupPatches.sortedToc());
202 Info<< bm[sortedPatches[i]].type()
203 <<
"\t: " << bm[sortedPatches[i]].name() <<
nl;
209 Info<<
"group\t: " << groups[i] <<
nl;
230 label patchI = patchIDs[i];
231 Info<< bm[patchI].type()
232 <<
"\t: " << bm[patchI].name() <<
nl;