- null() static method * as const reference to the invertedBox with the appropriate casting. - boundBox inflate(random) * refactored from treeBoundBox::extend, but allows in-place modification - boundBox::hexFaces() instead of boundBox::faces * rarely used, but avoids confusion with treeBoundBox::faces and reuses hexCell face definitions without code duplication - boundBox::hexCorners() for corner points corresponding to a hexCell. Can also be accessed from a treeBoundBox without ambiguity with points(), which could be hex corners (boundBox) or octant corners (treeBoundBox) - boundBox::add with pairs of points * convenient (for example) when adding edges or a 'box' that has been extracted from a primitive mesh shape. - declare boundBox nPoints(), nFaces(), nEdges() as per hexCell ENH: return invertedBox instead of FatalError for empty trees - similar to #2612 ENH: cellShape(HEX, ...) + boundBox hexCorners for block meshes STYLE: cellModel::ref(...) instead of de-reference cellModel::ptr(...)
83 lines
1.8 KiB
C++
83 lines
1.8 KiB
C++
cellShapeList cellShapes;
|
|
faceListList boundary;
|
|
pointField points;
|
|
{
|
|
Info<< "Creating block" << endl;
|
|
|
|
block b
|
|
(
|
|
cellShape(cellModel::HEX, identity(8)),
|
|
pointField(boundBox(point::zero, L).hexCorners()),
|
|
blockEdgeList(),
|
|
blockFaceList(),
|
|
N
|
|
);
|
|
|
|
Info<< "Creating cells" << endl;
|
|
cellShapes = b.shapes();
|
|
|
|
Info<< "Creating boundary faces" << endl;
|
|
|
|
boundary.setSize(b.boundaryPatches().size());
|
|
forAll(boundary, patchi)
|
|
{
|
|
faceList faces(b.boundaryPatches()[patchi].size());
|
|
forAll(faces, facei)
|
|
{
|
|
faces[facei] = face(b.boundaryPatches()[patchi][facei]);
|
|
}
|
|
boundary[patchi].transfer(faces);
|
|
}
|
|
|
|
points.transfer(const_cast<pointField&>(b.points()));
|
|
}
|
|
|
|
Info<< "Creating patch dictionaries" << endl;
|
|
wordList patchNames(boundary.size());
|
|
forAll(patchNames, patchi)
|
|
{
|
|
patchNames[patchi] = polyPatch::defaultName(patchi);
|
|
}
|
|
|
|
PtrList<dictionary> boundaryDicts(boundary.size());
|
|
forAll(boundaryDicts, patchi)
|
|
{
|
|
boundaryDicts.set(patchi, new dictionary());
|
|
dictionary& patchDict = boundaryDicts[patchi];
|
|
word nbrPatchName;
|
|
if (patchi % 2 == 0)
|
|
{
|
|
nbrPatchName = polyPatch::defaultName(patchi + 1);
|
|
}
|
|
else
|
|
{
|
|
nbrPatchName = polyPatch::defaultName(patchi - 1);
|
|
}
|
|
|
|
patchDict.add("type", cyclicPolyPatch::typeName);
|
|
patchDict.add("neighbourPatch", nbrPatchName);
|
|
}
|
|
|
|
Info<< "Creating polyMesh" << endl;
|
|
polyMesh mesh
|
|
(
|
|
IOobject
|
|
(
|
|
polyMesh::defaultRegion,
|
|
runTime.constant(),
|
|
runTime,
|
|
IOobject::NO_READ
|
|
),
|
|
std::move(points),
|
|
cellShapes,
|
|
boundary,
|
|
patchNames,
|
|
boundaryDicts,
|
|
"defaultFaces",
|
|
cyclicPolyPatch::typeName,
|
|
false
|
|
);
|
|
|
|
Info<< "Writing polyMesh" << endl;
|
|
mesh.write();
|