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);
128 toMaster << points_.get();
148 void Foam::vtk::surfaceWriter::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 : faces_.get())
187 for (
const label pfi :
f)
214 void Foam::vtk::surfaceWriter::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 : faces_.get())
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
309 auto iter = vertOffsets.begin();
312 for (
const face&
f : faces_.get())
347 Foam::vtk::surfaceWriter::surfaceWriter
355 points_(std::cref<pointField>(
points)),
356 faces_(std::cref<faceList>(faces)),
369 Foam::vtk::surfaceWriter::surfaceWriter
379 open(file, parallel);
383 Foam::vtk::surfaceWriter::surfaceWriter
394 open(file, parallel);
413 if (instant_.name().size())
417 "time='" + instant_.name() +
"'"
434 const label pointOffset =
441 writePolysLegacy(pointOffset);
445 writePolys(pointOffset);
454 return enter_CellData(numberOfCells_, nFields);
460 return enter_PointData(numberOfPoints_, nFields);
466 if (instant_.name().size())
481 points_ = std::cref<pointField>(
points);
482 faces_ = std::cref<faceList>(faces);