mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
ENH: Added new utility to create a box of isotropic turbulence
This commit is contained in:
@ -0,0 +1,104 @@
|
||||
const cellModel& hex = cellModel::ref(cellModel::HEX);
|
||||
|
||||
cellShapeList cellShapes;
|
||||
faceListList boundary;
|
||||
pointField points;
|
||||
{
|
||||
Info<< "Creating block" << endl;
|
||||
|
||||
block b
|
||||
(
|
||||
cellShape(hex, identity(8), false),
|
||||
pointField
|
||||
(
|
||||
{
|
||||
point(0, 0, 0),
|
||||
point(L.x(), 0, 0),
|
||||
point(L.x(), L.y(), 0),
|
||||
point(0, L.y(), 0),
|
||||
point(0, 0, L.z()),
|
||||
point(L.x(), 0, L.z()),
|
||||
point(L.x(), L.y(), L.z()),
|
||||
point(0, L.y(), L.z())
|
||||
}
|
||||
),
|
||||
blockEdgeList(),
|
||||
blockFaceList(),
|
||||
N,
|
||||
List<gradingDescriptors>(12)
|
||||
);
|
||||
|
||||
Info<< "Creating cells" << endl;
|
||||
|
||||
List<FixedList<label, 8>> bCells(b.cells());
|
||||
cellShapes.setSize(bCells.size());
|
||||
forAll(cellShapes, celli)
|
||||
{
|
||||
cellShapes[celli] =
|
||||
cellShape(hex, labelList(bCells[celli]), false);
|
||||
}
|
||||
|
||||
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] = "patch" + Foam::name(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 = "patch" + Foam::name(patchi + 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
nbrPatchName = "patch" + Foam::name(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();
|
||||
Reference in New Issue
Block a user