34 void Foam::vtk::indirectPatchWriter::beginPiece()
37 nLocalPoints_ = pp_.nPoints();
38 nLocalFaces_ = pp_.size();
41 for (
const face&
f : pp_)
43 nLocalVerts_ +=
f.size();
46 numberOfPoints_ = nLocalPoints_;
47 numberOfCells_ = nLocalFaces_;
51 reduce(numberOfPoints_, sumOp<label>());
52 reduce(numberOfCells_, sumOp<label>());
71 void Foam::vtk::indirectPatchWriter::writePoints()
81 const uint64_t payLoad = vtk::sizeofData<float, 3>(numberOfPoints_);
87 format().writeSize(payLoad);
128 toMaster << pp_.localPoints();
148 void Foam::vtk::indirectPatchWriter::writePolysLegacy(
const label pointOffset)
152 label nFaces = nLocalFaces_;
153 label nVerts = nLocalVerts_;
157 reduce(nFaces, sumOp<label>());
158 reduce(nVerts, sumOp<label>());
161 if (nFaces != numberOfCells_)
164 <<
"Expecting " << numberOfCells_
165 <<
" faces, but found " << nFaces
171 labelList vertLabels(nLocalFaces_ + nLocalVerts_);
177 auto iter = vertLabels.begin();
179 label off = pointOffset;
182 for (
const face&
f : pp_.localFaces())
187 for (
const label pfi :
f)
214 void Foam::vtk::indirectPatchWriter::writePolys(
const label pointOffset)
227 label nVerts = nLocalVerts_;
231 reduce(nVerts, sumOp<label>());
236 const uint64_t payLoad = vtk::sizeofData<label>(nVerts);
239 format().writeSize(payLoad *
sizeof(label));
246 auto iter = vertLabels.begin();
248 label off = pointOffset;
251 for (
const face&
f : pp_.localFaces())
253 for (
const label pfi :
f)
286 label nOffs = vertOffsets.size();
290 reduce(nOffs, sumOp<label>());
295 const uint64_t payLoad = vtk::sizeofData<label>(nOffs);
298 format().writeSize(payLoad);
305 parallel_ ? globalIndex(nLocalVerts_).localStart() : 0
308 auto iter = vertOffsets.begin();
311 for (
const face&
f : pp_)
346 Foam::vtk::indirectPatchWriter::indirectPatchWriter
365 Foam::vtk::indirectPatchWriter::indirectPatchWriter
374 open(file, parallel);
378 Foam::vtk::indirectPatchWriter::indirectPatchWriter
388 open(file, parallel);
414 const label pointOffset =
421 writePolysLegacy(pointOffset);
425 writePolys(pointOffset);
434 return enter_CellData(numberOfCells_, nFields);
440 return enter_PointData(numberOfPoints_, nFields);