/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2021-2022 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
OpenFOAM is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with OpenFOAM. If not, see .
Class
Foam::coordSetWriters::csvWriter
Description
Write coordSet(s) in csv format
The formatOptions for csv:
\table
Property | Description | Required | Default
buffer | Use buffered output | no | true
compression | Use file compression | no | false
precision | Write precision in ascii | no | same as IOstream
\endtable
When called with a single coordSet, will buffer the output of
all fields and output together in the order of label/scalar/vector/...
each of which is sorted alphabetically according to the field name.
When called as a track writer (eg, with multiple coordSets),
will emit one file per field.
SourceFiles
csvCoorSetWriter.C
csvCoorSetWriterImpl.C
\*---------------------------------------------------------------------------*/
#ifndef Foam_coordSetWriters_csvWriter_H
#define Foam_coordSetWriters_csvWriter_H
#include "coordSetWriter.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam
{
namespace coordSetWriters
{
/*---------------------------------------------------------------------------*\
Class csvWriter Declaration
\*---------------------------------------------------------------------------*/
class csvWriter
:
public coordSetWriter
{
// Private Data
//- Output stream option
IOstreamOption streamOpt_;
//- ASCII write precision
unsigned precision_;
// Private Member Functions
//- Templated write operation
template
fileName writeTemplate
(
const word& fieldName,
const UPtrList>& fieldPtrs
);
//- Templated write operation
template
fileName writeTemplate
(
const word& fieldName, //!< Name of field
const Field& vals //!< Local field values to write
);
//- Templated write operation
template
fileName writeTemplate
(
const word& fieldName,
const List>& fieldValues
);
protected:
// Protected Member Functions
//- Write buffered data
virtual bool writeBuffered();
public:
//- Runtime type information (no debug)
TypeNameNoDebug("csv");
// Constructors
//- Default construct
csvWriter();
//- Default construct with specified options
explicit csvWriter(const dictionary& options);
//- Construct from components
csvWriter
(
const coordSet& coords,
const fileName& outputPath,
const dictionary& options = dictionary()
);
//- Construct from components
csvWriter
(
const UPtrList& tracks,
const fileName& outputPath,
const dictionary& options = dictionary()
);
//- Destructor. Calls close()
virtual ~csvWriter();
// Member Functions
//- Enable/disable internal buffering
virtual bool buffering(const bool on); // override
//- Characteristic output file name - information only
// \warning incorrect for unbuffered or track output!
virtual fileName path() const; // override
declareCoordSetWriterWriteMethod(label);
declareCoordSetWriterWriteMethod(scalar);
declareCoordSetWriterWriteMethod(vector);
declareCoordSetWriterWriteMethod(sphericalTensor);
declareCoordSetWriterWriteMethod(symmTensor);
declareCoordSetWriterWriteMethod(tensor);
};
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
} // End namespace coordSetWriters
} // End namespace Foam
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#endif
// ************************************************************************* //