openfoam/applications/utilities/preProcessing/createBoxTurb/createBlockMesh.H
Mark Olesen 1339c3357b ENH: general boundBox/treeBoundBox improvements
- 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(...)
2022-11-24 12:21:01 +00:00

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();