fileWriter Class Referenceabstract

Base class for VTK output writers that handle geometry and fields (eg, vtp, vtu data). These output formats are structured as DECLARED, FIELD_DATA, PIECE followed by any CELL_DATA or POINT_DATA. More...

Inheritance diagram for fileWriter:
[legend]
Collaboration diagram for fileWriter:
[legend]

Public Member Functions

 fileWriter (const vtk::fileTag contentType, const vtk::outputOptions opts)
 Construct from components. More...
 
virtual ~fileWriter ()
 Destructor. More...
 
vtk::fileTag contentType () const
 The content type. More...
 
vtk::outputOptions opts () const
 The output options in use. More...
 
word ext () const
 File extension for current format type. More...
 
bool legacy () const
 Commonly used query. More...
 
bool parallel () const
 Parallel output requested? More...
 
const wordstate () const
 The output state in printable format. More...
 
const fileNameoutput () const
 The current output file name. More...
 
bool open (const fileName &file, bool parallel=Pstream::parRun())
 Open file for writing (creates parent directory). More...
 
void close ()
 End the file contents and close the file after writing. More...
 
virtual bool beginFile (std::string title="")
 Write file header (non-collective) More...
 
bool beginFieldData (label nFields=0)
 Begin FieldData output section for specified number of fields. More...
 
virtual bool writeGeometry ()=0
 Write mesh topology. More...
 
virtual bool beginCellData (label nFields=0)=0
 Begin CellData output section for specified number of fields. More...
 
virtual bool beginPointData (label nFields=0)=0
 Begin PointData for specified number of fields. More...
 
label nCellData () const
 Return the number of CellData written for the Piece thus far. More...
 
label nPointData () const
 Return the number of PointData written for the Piece thus far. More...
 
bool endFieldData ()
 Explicitly end FieldData output and switch to DECLARED state. More...
 
bool endCellData ()
 Explicitly end CellData output and switch to PIECE state. More...
 
bool endPointData ()
 Explicitly end PointData output and switch to PIECE state. More...
 
void writeTimeValue (scalar timeValue)
 Write "TimeValue" FieldData (name as per Catalyst output) More...
 

Protected Types

enum  outputState {
  CLOSED = 0, OPENED, DECLARED, FIELD_DATA,
  PIECE, CELL_DATA, POINT_DATA
}
 Internal tracking of the output state. More...
 

Protected Member Functions

std::ofstream & os ()
 The backend ostream in use. More...
 
vtk::formatterformat ()
 The VTK formatter in use. More...
 
bool isState (outputState test) const
 True if the output state corresponds to the test state. More...
 
bool notState (outputState test) const
 True if the output state does not correspond to the test state. More...
 
template<class Type >
void writeUniform (const word &fieldName, const Type &val, const label nValues)
 Write uniform field content. More...
 
bool enter_Piece ()
 Trigger change state to Piece. Resets nCellData_, nPointData_. More...
 
bool endPiece ()
 Explicitly end Piece output and switch to DECLARED state. More...
 
bool enter_CellData (label nEntries, label nFields)
 Trigger change state to CellData. More...
 
bool enter_PointData (label nEntries, label nFields)
 Trigger change state to PointData. More...
 
bool exit_File ()
 Emit file footer (end data, end piece, end file) More...
 
 fileWriter (const fileWriter &)=delete
 No copy construct. More...
 
void operator= (const fileWriter &)=delete
 No copy assignment. More...
 

Protected Attributes

vtk::fileTag contentType_
 The content type. More...
 
outputOptions opts_
 The requested output options. More...
 
bool parallel_
 Writing in parallel (via master) More...
 
outputState state_
 The output state. More...
 
label nCellData_
 The number of CellData written for the Piece thus far. More...
 
label nPointData_
 The number of PointData written for the Piece thus far. More...
 
fileName outputFile_
 The output file name. More...
 
autoPtr< vtk::formatterformat_
 The VTK formatter in use (master process) More...
 
std::ofstream os_
 The backend ostream in use (master process) More...
 

Static Protected Attributes

static const Enum< outputStatestateNames
 Names for the output state (for messages, not for file output). More...
 

Detailed Description

Base class for VTK output writers that handle geometry and fields (eg, vtp, vtu data). These output formats are structured as DECLARED, FIELD_DATA, PIECE followed by any CELL_DATA or POINT_DATA.

This writer base tracks these expected output states internally to help avoid logic errors in the callers.

The FieldData element must be placed prior to writing any geometry Piece. This moves the information to the front of the output file for visibility and simplifies the logic when creating multi-piece geometries.

Source files

