mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
- 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();
|