ENH: use some updated vtk output methods

This commit is contained in:
Mark Olesen
2018-09-17 10:12:48 +02:00
parent 05427217a0
commit d837524860
5 changed files with 154 additions and 175 deletions

View File

@ -55,7 +55,7 @@ void Foam::lumpedPointMovement::writeForcesAndMomentsVTP
);
format().xmlHeader()
.beginVTKFile(vtk::fileTag::POLY_DATA, "0.1");
.beginVTKFile<vtk::fileTag::POLY_DATA>();
//
// The 'spine' of lumped mass points
@ -64,19 +64,20 @@ void Foam::lumpedPointMovement::writeForcesAndMomentsVTP
{
format()
.openTag(vtk::fileTag::PIECE)
.xmlAttr(vtk::fileAttr::NUMBER_OF_POINTS, nPoints)
.xmlAttr(vtk::fileAttr::NUMBER_OF_VERTS, nPoints)
.closeTag();
.tag
(
vtk::fileTag::PIECE,
vtk::fileAttr::NUMBER_OF_POINTS, nPoints,
vtk::fileAttr::NUMBER_OF_VERTS, nPoints
);
// 'points'
{
const uint64_t payLoad = (nPoints*3* sizeof(float));
const uint64_t payLoad = vtk::sizeofData<float, 3>(nPoints);
format()
.tag(vtk::fileTag::POINTS)
.openDataArray<float, 3>(vtk::dataArrayAttr::POINTS)
.closeTag();
.beginDataArray<float, 3>(vtk::dataArrayAttr::POINTS);
format().writeSize(payLoad);
vtk::writeList(format(), state().points());
@ -94,12 +95,11 @@ void Foam::lumpedPointMovement::writeForcesAndMomentsVTP
// 'connectivity'
//
{
const uint64_t payLoad = (nPoints*sizeof(label));
format().openDataArray<label>(vtk::dataArrayAttr::CONNECTIVITY)
.closeTag();
const uint64_t payLoad = vtk::sizeofData<label>(nPoints);
format().beginDataArray<label>(vtk::dataArrayAttr::CONNECTIVITY);
format().writeSize(payLoad);
for (label i=0; i<nPoints; ++i)
{
format().write(i);
@ -114,12 +114,11 @@ void Foam::lumpedPointMovement::writeForcesAndMomentsVTP
// = linear mapping onto points (with 1 offset)
//
{
const uint64_t payLoad = (nPoints*sizeof(label));
format().openDataArray<label>(vtk::dataArrayAttr::OFFSETS)
.closeTag();
const uint64_t payLoad = vtk::sizeofData<label>(nPoints);
format().beginDataArray<label>(vtk::dataArrayAttr::OFFSETS);
format().writeSize(payLoad);
for (label i=0; i<nPoints; ++i)
{
format().write(i+1);
@ -133,17 +132,16 @@ void Foam::lumpedPointMovement::writeForcesAndMomentsVTP
// </Verts>
}
format().tag(vtk::fileTag::POINT_DATA);
format().beginPointData();
// forces
if (forces.size() == nPoints)
{
const uint64_t payLoad = (nPoints * 3 * sizeof(float));
format().openDataArray<float, 3>("forces")
.closeTag();
const uint64_t payLoad = vtk::sizeofData<float, 3>(nPoints);
format().beginDataArray<float, 3>("forces");
format().writeSize(payLoad);
vtk::writeList(format(), forces);
format().flush();
@ -153,23 +151,23 @@ void Foam::lumpedPointMovement::writeForcesAndMomentsVTP
// moments
if (moments.size() == nPoints)
{
const uint64_t payLoad = (nPoints * 3 * sizeof(float));
format().openDataArray<float, 3>("moments")
.closeTag();
const uint64_t payLoad = vtk::sizeofData<float, 3>(nPoints);
format().beginDataArray<float, 3>("moments");
format().writeSize(payLoad);
vtk::writeList(format(), moments);
format().flush();
format().endDataArray();
}
format().endTag(vtk::fileTag::POINT_DATA);
format().endPointData();
format().endTag(vtk::fileTag::PIECE);
format().endTag(vtk::fileTag::POLY_DATA);
format().endVTKFile();
format().endPiece();
format().endTag(vtk::fileTag::POLY_DATA)
.endVTKFile();
}
@ -190,7 +188,7 @@ void Foam::lumpedPointMovement::writeZonesVTP
);
format().xmlHeader()
.beginVTKFile(vtk::fileTag::POLY_DATA, "0.1");
.beginVTKFile<vtk::fileTag::POLY_DATA>();
forAll(faceZones_, zoneI)
{
@ -201,19 +199,20 @@ void Foam::lumpedPointMovement::writeZonesVTP
);
format()
.openTag(vtk::fileTag::PIECE)
.xmlAttr(vtk::fileAttr::NUMBER_OF_POINTS, pp.nPoints())
.xmlAttr(vtk::fileAttr::NUMBER_OF_POLYS, pp.size())
.closeTag();
.tag
(
vtk::fileTag::PIECE,
vtk::fileAttr::NUMBER_OF_POINTS, pp.nPoints(),
vtk::fileAttr::NUMBER_OF_POLYS, pp.size()
);
// 'points'
{
const uint64_t payLoad = (pp.nPoints()*3* sizeof(float));
const uint64_t payLoad = vtk::sizeofData<float, 3>(pp.nPoints());
format()
.tag(vtk::fileTag::POINTS)
.openDataArray<float, 3>(vtk::dataArrayAttr::POINTS)
.closeTag();
.beginDataArray<float, 3>(vtk::dataArrayAttr::POINTS);
format().writeSize(payLoad);
vtk::writeList(format(), pp.localPoints());
@ -231,17 +230,16 @@ void Foam::lumpedPointMovement::writeZonesVTP
// 'connectivity'
//
{
uint64_t payLoad = 0;
forAll(pp, facei)
label nVerts = 0;
for (const face& f : pp)
{
const face& f = pp[facei];
payLoad += f.size();
nVerts += f.size();
}
format().openDataArray<label>(vtk::dataArrayAttr::CONNECTIVITY)
.closeTag();
const uint64_t payLoad = vtk::sizeofData<label>(nVerts);
format().writeSize(payLoad * sizeof(label));
format().beginDataArray<label>(vtk::dataArrayAttr::CONNECTIVITY);
format().writeSize(payLoad);
for (const face& f : pp.localFaces())
{
@ -256,11 +254,9 @@ void Foam::lumpedPointMovement::writeZonesVTP
// 'offsets' (connectivity offsets)
//
{
const uint64_t payLoad = (pp.size() * sizeof(label));
format().openDataArray<label>(vtk::dataArrayAttr::OFFSETS)
.closeTag();
const uint64_t payLoad = vtk::sizeofData<label>(pp.size());
format().beginDataArray<label>(vtk::dataArrayAttr::OFFSETS);
format().writeSize(payLoad);
label off = 0;
@ -279,15 +275,13 @@ void Foam::lumpedPointMovement::writeZonesVTP
format().endTag(vtk::fileTag::POLYS);
format().tag(vtk::fileTag::CELL_DATA);
format().beginCellData();
// zone Id
{
const uint64_t payLoad = (pp.size() * sizeof(label));
format().openDataArray<label>("zoneId")
.closeTag();
const uint64_t payLoad = vtk::sizeofData<label>(pp.size());
format().beginDataArray<label>("zoneId");
format().writeSize(payLoad);
forAll(pp, facei)
@ -299,13 +293,13 @@ void Foam::lumpedPointMovement::writeZonesVTP
format().endDataArray();
}
format().endTag(vtk::fileTag::CELL_DATA);
format().endCellData();
format().endTag(vtk::fileTag::PIECE);
format().endPiece();
}
format().endTag(vtk::fileTag::POLY_DATA);
format().endVTKFile();
format().endTag(vtk::fileTag::POLY_DATA)
.endVTKFile();
}
@ -342,26 +336,27 @@ void Foam::lumpedPointMovement::writeVTP
);
format().xmlHeader()
.beginVTKFile(vtk::fileTag::POLY_DATA, "0.1");
.beginVTKFile<vtk::fileTag::POLY_DATA>();
for (const label patchId : patchIds)
{
const polyPatch& pp = boundaryMesh[patchId];
format()
.openTag(vtk::fileTag::PIECE)
.xmlAttr(vtk::fileAttr::NUMBER_OF_POINTS, pp.nPoints())
.xmlAttr(vtk::fileAttr::NUMBER_OF_POLYS, pp.size())
.closeTag();
.tag
(
vtk::fileTag::PIECE,
vtk::fileAttr::NUMBER_OF_POINTS, pp.nPoints(),
vtk::fileAttr::NUMBER_OF_POLYS, pp.size()
);
// 'points'
{
const uint64_t payLoad = (pp.nPoints()*3* sizeof(float));
const uint64_t payLoad = vtk::sizeofData<float, 3>(pp.nPoints());
format()
.tag(vtk::fileTag::POINTS)
.openDataArray<float, 3>(vtk::dataArrayAttr::POINTS)
.closeTag();
.beginDataArray<float, 3>(vtk::dataArrayAttr::POINTS);
// Could be more efficient, but not often needed
tmp<pointField> tpts = displacePoints
@ -390,16 +385,16 @@ void Foam::lumpedPointMovement::writeVTP
// 'connectivity'
//
{
uint64_t payLoad = 0;
label nVerts = 0;
for (const face& f : pp)
{
payLoad += f.size();
nVerts += f.size();
}
format().openDataArray<label>(vtk::dataArrayAttr::CONNECTIVITY)
.closeTag();
const uint64_t payLoad = vtk::sizeofData<label>(nVerts);
format().writeSize(payLoad * sizeof(label));
format().beginDataArray<label>(vtk::dataArrayAttr::CONNECTIVITY);
format().writeSize(payLoad);
for (const face& f : pp.localFaces())
{
@ -414,17 +409,14 @@ void Foam::lumpedPointMovement::writeVTP
// 'offsets' (connectivity offsets)
//
{
const uint64_t payLoad = (pp.size() * sizeof(label));
format().openDataArray<label>(vtk::dataArrayAttr::OFFSETS)
.closeTag();
const uint64_t payLoad = vtk::sizeofData<label>(pp.size());
format().beginDataArray<label>(vtk::dataArrayAttr::OFFSETS);
format().writeSize(payLoad);
label off = 0;
forAll(pp, facei)
for (const face& f : pp)
{
const face& f = pp[facei];
off += f.size();
format().write(off);
@ -436,11 +428,11 @@ void Foam::lumpedPointMovement::writeVTP
format().endTag(vtk::fileTag::POLYS);
format().endTag(vtk::fileTag::PIECE);
format().endPiece();
}
format().endTag(vtk::fileTag::POLY_DATA);
format().endVTKFile();
format().endTag(vtk::fileTag::POLY_DATA)
.endVTKFile();
}

View File

@ -62,27 +62,28 @@ void Foam::lumpedPointState::writeVTP
);
format().xmlHeader()
.beginVTKFile(vtk::fileTag::POLY_DATA, "0.1");
.beginVTKFile<vtk::fileTag::POLY_DATA>();
//
// The 'spine' of lumped mass points
//
{
format()
.openTag(vtk::fileTag::PIECE)
.xmlAttr(vtk::fileAttr::NUMBER_OF_POINTS, points_.size())
.xmlAttr(vtk::fileAttr::NUMBER_OF_VERTS, points_.size())
.xmlAttr(vtk::fileAttr::NUMBER_OF_LINES, 1)
.closeTag();
.tag
(
vtk::fileTag::PIECE,
vtk::fileAttr::NUMBER_OF_POINTS, points_.size(),
vtk::fileAttr::NUMBER_OF_VERTS, points_.size(),
vtk::fileAttr::NUMBER_OF_LINES, 1
);
// 'points'
{
const uint64_t payLoad = (points_.size()*3* sizeof(float));
const uint64_t payLoad = vtk::sizeofData<float, 3>(points_.size());
format()
.tag(vtk::fileTag::POINTS)
.openDataArray<float, 3>(vtk::dataArrayAttr::POINTS)
.closeTag();
.beginDataArray<float, 3>(vtk::dataArrayAttr::POINTS);
format().writeSize(payLoad);
vtk::writeList(format(), points_);
@ -100,12 +101,11 @@ void Foam::lumpedPointState::writeVTP
// 'connectivity'
//
{
const uint64_t payLoad = (points_.size()*sizeof(label));
format().openDataArray<label>(vtk::dataArrayAttr::CONNECTIVITY)
.closeTag();
const uint64_t payLoad = vtk::sizeofData<label>(points_.size());
format().beginDataArray<label>(vtk::dataArrayAttr::CONNECTIVITY);
format().writeSize(payLoad);
forAll(points_, i)
{
format().write(i);
@ -120,12 +120,11 @@ void Foam::lumpedPointState::writeVTP
// = linear mapping onto points (with 1 offset)
//
{
const uint64_t payLoad = (points_.size()*sizeof(label));
format().openDataArray<label>(vtk::dataArrayAttr::OFFSETS)
.closeTag();
const uint64_t payLoad = vtk::sizeofData<label>(points_.size());
format().beginDataArray<label>(vtk::dataArrayAttr::OFFSETS);
format().writeSize(payLoad);
forAll(points_, i)
{
format().write(i+1);
@ -146,12 +145,11 @@ void Foam::lumpedPointState::writeVTP
// 'connectivity'
//
{
const uint64_t payLoad = (points_.size()*sizeof(label));
format().openDataArray<label>(vtk::dataArrayAttr::CONNECTIVITY)
.closeTag();
const uint64_t payLoad = vtk::sizeofData<label>(points_.size());
format().beginDataArray<label>(vtk::dataArrayAttr::CONNECTIVITY);
format().writeSize(payLoad);
forAll(points_, i)
{
format().write(i);
@ -166,12 +164,11 @@ void Foam::lumpedPointState::writeVTP
// = single line
//
{
const uint64_t payLoad = (1*sizeof(label));
format().openDataArray<label>(vtk::dataArrayAttr::OFFSETS)
.closeTag();
const uint64_t payLoad = vtk::sizeofData<label>(1);
format().beginDataArray<label>(vtk::dataArrayAttr::OFFSETS);
format().writeSize(payLoad);
format().write(points_.size());
format().flush();
@ -179,7 +176,7 @@ void Foam::lumpedPointState::writeVTP
}
format().endTag(vtk::fileTag::LINES);
format().endTag(vtk::fileTag::PIECE);
format().endPiece();
}
// Standard corners in local axis
@ -203,19 +200,20 @@ void Foam::lumpedPointState::writeVTP
const label nPolys = points_.size();
format()
.openTag(vtk::fileTag::PIECE)
.xmlAttr(vtk::fileAttr::NUMBER_OF_POINTS, nPoints)
.xmlAttr(vtk::fileAttr::NUMBER_OF_POLYS, nPolys)
.closeTag();
.tag
(
vtk::fileTag::PIECE,
vtk::fileAttr::NUMBER_OF_POINTS, nPoints,
vtk::fileAttr::NUMBER_OF_POLYS, nPolys
);
// 'points'
{
const uint64_t payLoad = (nPoints*3*sizeof(float));
const uint64_t payLoad = vtk::sizeofData<float, 3>(nPoints);
format()
.tag(vtk::fileTag::POINTS)
.openDataArray<float, 3>(vtk::dataArrayAttr::POINTS)
.closeTag();
.beginDataArray<float, 3>(vtk::dataArrayAttr::POINTS);
format().writeSize(payLoad);
@ -253,12 +251,11 @@ void Foam::lumpedPointState::writeVTP
// 'connectivity' - 4 points (ie, quad)
//
{
const uint64_t payLoad = (4*nPolys*sizeof(label));
format().openDataArray<label>(vtk::dataArrayAttr::CONNECTIVITY)
.closeTag();
const uint64_t payLoad = vtk::sizeofData<label>(4*nPolys);
format().beginDataArray<label>(vtk::dataArrayAttr::CONNECTIVITY);
format().writeSize(payLoad);
for (label i=0; i < 4*nPolys; ++i)
{
format().write(i);
@ -273,12 +270,11 @@ void Foam::lumpedPointState::writeVTP
// = single quad
//
{
const uint64_t payLoad = (nPolys*sizeof(label));
format().openDataArray<label>(vtk::dataArrayAttr::OFFSETS)
.closeTag();
const uint64_t payLoad = vtk::sizeofData<label>(nPolys);
format().beginDataArray<label>(vtk::dataArrayAttr::OFFSETS);
format().writeSize(payLoad);
for (label i=0; i < nPolys; ++i)
{
const label off = 4 * (i+1);
@ -292,16 +288,15 @@ void Foam::lumpedPointState::writeVTP
format().endTag(vtk::fileTag::POLYS);
#if 0
format().tag(vtk::fileTag::CELL_DATA);
format().beginCellData();
// zone Id
{
const uint64_t payLoad = (points_.size()*sizeof(label));
format().openDataArray<label>("zoneId")
.closeTag();
const uint64_t payLoad = vtk::sizeofData<label>(nPolys);
format().beginDataArray<label>("zoneId");
format().writeSize(payLoad);
for (label i=0; i < nPolys; ++i)
{
format().write(i);
@ -311,18 +306,18 @@ void Foam::lumpedPointState::writeVTP
format().endDataArray();
}
format().endTag(vtk::fileTag::CELL_DATA);
format().endCellData();
#endif
format().endTag(vtk::fileTag::PIECE);
format().endPiece();
}
// Finally
// could add a 'ghost' level above to visualize extrapolated values
// draw as two triangles to distingush from real levels ...
format().endTag(vtk::fileTag::POLY_DATA);
format().endVTKFile();
format().endTag(vtk::fileTag::POLY_DATA)
.endVTKFile();
}

View File

@ -63,11 +63,10 @@ void Foam::fileFormats::VTKsurfaceFormatCore::writeHeader
const UList<point>& pts
)
{
vtk::legacy::fileHeader
vtk::legacy::fileHeader<vtk::fileTag::POLY_DATA>
(
format,
("surface written " + clock::dateTime()),
vtk::fileTag::POLY_DATA
("surface written " + clock::dateTime())
);
vtk::legacy::beginPoints(format.os(), pts.size());

View File

@ -41,16 +41,16 @@ void Foam::fileFormats::VTPsurfaceFormat<Face>::writePolys
// 'connectivity'
//
{
uint64_t payLoad = 0;
label nVerts = 0;
for (const auto& f : faces)
{
payLoad += f.size();
nVerts += f.size();
}
format.openDataArray<label>(vtk::dataArrayAttr::CONNECTIVITY)
.closeTag();
const uint64_t payLoad = vtk::sizeofData<label>(nVerts);
format.writeSize(payLoad * sizeof(label));
format.beginDataArray<label>(vtk::dataArrayAttr::CONNECTIVITY);
format.writeSize(payLoad);
for (const auto& f : faces)
{
@ -66,12 +66,9 @@ void Foam::fileFormats::VTPsurfaceFormat<Face>::writePolys
// 'offsets' (connectivity offsets)
//
{
const uint64_t payLoad(faces.size() * sizeof(label));
format
.openDataArray<label>(vtk::dataArrayAttr::OFFSETS)
.closeTag();
const uint64_t payLoad = vtk::sizeofData<label>(faces.size());
format.beginDataArray<label>(vtk::dataArrayAttr::OFFSETS);
format.writeSize(payLoad);
label off = 0;
@ -129,16 +126,16 @@ void Foam::fileFormats::VTPsurfaceFormat<Face>::write
// 'connectivity'
//
{
uint64_t payLoad = 0;
label nVerts = 0;
for (const auto& f : faceLst)
{
payLoad += f.size();
nVerts += f.size();
}
format().openDataArray<label>(vtk::dataArrayAttr::CONNECTIVITY)
.closeTag();
const uint64_t payLoad = vtk::sizeofData<label>(nVerts);
format().writeSize(payLoad * sizeof(label));
format().beginDataArray<label>(vtk::dataArrayAttr::CONNECTIVITY);
format().writeSize(payLoad);
label faceIndex = 0;
for (const surfZone& zone : zones)
@ -160,12 +157,9 @@ void Foam::fileFormats::VTPsurfaceFormat<Face>::write
// 'offsets' (connectivity offsets)
//
{
const uint64_t payLoad(faceLst.size() * sizeof(label));
format()
.openDataArray<label>(vtk::dataArrayAttr::OFFSETS)
.closeTag();
const uint64_t payLoad = vtk::sizeofData<label>(faceLst.size());
format().beginDataArray<label>(vtk::dataArrayAttr::OFFSETS);
format().writeSize(payLoad);
label off = 0, faceIndex = 0;

View File

@ -69,25 +69,27 @@ void Foam::fileFormats::VTPsurfaceFormatCore::writeHeader
format
.xmlHeader()
.xmlComment("surface written " + clock::dateTime())
.beginVTKFile(vtk::fileTag::POLY_DATA, "0.1");
.beginVTKFile<vtk::fileTag::POLY_DATA>();
// <Piece>
format
.openTag(vtk::fileTag::PIECE)
.xmlAttr(vtk::fileAttr::NUMBER_OF_POINTS, pts.size())
.xmlAttr(vtk::fileAttr::NUMBER_OF_POLYS, nFaces)
.closeTag();
.tag
(
vtk::fileTag::PIECE,
vtk::fileAttr::NUMBER_OF_POINTS, pts.size(),
vtk::fileAttr::NUMBER_OF_POLYS, nFaces
);
// Points
const uint64_t payLoad = (pts.size()*3* sizeof(float));
const uint64_t payLoad = vtk::sizeofData<float, 3>(pts.size());
format.tag(vtk::fileTag::POINTS)
.openDataArray<float, 3>(vtk::dataArrayAttr::POINTS)
.closeTag();
.beginDataArray<float, 3>(vtk::dataArrayAttr::POINTS);
format.writeSize(payLoad);
vtk::writeList(format, pts);
format.flush();
@ -102,15 +104,13 @@ void Foam::fileFormats::VTPsurfaceFormatCore::writeFooter
vtk::formatter& format
)
{
// Slight cheat. </Piece> too
format.endTag(Foam::vtk::fileTag::PIECE);
format.endPiece(); //<-- slight cheat. </Piece> too
format.endTag(vtk::fileTag::POLY_DATA)
.endVTKFile();
}
void Foam::fileFormats::VTPsurfaceFormatCore::writeCellData
(
vtk::formatter& format,
@ -120,17 +120,17 @@ void Foam::fileFormats::VTPsurfaceFormatCore::writeCellData
// Zone ids as CellData
// Number of faces covered by the zones
uint64_t payLoad = 0;
label nFaces = 0;
for (const auto& z : zones)
{
payLoad += z.size();
nFaces += z.size();
}
format.tag(vtk::fileTag::CELL_DATA);
format.openDataArray<label>("region")
.closeTag();
const uint64_t payLoad = vtk::sizeofData<label>(nFaces);
format.writeSize(payLoad * sizeof(label));
format.beginCellData();
format.beginDataArray<label>("region");
format.writeSize(payLoad);
label zoneId = 0;
for (const surfZone& zone : zones)
@ -145,7 +145,7 @@ void Foam::fileFormats::VTPsurfaceFormatCore::writeCellData
format.flush();
format.endDataArray();
format.endTag(vtk::fileTag::CELL_DATA);
format.endCellData();
}
@ -157,11 +157,10 @@ void Foam::fileFormats::VTPsurfaceFormatCore::writeCellData
{
// Zone ids as CellData
format.tag(vtk::fileTag::CELL_DATA);
format.openDataArray<label>("region")
.closeTag();
const uint64_t payLoad = vtk::sizeofData<label>(zoneIds.size());
const uint64_t payLoad(zoneIds.size() * sizeof(label));
format.beginCellData();
format.beginDataArray<label>("region");
format.writeSize(payLoad);
vtk::writeList(format, zoneIds);
@ -169,7 +168,7 @@ void Foam::fileFormats::VTPsurfaceFormatCore::writeCellData
format.flush();
format.endDataArray();
format.endTag(vtk::fileTag::CELL_DATA);
format.endCellData();
}