Definition at line 66 of file foamVtkFileWriter.H.

Member Enumeration Documentation

◆ outputState

enum outputState
protected

Internal tracking of the output state.

Enumerator
CLOSED 

File is closed.

OPENED 

File is opened.

DECLARED 

File contents declared (VTKFile header written)

FIELD_DATA 

Inside FieldData.

PIECE 

Inside Piece (after geometry write)

CELL_DATA 

Inside CellData.

POINT_DATA 

Inside PointData.

Definition at line 73 of file foamVtkFileWriter.H.

Constructor & Destructor Documentation

◆ fileWriter() [1/2]

fileWriter ( const fileWriter )
protecteddelete

No copy construct.

◆ fileWriter() [2/2]

fileWriter ( const vtk::fileTag  contentType,
const vtk::outputOptions  opts 
)

Construct from components.

Definition at line 210 of file foamVtkFileWriter.C.

◆ ~fileWriter()

~fileWriter ( )
virtual

Destructor.

Definition at line 232 of file foamVtkFileWriter.C.

Member Function Documentation

◆ os()

std::ofstream & os ( )
inlineprotected

The backend ostream in use.

Definition at line 30 of file foamVtkFileWriterI.H.

References fileWriter::os_.

◆ format()

Foam::vtk::formatter & format ( )
inlineprotected

The VTK formatter in use.

Definition at line 36 of file foamVtkFileWriterI.H.

Referenced by patchMeshWriter::beginPiece(), and lagrangianWriter::write().

Here is the caller graph for this function:

◆ isState()

bool isState ( outputState  test) const
inlineprotected

True if the output state corresponds to the test state.

Definition at line 42 of file foamVtkFileWriterI.H.

Referenced by fileWriter::enter_Piece(), and lagrangianWriter::write().

Here is the caller graph for this function:

◆ notState()

bool notState ( outputState  test) const
inlineprotected

True if the output state does not correspond to the test state.

Definition at line 48 of file foamVtkFileWriterI.H.

Referenced by fileWriter::enter_Piece().

Here is the caller graph for this function:

◆ writeUniform()

void writeUniform ( const word fieldName,
const Type &  val,
const label  nValues 
)
protected

Write uniform field content.

No context checking (eg, file-open, CellData, PointData, etc)

Definition at line 35 of file foamVtkFileWriterTemplates.C.

References format(), and Foam::vtk::write().

Here is the call graph for this function:

◆ enter_Piece()

bool enter_Piece ( )
protected

Trigger change state to Piece. Resets nCellData_, nPointData_.

Definition at line 51 of file foamVtkFileWriter.C.

References fileWriter::beginFile(), fileWriter::endFieldData(), Foam::exit(), Foam::FatalError, FatalErrorInFunction, fileWriter::isState(), fileWriter::nCellData_, fileWriter::notState(), fileWriter::nPointData_, Foam::vtk::PIECE, fileWriter::state_, and fileWriter::stateNames.

Here is the call graph for this function:

◆ endPiece()

bool endPiece ( )
protected

Explicitly end Piece output and switch to DECLARED state.

Ignored (no-op) if not currently in the PIECE state.

Definition at line 74 of file foamVtkFileWriter.C.

References format(), and Foam::vtk::PIECE.

Here is the call graph for this function:

◆ enter_CellData()

bool enter_CellData ( label  nEntries,
label  nFields 
)
protected

Trigger change state to CellData.

Legacy requires both parameters. XML doesn't require either.

Returns
True if the state changed

Definition at line 96 of file foamVtkFileWriter.C.

References Foam::vtk::legacy::beginCellData(), Foam::vtk::CELL_DATA, Foam::exit(), Foam::FatalError, FatalErrorInFunction, format(), and Foam::vtk::PIECE.

Here is the call graph for this function:

◆ enter_PointData()

bool enter_PointData ( label  nEntries,
label  nFields 
)
protected

Trigger change state to PointData.

Legacy requires both parameters. XML doesn't require either.

Returns
True if the state changed

Definition at line 135 of file foamVtkFileWriter.C.

References Foam::vtk::legacy::beginPointData(), Foam::exit(), Foam::FatalError, FatalErrorInFunction, format(), Foam::vtk::PIECE, and Foam::vtk::POINT_DATA.

Here is the call graph for this function:

◆ exit_File()

bool exit_File ( )
protected

Emit file footer (end data, end piece, end file)

Definition at line 174 of file foamVtkFileWriter.C.

References Foam::endl(), Foam::vtk::fileTagNames, format(), Foam::nl, and WarningInFunction.

Here is the call graph for this function:

