35 void Foam::blockMesh::createPoints()
const
41 Info<<
"Creating points with scale " << scaleFactor_ <<
endl;
44 points_.setSize(nPoints_);
48 const pointField& blockPoints = blocks[blocki].points();
52 const label nx = blocks[blocki].density().x();
53 const label ny = blocks[blocki].density().y();
54 const label nz = blocks[blocki].density().z();
56 label v0 = blocks[blocki].pointLabel(0, 0, 0);
57 label vi1 = blocks[blocki].pointLabel(1, 0, 0);
58 scalar diStart =
mag(blockPoints[vi1] - blockPoints[v0]);
60 label vinM1 = blocks[blocki].pointLabel(nx-1, 0, 0);
61 label vin = blocks[blocki].pointLabel(nx, 0, 0);
62 scalar diFinal =
mag(blockPoints[vin] - blockPoints[vinM1]);
64 label vj1 = blocks[blocki].pointLabel(0, 1, 0);
65 scalar djStart =
mag(blockPoints[vj1] - blockPoints[v0]);
66 label vjnM1 = blocks[blocki].pointLabel(0, ny-1, 0);
67 label vjn = blocks[blocki].pointLabel(0, ny, 0);
68 scalar djFinal =
mag(blockPoints[vjn] - blockPoints[vjnM1]);
70 label vk1 = blocks[blocki].pointLabel(0, 0, 1);
71 scalar dkStart =
mag(blockPoints[vk1] - blockPoints[v0]);
72 label vknM1 = blocks[blocki].pointLabel(0, 0, nz-1);
73 label vkn = blocks[blocki].pointLabel(0, 0, nz);
74 scalar dkFinal =
mag(blockPoints[vkn] - blockPoints[vknM1]);
76 Info<<
" Block " << blocki <<
" cell size :" <<
nl
77 <<
" i : " << scaleFactor_*diStart <<
" .. "
78 << scaleFactor_*diFinal <<
nl
79 <<
" j : " << scaleFactor_*djStart <<
" .. "
80 << scaleFactor_*djFinal <<
nl
81 <<
" k : " << scaleFactor_*dkStart <<
" .. "
82 << scaleFactor_*dkFinal <<
nl
86 forAll(blockPoints, blockPointi)
92 blockOffsets_[blocki] + blockPointi
94 ] = scaleFactor_ * blockPoints[blockPointi];
100 void Foam::blockMesh::createCells()
const
110 cells_.setSize(nCells_);
116 const List<FixedList<label, 8>>& blockCells = blocks[blocki].cells();
118 forAll(blockCells, blockCelli)
120 labelList cellPoints(blockCells[blockCelli].size());
122 forAll(cellPoints, cellPointi)
124 cellPoints[cellPointi] =
127 blockCells[blockCelli][cellPointi]
128 + blockOffsets_[blocki]
133 cells_[celli] = cellShape(
hex, cellPoints,
true);
143 const polyPatch& patchTopologyFaces
148 labelList blockLabels = patchTopologyFaces.polyPatch::faceCells();
152 forAll(patchTopologyFaces, patchTopologyFaceLabel)
154 const label blocki = blockLabels[patchTopologyFaceLabel];
156 faceList blockFaces = blocks[blocki].blockShape().faces();
158 forAll(blockFaces, blockFaceLabel)
162 blockFaces[blockFaceLabel]
163 == patchTopologyFaces[patchTopologyFaceLabel]
167 blocks[blocki].boundaryPatches()[blockFaceLabel].size();
177 forAll(patchTopologyFaces, patchTopologyFaceLabel)
179 const label blocki = blockLabels[patchTopologyFaceLabel];
181 faceList blockFaces = blocks[blocki].blockShape().faces();
183 forAll(blockFaces, blockFaceLabel)
187 blockFaces[blockFaceLabel]
188 == patchTopologyFaces[patchTopologyFaceLabel]
191 const List<FixedList<label, 4>>& blockPatchFaces =
192 blocks[blocki].boundaryPatches()[blockFaceLabel];
194 forAll(blockPatchFaces, blockFaceLabel)
202 blockPatchFaces[blockFaceLabel][0]
203 + blockOffsets_[blocki]
210 label facePointLabel = 1;
218 blockPatchFaces[blockFaceLabel][facePointLabel]
219 + blockOffsets_[blocki]
237 else if (nUnique == 3)
239 patchFaces[faceLabel++] = face
250 patchFaces.setSize(faceLabel);
256 void Foam::blockMesh::createPatches()
const
258 const polyPatchList& topoPatches = topology().boundaryMesh();
265 patches_.setSize(topoPatches.size());
267 forAll(topoPatches, patchi)
269 patches_[patchi] = createPatchFaces(topoPatches[patchi]);
283 Info<<
nl <<
"Creating polyMesh from blockMesh" <<
endl;
295 emptyPolyPatch::typeName
323 for (
const block&
b : blkMesh)
325 const word& zoneName =
b.zoneName();
326 const label nCellsInBlock =
b.cells().size();
330 const auto iter = zoneMap.
cfind(zoneName);
332 label zonei = freeZonei;
340 zoneMap.
insert(zoneName, zonei);
345 Info<<
" " << zonei <<
'\t' << zoneName <<
endl;
352 zoneCells[zonei].reserve
354 zoneCells[zonei].size() + nCellsInBlock
357 const label endOfFill = celli + nCellsInBlock;
359 for (; celli < endOfFill; ++celli)
361 zoneCells[zonei].
append(celli);
366 celli += nCellsInBlock;
373 const word& zoneName = iter.key();
374 const label zonei = iter.val();
379 zoneCells[zonei].shrink(),