105 lines
2.4 KiB
C++
105 lines
2.4 KiB
C++
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();
|