◆ operator=()

void operator= ( const fileWriter )
protecteddelete

No copy assignment.

◆ contentType()

Foam::vtk::fileTag contentType ( ) const
inline

The content type.

Definition at line 56 of file foamVtkFileWriterI.H.

◆ opts()

Foam::vtk::outputOptions opts ( ) const
inline

The output options in use.

Definition at line 62 of file foamVtkFileWriterI.H.

Referenced by indirectPatchWriter::ext(), patchMeshWriter::ext(), surfaceWriter::ext(), and internalMeshWriter::ext().

Here is the caller graph for this function:

◆ ext()

Foam::word ext ( ) const
inline

File extension for current format type.

Definition at line 68 of file foamVtkFileWriterI.H.

References word::ext().

Referenced by vtkWriter::write().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ legacy()

bool legacy ( ) const
inline

Commonly used query.

Definition at line 74 of file foamVtkFileWriterI.H.

Referenced by patchMeshWriter::beginPiece(), lagrangianWriter::lagrangianWriter(), and surfaceFieldWriter::surfaceFieldWriter().

Here is the caller graph for this function:

◆ parallel()

bool parallel ( ) const
inline

Parallel output requested?

Definition at line 80 of file foamVtkFileWriterI.H.

◆ state()

const Foam::word & state ( ) const
inline

The output state in printable format.

Definition at line 86 of file foamVtkFileWriterI.H.

◆ output()

const Foam::fileName & output ( ) const
inline

The current output file name.

Definition at line 92 of file foamVtkFileWriterI.H.

◆ open()

bool open ( const fileName file,
bool  parallel = Pstream::parRun() 
)

Open file for writing (creates parent directory).

The file name is normally without an extension, this will be added according to the content-type and the output format (legacy/xml). If the file name has an extension, it will be used where if appropriate or changed to suit the format (legacy/xml) type.

Note
Expected calling states: (CLOSED).

Definition at line 240 of file foamVtkFileWriter.C.

References Foam::exit(), Foam::FatalError, FatalErrorInFunction, Foam::vtk::fileExtension, Foam::vtk::legacy::fileExtension, UPstream::master(), Foam::mkDir(), UPstream::parRun(), and fileName::removeExt().

Here is the call graph for this function:

◆ close()

void close ( )

End the file contents and close the file after writing.

Note
Expected calling states: (PIECE | CELL_DATA | POINT_DATA).

Definition at line 301 of file foamVtkFileWriter.C.

◆ beginFile()

bool beginFile ( std::string  title = "")
virtual

Write file header (non-collective)

Note
Expected calling states: (OPENED)

Reimplemented in lagrangianWriter, patchMeshWriter, surfaceWriter, internalMeshWriter, indirectPatchWriter, and surfaceFieldWriter.

Definition at line 317 of file foamVtkFileWriter.C.

References Foam::exit(), Foam::FatalError, FatalErrorInFunction, Foam::vtk::legacy::fileHeader(), and format().

Referenced by surfaceFieldWriter::beginFile(), indirectPatchWriter::beginFile(), internalMeshWriter::beginFile(), surfaceWriter::beginFile(), patchMeshWriter::beginFile(), lagrangianWriter::beginFile(), and fileWriter::enter_Piece().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ beginFieldData()

bool beginFieldData ( label  nFields = 0)

Begin FieldData output section for specified number of fields.

Parameters
nFieldsis for legacy format only. When nFields=0, this a no-op for legacy format.
Note
Expected calling states: (OPENED | DECLARED).

Definition at line 358 of file foamVtkFileWriter.C.

References Foam::vtk::legacy::beginFieldData(), Foam::exit(), Foam::FatalError, FatalErrorInFunction, Foam::vtk::FIELD_DATA, and format().

Here is the call graph for this function:

◆ writeGeometry()

virtual bool writeGeometry ( )
pure virtual

Write mesh topology.

Also writes the file header if not previously written.

Note
Must be called prior to writing CellData or PointData

Implemented in lagrangianWriter, patchMeshWriter, surfaceWriter, internalMeshWriter, indirectPatchWriter, and surfaceFieldWriter.

◆ beginCellData()

virtual bool beginCellData ( label  nFields = 0)
pure virtual

Begin CellData output section for specified number of fields.

Must be called prior to writing any cell data fields.

Parameters
nFieldsis for legacy format only. When nFields=0, this a no-op for legacy format.
Note
Expected calling states: (PIECE | POINT_DATA).
Returns
True if the state changed

Implemented in patchMeshWriter, surfaceWriter, internalMeshWriter, indirectPatchWriter, surfaceFieldWriter, and lagrangianWriter.

