ENH: Added finiteArea support to foamToVTK

This commit is contained in:
Andrew Heather
2017-11-21 16:33:33 +00:00
committed by Andrew Heather
parent a14eb71160
commit c2ff8ea99e
14 changed files with 316 additions and 88 deletions

View File

@ -26,6 +26,7 @@ License
#include "vtkWrite.H"
#include "dictionary.H"
#include "Time.H"
#include "areaFields.H"
#include "foamVtkInternalWriter.H"
#include "addToRunTimeSelectionTable.H"
@ -59,12 +60,6 @@ Foam::functionObjects::vtkWrite::vtkWrite
}
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
Foam::functionObjects::vtkWrite::~vtkWrite()
{}
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
bool Foam::functionObjects::vtkWrite::read(const dictionary& dict)
@ -125,21 +120,6 @@ bool Foam::functionObjects::vtkWrite::execute()
bool Foam::functionObjects::vtkWrite::write()
{
// Count number of fields to be written: only needed for legacy vtk format
label nFields = 0;
if (writeOpts_.legacy())
{
nFields =
(
(writeIds_ ? 1 : 0)
+ countFields<volScalarField>()
+ countFields<volVectorField>()
+ countFields<volSphericalTensorField>()
+ countFields<volSymmTensorField>()
+ countFields<volTensorField>()
);
}
// const word timeDesc =
// useTimeName ? time_.timeName() : Foam::name(time_.timeIndex());
@ -165,55 +145,72 @@ bool Foam::functionObjects::vtkWrite::write()
}
}
// Create file and write header
const fileName outputName
(
vtkDir/vtkName
+ "_"
+ timeDesc
);
Info<< name() << " output Time: " << time_.timeName() << nl
<< " Internal : " << outputName << endl;
vtk::vtuCells vtuMeshCells
(
mesh_,
writeOpts_,
true // decompose
);
// Write mesh
vtk::internalWriter writer
(
mesh_,
vtuMeshCells,
outputName,
writeOpts_
);
// CellData
// internal mesh
{
writer.beginCellData(nFields);
const fileName outputName
(
vtkDir/vtkName
+ "_"
+ timeDesc
);
// Write cellID field
if (writeIds_)
Info<< name() << " output Time: " << time_.timeName() << nl
<< " Internal : " << outputName << endl;
// Number of fields to be written: only needed for legacy vtk format
label nVolFields = 0;
if (writeOpts_.legacy())
{
writer.writeCellIDs();
nVolFields =
(
(writeIds_ ? 1 : 0)
+ countFields<volScalarField>()
+ countFields<volVectorField>()
+ countFields<volSphericalTensorField>()
+ countFields<volSymmTensorField>()
+ countFields<volTensorField>()
);
}
// Write volFields
writeFields<volScalarField>(writer);
writeFields<volVectorField>(writer);
writeFields<volSphericalTensorField>(writer);
writeFields<volSymmTensorField>(writer);
writeFields<volTensorField>(writer);
vtk::vtuCells vtuMeshCells
(
mesh_,
writeOpts_,
true // decompose
);
writer.endCellData();
// Write mesh
vtk::internalWriter writer
(
mesh_,
vtuMeshCells,
outputName,
writeOpts_
);
// CellData
{
writer.beginCellData(nVolFields);
// Write cellID field
if (writeIds_)
{
writer.writeCellIDs();
}
// Write volFields
writeFields<volScalarField>(writer);
writeFields<volVectorField>(writer);
writeFields<volSphericalTensorField>(writer);
writeFields<volSymmTensorField>(writer);
writeFields<volTensorField>(writer);
writer.endCellData();
}
writer.writeFooter();
}
writer.writeFooter();
return true;
}