31#ifndef OUTPUTVTKHDF_H_
32#define OUTPUTVTKHDF_H_
42 OutputVTKHDF(std::string nameRun,
int fileNumberRestartMeshMapping,
Input* input,
const H5FD_mpio_xfer_t& transfer_mode);
46 virtual void writeResults(
Mesh* mesh, std::vector<Cell*>* cellsLvl)
override;
47 virtual void readResults(
Mesh* mesh, std::vector<Cell*>* cellsLvl,
int cpu = -1)
override;
66 int readScalarVTKHDF(hid_t group_id,
const std::string& dataset_name, std::vector<size_t>& scalar_array)
const;
77 hid_t group_id, std::string dataset_name, std::vector<double>& dataset,
const hsize_t (&local_dims)[N],
const hsize_t (&offsets)[N]);
90 Mesh* mesh, std::vector<Cell*>* cellsLvl, hid_t group_id,
const hsize_t (&count_scalar)[N],
const hsize_t (&start_scalar)[N]);
98 int ReadPhysicalDataVTKHDF(
Mesh* mesh, std::vector<Cell*>* cellsLvl, hid_t group_id,
int cpu,
const std::vector<size_t>& numberCells);
100 std::string
createFilenameVTKHDF(
const char* name,
int numFile = -1, std::string nameVariable =
"defaut")
const;
107 int openFileVTKHDF(hid_t& file_id,
bool parallel_access,
bool create)
const;
126 const std::string& dataFile,
127 const std::string& dataName,
128 const std::string& dataType,
149 int writePhysicalDataVTKHDF(hid_t& file,
const Mesh* mesh, std::vector<Cell*>* cellsLvl, hid_t& vtkhdf_group_id,
size_t numberCells)
const;
165 template <
size_t N,
typename T>
167 std::vector<Cell*>* cellsLvl,
168 hid_t vtkhdf_group_id,
170 const hsize_t (&dimsf_scalar)[N],
171 const hsize_t (&count_scalar)[N],
172 const hsize_t (&start_scalar)[N],
173 const hsize_t (&chunk_scalar)[N])
const;
186 int writeScalarVTKHDF(
const hid_t& group_id,
const std::string& dataset_name,
const size_t& scalar_val)
const;
202 const void*
getOutputBuffer(
const std::vector<double>& double_buffer, std::vector<float>& float_buffer)
const;
204 template <
typename T>
205 int writeConnectivity(
Mesh* mesh, std::vector<Cell*>* cellsLvl, hid_t& vtkhdf_group_id,
size_t& numberCells,
const size_t& numberNodes)
const;
225 template <
typename T>
227 const std::string& dataset_name,
228 hid_t hdf_file_dtype,
230 const std::vector<T>& dataset,
231 const size_t& line_count,
232 size_t column_count = 1)
const;
255 template <
size_t N,
typename T>
257 const std::string& dataset_name,
259 hid_t hdf_file_dtype,
260 hid_t parallel_x_properties,
261 const std::vector<T>& dataset,
262 const hsize_t (&global_dims)[N],
263 const hsize_t (&local_dims)[N],
264 const hsize_t (&offsets)[N],
265 const hsize_t (&chunk_dims)[N])
const;
273 int writeArrayAttribute(
const hid_t& group_id,
const std::string& attribute_name,
const hsize_t& nitem,
const int* array)
const;
281 int writeHeaderVTKHDF(
const hid_t& group_id,
const std::string& mesh_type)
const;
309 throw ErrorECOGEN(
"'writeDataset' not available for VTKHDF output format: use 'writeArrayVTKHDF' instead.");
312 static void getDataset(std::istringstream& , std::vector<double>& )
314 throw ErrorECOGEN(
"'getDataset' not available for VTKHDF output format: use 'readArrayVTKHDF' instead.");
318 virtual void writeErrorInFile(std::vector<Errors>& v,
const int& ErrorType,
const int& iteration,
bool& warn)
const override;
327 virtual void printTree(
Mesh* mesh,
const std::vector<Cell*>* cellsLvl,
int m_resumeAMRsaveFreq)
const override;
333 const std::vector<AddPhys*>& addPhys,
334 int& nbCellsTotalAMR)
override;
Abstract class for a mesh.
Definition Mesh.h:55
int writeScalarVTKHDF(const hid_t &group_id, const std::string &dataset_name, const size_t &scalar_val) const
Write a distributed scalar array using parallel HDF5.
Definition OutputVTKHDF.cpp:1404
int writeHeaderVTKHDF(const hid_t &group_id, const std::string &mesh_type) const
Write header of VTKHDF file.
Definition OutputVTKHDF.cpp:1344
void initializeProperties(const H5FD_mpio_xfer_t &transfer_mode)
Initialize fields needed by the two constructors that are provided (m_type and m_data_transfer) and a...
Definition OutputVTKHDF.cpp:148
virtual void readTree(Mesh *mesh, TypeMeshContainer< Cell * > *cellsLvl, TypeMeshContainer< Cell * > *cellsLvlGhost, TypeMeshContainer< CellInterface * > *const cellInterfacesLvl, const std::vector< AddPhys * > &addPhys, int &nbCellsTotalAMR) override
Read 'meshInfo' file that stores for each cell its subdivision status (1 if subdivided,...
Definition OutputVTKHDF.cpp:1925
virtual void writeErrorInFile(std::vector< Errors > &v, const int &ErrorType, const int &iteration, bool &warn) const override
Definition OutputVTKHDF.cpp:1834
int writeMeshUnstructuredVTKHDF(Mesh *mesh, std::vector< Cell * > *cellsLvl, hid_t &file, hid_t &vtkhdf_group_id, size_t &numberCells) const
Write unstructured mesh at VTKHDF file format.
Definition OutputVTKHDF.cpp:1764
std::string createFilenameVTKHDF(const char *name, int numFile=-1, std::string nameVariable="defaut") const
Definition OutputVTKHDF.cpp:598
static constexpr int SUCCESS_VALUE
Success value.
Definition OutputVTKHDF.h:352
hid_t m_dataset_creation_properties
Properties for hdf5 dataset creation.
Definition OutputVTKHDF.h:344
void writeDataset(std::vector< double >, std::ofstream &, TypeData) const
Definition OutputVTKHDF.h:307
int writeArrayAttribute(const hid_t &group_id, const std::string &attribute_name, const hsize_t &nitem, const int *array) const
Write array attribute in VTKHDF file.
Definition OutputVTKHDF.cpp:1308
hid_t m_h5_file_intType
Hdf5 integer type to write in file depending on the precision asked by user.
Definition OutputVTKHDF.h:338
static void unstructuredFirstRangeLayout(const size_t &line_count, hsize_t *dimsf, hsize_t *count, hsize_t *start)
Compute size, position and offset of writing area from 'line_count' and 'column_count' data.
Definition OutputVTKHDF.cpp:1533
static void getDataset(std::istringstream &, std::vector< double > &)
Definition OutputVTKHDF.h:312
int writeArrayVTKHDF(const hid_t &group_id, const std::string &dataset_name, hid_t hdf_mem_dtype, hid_t hdf_file_dtype, hid_t parallel_x_properties, const std::vector< T > &dataset, const hsize_t(&global_dims)[N], const hsize_t(&local_dims)[N], const hsize_t(&offsets)[N], const hsize_t(&chunk_dims)[N]) const
Write a N-dimensional array of C++ type T and hdf5 type hdf_type using parallel HDF5.
Definition OutputVTKHDF.cpp:1464
int writeConnectivity(Mesh *mesh, std::vector< Cell * > *cellsLvl, hid_t &vtkhdf_group_id, size_t &numberCells, const size_t &numberNodes) const
Definition OutputVTKHDF.cpp:1703
static void writeDataXDMF(std::ofstream &fileStream, const std::string &dataFile, const std::string &dataName, const std::string &dataType, int numberCellsX, int numberCellsY, int numberCellsZ, int dimData)
Write data array at XDMF format.
Definition OutputVTKHDF.cpp:739
int writeMeshRectilinearVTKHDF(Mesh *mesh, hid_t &file, hid_t &vtkhdf_group_id, size_t &numberCells)
Write cartesian mesh at VTKHDF file format.
Definition OutputVTKHDF.cpp:1588
OutputVTKHDF(std::string casTest, std::string run, tinyxml2::XMLElement *element, std::string fileName, Input *entree)
Definition OutputVTKHDF.cpp:48
void writeResultsVTKHDF(Mesh *mesh, std::vector< Cell * > *cellsLvl)
Write results at VTKHDF file format for current time step.
Definition OutputVTKHDF.cpp:662
virtual void prepareErrorFiles() const override
Definition OutputVTKHDF.cpp:1821
static constexpr int ERROR_VALUE
Error value.
Definition OutputVTKHDF.h:351
H5FD_mpio_xfer_t m_transfer_mode
Perform collective (default or H5FD_MPIO_COLLECTIVE) or independent (H5FD_MPIO_INDEPENDENT) parallel ...
Definition OutputVTKHDF.h:347
int readArrayVTKHDF(hid_t group_id, std::string dataset_name, std::vector< double > &dataset, const hsize_t(&local_dims)[N], const hsize_t(&offsets)[N])
Read an array of dimensions local_dims at offset offsets using parallel HDF5.
Definition OutputVTKHDF.cpp:288
int openFileVTKHDF(hid_t &file_id, bool parallel_access, bool create) const
Create or open a hdf5 file.
Definition OutputVTKHDF.cpp:623
hid_t m_h5_mem_intType
Hdf5 integer type in memory space: must match architecture (LE, BE) and the size of the data in memor...
Definition OutputVTKHDF.h:341
virtual void writeResults(Mesh *mesh, std::vector< Cell * > *cellsLvl) override
Definition OutputVTKHDF.cpp:208
void writeXDMF(Mesh *mesh, int numFile)
Write a XDMF file to visualize cartesian VTKHDF outputs while VTKHDF file format is not yet specified...
Definition OutputVTKHDF.cpp:757
const void * getOutputBuffer(const std::vector< double > &double_buffer, std::vector< float > &float_buffer) const
Get buffer to write at suitable format for hdf5 (float or double).
int writeUnstructuredArrayVTKHDF(const hid_t &group_id, const std::string &dataset_name, hid_t hdf_file_dtype, hid_t hdf_mem_dtype, const std::vector< T > &dataset, const size_t &line_count, size_t column_count=1) const
Write a 2-dimensional array of an unstructured mesh using parallel HDF5.
Definition OutputVTKHDF.cpp:1561
static constexpr int VTKHDF_VERSION[2]
VTKHDF format version: set to version 2.4 in .cpp file.
Definition OutputVTKHDF.h:350
hid_t m_group_creation_properties
Properties for hdf5 group creation.
Definition OutputVTKHDF.h:343
hid_t m_h5_mem_floatType
Hdf5 floating type in memory space: must match architecture (LE, BE) and the size of the data in memo...
Definition OutputVTKHDF.h:340
hid_t m_h5_file_floatType
Hdf5 floating type to write in file depending on the precision asked by user.
Definition OutputVTKHDF.h:337
int writePhysicalDataVTKHDF(hid_t &file, const Mesh *mesh, std::vector< Cell * > *cellsLvl, hid_t &vtkhdf_group_id, size_t numberCells) const
Write physical data fields at VTKHDF file format in file hdf5 object.
Definition OutputVTKHDF.cpp:1209
virtual void readResults(Mesh *mesh, std::vector< Cell * > *cellsLvl, int cpu=-1) override
Read results of a previous simulation to resume from it.
Definition OutputVTKHDF.cpp:337
int readScalarVTKHDF(hid_t group_id, const std::string &dataset_name, std::vector< size_t > &scalar_array) const
Read a scalar array using parallel HDF5.
Definition OutputVTKHDF.cpp:237
~OutputVTKHDF() override
Definition OutputVTKHDF.cpp:139
hid_t m_parallel_x_properties
Properties for hdf5 raw data transfer.
Definition OutputVTKHDF.h:345
virtual void initializeSpecificOutput() override
Definition OutputVTKHDF.cpp:176
virtual const void * getTransferMode() const override
Get transfer_mode field (collective or independent hdf5 and MPI I/O mode for raw data transfer).
Definition OutputVTKHDF.h:50
virtual void printTree(Mesh *mesh, const std::vector< Cell * > *cellsLvl, int m_resumeAMRsaveFreq) const override
Write 'meshInfo' file that stores for each cell its subdivision status (1 if subdivided,...
Definition OutputVTKHDF.cpp:1876
int ReadPhysicalDataVTKHDF(Mesh *mesh, std::vector< Cell * > *cellsLvl, hid_t group_id, const hsize_t(&count_scalar)[N], const hsize_t(&start_scalar)[N])
Read the list of ECOGEN physical data in a VTKHDF file with dimensions and offsets of area to read pr...
Definition OutputVTKHDF.cpp:447
static constexpr size_t DIM_OUTPUT
Always write 3D-coordinates in output files.
Definition OutputVTKHDF.h:349
void writeTimeseriesVTKHDF(int numFile)
Write a Paraview .series file for time series visualization of VTKHDF outputs.
Definition OutputVTKHDF.cpp:715
Output()
Default constructor for specific output without specific needs.
Definition Output.cpp:40
Definition tinyxml2.h:1148