◆ beginPointData()

virtual bool beginPointData ( label  nFields = 0)
pure virtual

Begin PointData for specified number of fields.

Must be called prior to writing any point data fields.

Parameters
nFieldsis for legacy format only. When nFields=0, this a no-op for legacy format.
Note
Expected calling states: (PIECE | CELL_DATA).
Returns
True if the state changed

Implemented in patchMeshWriter, surfaceWriter, internalMeshWriter, indirectPatchWriter, surfaceFieldWriter, and lagrangianWriter.

◆ nCellData()

Foam::label nCellData ( ) const
inline

Return the number of CellData written for the Piece thus far.

Definition at line 98 of file foamVtkFileWriterI.H.

◆ nPointData()

Foam::label nPointData ( ) const
inline

Return the number of PointData written for the Piece thus far.

Definition at line 104 of file foamVtkFileWriterI.H.

◆ endFieldData()

bool endFieldData ( )

Explicitly end FieldData output and switch to DECLARED state.

Ignored (no-op) if not currently in the FIELD_DATA state.

Definition at line 392 of file foamVtkFileWriter.C.

References Foam::vtk::FIELD_DATA, and format().

Referenced by fileWriter::enter_Piece().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ endCellData()

bool endCellData ( )

Explicitly end CellData output and switch to PIECE state.

Ignored (no-op) if not currently in the CELL_DATA state.

Definition at line 410 of file foamVtkFileWriter.C.

References Foam::vtk::CELL_DATA, format(), and Foam::vtk::PIECE.

Here is the call graph for this function:

◆ endPointData()

bool endPointData ( )

Explicitly end PointData output and switch to PIECE state.

Ignored (no-op) if not currently in the POINT_DATA state.

Definition at line 428 of file foamVtkFileWriter.C.

References format(), Foam::vtk::PIECE, and Foam::vtk::POINT_DATA.

Here is the call graph for this function:

◆ writeTimeValue()

void writeTimeValue ( scalar  timeValue)

Write "TimeValue" FieldData (name as per Catalyst output)

Must be called within the FIELD_DATA state.

Note
As a convenience this can also be called from (OPENED | DECLARED) states, in which case it invokes beginFieldData(1) internally.

Definition at line 446 of file foamVtkFileWriter.C.

References Foam::vtk::legacy::beginFieldData(), Foam::exit(), Foam::FatalError, FatalErrorInFunction, Foam::vtk::FIELD_DATA, format(), and Foam::vtk::legacy::writeTimeValue().

Referenced by surfaceWriter::writeTimeValue().

Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ stateNames

const Foam::Enum< Foam::vtk::fileWriter::outputState > stateNames
staticprotected

Names for the output state (for messages, not for file output).

Definition at line 85 of file foamVtkFileWriter.H.

Referenced by fileWriter::enter_Piece(), and lagrangianWriter::write().

◆ contentType_

vtk::fileTag contentType_
protected

The content type.

Definition at line 89 of file foamVtkFileWriter.H.

◆ opts_

outputOptions opts_
protected

The requested output options.

Definition at line 92 of file foamVtkFileWriter.H.

◆ parallel_

bool parallel_
protected

Writing in parallel (via master)

Definition at line 95 of file foamVtkFileWriter.H.

Referenced by patchMeshWriter::beginPiece(), and lagrangianWriter::write().

◆ state_

outputState state_
protected

The output state.

Definition at line 98 of file foamVtkFileWriter.H.

Referenced by fileWriter::enter_Piece(), and lagrangianWriter::write().

◆ nCellData_

label nCellData_
protected

The number of CellData written for the Piece thus far.

Definition at line 101 of file foamVtkFileWriter.H.

Referenced by fileWriter::enter_Piece(), and lagrangianWriter::write().

◆ nPointData_

label nPointData_
protected

The number of PointData written for the Piece thus far.

Definition at line 104 of file foamVtkFileWriter.H.

Referenced by fileWriter::enter_Piece(), and lagrangianWriter::write().

◆ outputFile_

fileName outputFile_
protected

The output file name.

Definition at line 107 of file foamVtkFileWriter.H.

◆ format_

autoPtr<vtk::formatter> format_
protected

The VTK formatter in use (master process)

Definition at line 110 of file foamVtkFileWriter.H.

Referenced by patchMeshWriter::beginPiece(), and lagrangianWriter::write().

◆ os_

std::ofstream os_
protected

The backend ostream in use (master process)

Definition at line 113 of file foamVtkFileWriter.H.

Referenced by fileWriter::os().


The documentation for this class was generated from the following files: