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);
133 toMaster << pp_.localPoints();
153 void Foam::vtk::indirectPatchWriter::writePolysLegacy(
const label pointOffset)
157 label nFaces = nLocalFaces_;
158 label nVerts = nLocalVerts_;
162 reduce(nFaces, sumOp<label>());
163 reduce(nVerts, sumOp<label>());
166 if (nFaces != numberOfCells_)
169 <<
"Expecting " << numberOfCells_
170 <<
" faces, but found " << nFaces
176 labelList vertLabels(nLocalFaces_ + nLocalVerts_);
182 auto iter = vertLabels.begin();
184 label off = pointOffset;
187 for (
const face&
f : pp_.localFaces())
192 for (
const label pfi :
f)
219 void Foam::vtk::indirectPatchWriter::writePolys(
const label pointOffset)
232 label nVerts = nLocalVerts_;
236 reduce(nVerts, sumOp<label>());
241 const uint64_t payLoad = vtk::sizeofData<label>(nVerts);
244 format().writeSize(payLoad *
sizeof(label));
251 auto iter = vertLabels.begin();
253 label off = pointOffset;
256 for (
const face&
f : pp_.localFaces())
258 for (
const label pfi :
f)
291 label nOffs = vertOffsets.size();
295 reduce(nOffs, sumOp<label>());
300 const uint64_t payLoad = vtk::sizeofData<label>(nOffs);
303 format().writeSize(payLoad);
310 parallel_ ? globalIndex(nLocalVerts_).localStart() : 0
313 auto iter = vertOffsets.begin();
316 for (
const face&
f : pp_)
351 Foam::vtk::indirectPatchWriter::indirectPatchWriter
370 Foam::vtk::indirectPatchWriter::indirectPatchWriter
379 open(file, parallel);
383 Foam::vtk::indirectPatchWriter::indirectPatchWriter
393 open(file, parallel);
419 const label pointOffset =
426 writePolysLegacy(pointOffset);
430 writePolys(pointOffset);
439 return enter_CellData(numberOfCells_, nFields);
445 return enter_PointData(numberOfPoints_, nFields);