34 void Foam::vtk::surfaceWriter::beginPiece()
37 nLocalPoints_ = points_.get().size();
38 nLocalFaces_ = faces_.get().size();
41 for (
const face&
f : faces_.get())
43 nLocalVerts_ +=
f.size();
46 numberOfPoints_ = nLocalPoints_;
47 numberOfCells_ = nLocalFaces_;
51 reduce(numberOfPoints_, sumOp<label>());
52 reduce(numberOfCells_, sumOp<label>());
71 void Foam::vtk::surfaceWriter::writePoints()
81 const uint64_t payLoad = vtk::sizeofData<float, 3>(numberOfPoints_);
87 format().writeSize(payLoad);
133 toMaster << points_.get();
153 void Foam::vtk::surfaceWriter::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 : faces_.get())
192 for (
const label pfi :
f)
219 void Foam::vtk::surfaceWriter::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 : faces_.get())
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
314 auto iter = vertOffsets.begin();
317 for (
const face&
f : faces_.get())
352 Foam::vtk::surfaceWriter::surfaceWriter
360 points_(std::cref<pointField>(
points)),
361 faces_(std::cref<faceList>(faces)),
374 Foam::vtk::surfaceWriter::surfaceWriter
384 open(file, parallel);
388 Foam::vtk::surfaceWriter::surfaceWriter
399 open(file, parallel);
418 if (instant_.name().size())
422 "time='" + instant_.name() +
"'"
439 const label pointOffset =
446 writePolysLegacy(pointOffset);
450 writePolys(pointOffset);
459 return enter_CellData(numberOfCells_, nFields);
465 return enter_PointData(numberOfPoints_, nFields);
471 if (instant_.name().size())
486 points_ = std::cref<pointField>(
points);
487 faces_ = std::cref<faceList>(faces);