Arcane  4.1.12.0
Developer documentation
Loading...
Searching...
No Matches
Arcane::Hdf5ReaderWriter Class Reference

Reading/Writing in HDF5 format. More...

#include <arcane/hdf5/Hdf5ReaderWriter.h>

Inheritance diagram for Arcane::Hdf5ReaderWriter:
Collaboration diagram for Arcane::Hdf5ReaderWriter:

Public Types

enum  eOpenMode { OpenModeRead , OpenModeTruncate , OpenModeAppend }

Public Member Functions

 Hdf5ReaderWriter (ISubDomain *sd, const String &filename, const String &m_sub_group_name, Integer fileset_size, Integer write_index, Integer index_modulo, eOpenMode om, bool do_verif=false)
virtual void initialize ()
virtual void beginWrite (const VariableCollection &vars)
virtual void endWrite ()
virtual void beginRead (const VariableCollection &vars)
virtual void endRead ()
virtual void setMetaData (const String &meta_data)
 Sets the metadata information.
virtual String metaData ()
 Metadata.
virtual void write (IVariable *v, IData *data)
 Writes the data data of the variable var.
virtual void read (IVariable *v, IData *data)
 Reads the data data of the variable var.
herr_t iterateMe (hid_t group_id, const char *member_name)
Public Member Functions inherited from Arcane::TraceAccessor
 TraceAccessor (ITraceMng *m)
 Constructs an accessor via the trace manager m.
 TraceAccessor (const TraceAccessor &rhs)
 Copy constructor.
TraceAccessoroperator= (const TraceAccessor &rhs)
 Copy assignment operator.
virtual ~TraceAccessor ()
 Frees resources.
ITraceMngtraceMng () const
 Trace manager.
TraceMessage info () const
 Flow for an information message.
TraceMessage pinfo () const
 Flow for a parallel information message.
TraceMessage info (char category) const
 Flow for an information message of a given category.
TraceMessage pinfo (char category) const
 Flow for a parallel information message of a given category.
TraceMessage info (bool v) const
 Flow for an information message.
TraceMessage warning () const
 Flow for a warning message.
TraceMessage pwarning () const
TraceMessage error () const
 Flow for an error message.
TraceMessage perror () const
TraceMessage log () const
 Flow for a log message.
TraceMessage plog () const
 Flow for a log message.
TraceMessage logdate () const
 Flow for a log message preceded by the date.
TraceMessage fatal () const
 Flow for a fatal error message.
TraceMessage pfatal () const
 Flow for a parallel fatal error message.
TraceMessageDbg debug (Trace::eDebugLevel=Trace::Medium) const
 Flow for a debug message.
Trace::eDebugLevel configDbgLevel () const
 Debug level of the configuration file.
TraceMessage info (Int32 verbose_level) const
 Flow for an information message of a given level.
TraceMessage linfo () const
 Flow for an information message with the local information level of this instance.
TraceMessage linfo (Int32 relative_level) const
 Flow for an information message with the local information level of this instance.
void fatalMessage (const StandaloneTraceMessage &o) const
Public Member Functions inherited from Arcane::IDataReader
virtual ~IDataReader ()=default
 Frees resources.
Public Member Functions inherited from Arcane::IDataWriter
virtual ~IDataWriter ()=default
 Frees resources.

Private Member Functions

void _writeVal (const String &var_group_name, const String &sub_group_name, const ISerializedData *sdata, const Int32 from_rank=0)
void _writeValParallel (IVariable *v, const ISerializedData *sdata)
 Parallel writing.
void _readVal (IVariable *var, IData *data)
Ref< ISerializedData_readDim2 (IVariable *v)
void _directReadVal (IVariable *v, IData *data)
void _directWriteVal (IVariable *v, IData *data)
void _checkValid ()
String _variableGroupName (IVariable *var)
void _receiveRemoteVariables ()
void _writeRemoteVariable (ISerializer *sb)
void _setMetaData (const String &meta_data, const String &sub_group_name)

Private Attributes

IParallelMngm_parallel_mng
 Parallelism manager;.
eOpenMode m_open_mode
 Open mode.
String m_filename
 Filename.
String m_sub_group_name
 Subgroup name.
bool m_is_initialized
 True if already initialized.
Hdf5Utils::StandardTypes m_types
Hdf5Utils::HFile m_file_id
 HDF file identifier.
Hdf5Utils::HGroup m_sub_group_id
 HDF group identifier containing the protection.
Hdf5Utils::HGroup m_variable_group_id
 HDF group identifier containing the variables.
StringList m_variables_name
 List of names of saved variables.
Timer m_io_timer
bool m_is_parallel
 Active parallel mode: WARNING: for testing only.
Int32 m_my_rank
Int32 m_send_rank
Int32 m_last_recv_rank
Integer m_fileset_size
Integer m_index_write
Integer m_index_modulo

Additional Inherited Members

Protected Member Functions inherited from Arcane::TraceAccessor
void _setLocalVerboseLevel (Int32 v)
Int32 _localVerboseLevel () const

Detailed Description

Reading/Writing in HDF5 format.

The HDF5 version used is at least version 1.4.3.

Regarding real numbers, only double precision is supported. They are therefore stored in 8 bytes as well.

For Real2, Real2x2, Real3, and Real3x3, a composite type is used.

The structure of the saved information is as follows:

  • * all variables are saved in a group called "Variables". * .
  • * for each variable, a subgroup named after the variable is created. This subgroup contains the following attributes and datasets:
    • * An attribute named "Dims" which is an array of 1 or 2 Integer elements containing information about the sizes and dimensions of the variable. This attribute is always present and is used, among other things, to determine if the other two datasets are present. The first value (index 0) is always the number of elements in the array. If the variable is a one-dimensional array, there are no other values. If the array is two-dimensional, the second value is equal to the size of the first dimension of the array, while the sizes of the second dimensions are given by the "Dim2" attribute.
    • * A dataset named "Dim2". This dataset is only present if the variable is a two-dimensional array, when the first dimension is not zero and the number of elements is not zero. In this case, this dataset is an array of Integer type whose size is equal to the size of the first dimension of the variable, and thus each value is equal to the size of the second dimension.
    • * A dataset named "Values" containing the values of the variable. This dataset is not present in the case of an array variable whose number of elements is zero or when the variable is temporary (IVariable::PNoDump property). *
Todo
save/read the list of mesh entity groups.
Warning
* The handling of reading/writing in this format is currently at the experimental stage and cannot be used to ensure long-term data persistence.

Definition at line 76 of file hdf5/Hdf5ReaderWriter.h.

Member Enumeration Documentation

◆ eOpenMode

enum Arcane::Hdf5ReaderWriter::eOpenMode

Definition at line 84 of file hdf5/Hdf5ReaderWriter.h.

Constructor & Destructor Documentation

◆ Hdf5ReaderWriter()

Arcane::Hdf5ReaderWriter::Hdf5ReaderWriter ( ISubDomain * sd,
const String & filename,
const String & m_sub_group_name,
Integer fileset_size,
Integer write_index,
Integer index_modulo,
eOpenMode om,
bool do_verif = false )

Definition at line 94 of file Hdf5ReaderWriter.cc.

◆ ~Hdf5ReaderWriter()

Arcane::Hdf5ReaderWriter::~Hdf5ReaderWriter ( )

Definition at line 235 of file Hdf5ReaderWriter.cc.

Member Function Documentation

◆ _checkValid()

void Arcane::Hdf5ReaderWriter::_checkValid ( )
private

Definition at line 243 of file Hdf5ReaderWriter.cc.

◆ _directReadVal()

void Arcane::Hdf5ReaderWriter::_directReadVal ( IVariable * v,
IData * data )
private

Definition at line 290 of file Hdf5ReaderWriter.cc.

◆ _directWriteVal()

void Arcane::Hdf5ReaderWriter::_directWriteVal ( IVariable * v,
IData * data )
private

Definition at line 301 of file Hdf5ReaderWriter.cc.

◆ _readDim2()

Ref< ISerializedData > Arcane::Hdf5ReaderWriter::_readDim2 ( IVariable * v)
private

Definition at line 469 of file Hdf5ReaderWriter.cc.

◆ _readVal()

void Arcane::Hdf5ReaderWriter::_readVal ( IVariable * var,
IData * data )
private

Definition at line 603 of file Hdf5ReaderWriter.cc.

◆ _receiveRemoteVariables()

void Arcane::Hdf5ReaderWriter::_receiveRemoteVariables ( )
private

Definition at line 777 of file Hdf5ReaderWriter.cc.

◆ _setMetaData()

void Arcane::Hdf5ReaderWriter::_setMetaData ( const String & meta_data,
const String & sub_group_name )
private

Definition at line 683 of file Hdf5ReaderWriter.cc.

◆ _variableGroupName()

String Arcane::Hdf5ReaderWriter::_variableGroupName ( IVariable * var)
private

Definition at line 254 of file Hdf5ReaderWriter.cc.

◆ _writeRemoteVariable()

void Arcane::Hdf5ReaderWriter::_writeRemoteVariable ( ISerializer * sb)
private

Definition at line 802 of file Hdf5ReaderWriter.cc.

◆ _writeVal()

void Arcane::Hdf5ReaderWriter::_writeVal ( const String & var_group_name,
const String & sub_group_name,
const ISerializedData * sdata,
const Int32 from_rank = 0 )
private

Definition at line 338 of file Hdf5ReaderWriter.cc.

◆ _writeValParallel()

void Arcane::Hdf5ReaderWriter::_writeValParallel ( IVariable * v,
const ISerializedData * sdata )
private

Parallel writing.

Warning
Under test, not usable.

< Group name.

< Group name.

Definition at line 267 of file Hdf5ReaderWriter.cc.

References Arcane::BasicSerializer::allocateBuffer(), Arcane::DT_Int32, Arcane::IVariable::fullName(), m_parallel_mng, m_sub_group_name, Arcane::ISerializer::ModePut, Arcane::BasicSerializer::put(), Arcane::BasicSerializer::putInt32(), Arcane::BasicSerializer::reserve(), Arcane::ISerializedData::serialize(), and Arcane::BasicSerializer::setMode().

Here is the call graph for this function:

◆ beginRead()

virtual void Arcane::Hdf5ReaderWriter::beginRead ( const VariableCollection & vars)
inlinevirtual

Implements Arcane::IDataReader.

Definition at line 108 of file hdf5/Hdf5ReaderWriter.h.

◆ beginWrite()

virtual void Arcane::Hdf5ReaderWriter::beginWrite ( const VariableCollection & vars)
inlinevirtual

Implements Arcane::IDataWriter.

Definition at line 103 of file hdf5/Hdf5ReaderWriter.h.

◆ endRead()

virtual void Arcane::Hdf5ReaderWriter::endRead ( )
inlinevirtual

Implements Arcane::IDataReader.

Definition at line 112 of file hdf5/Hdf5ReaderWriter.h.

◆ endWrite()

void Arcane::Hdf5ReaderWriter::endWrite ( )
virtual

Implements Arcane::IDataWriter.

Definition at line 750 of file Hdf5ReaderWriter.cc.

◆ initialize()

void Arcane::Hdf5ReaderWriter::initialize ( )
virtual

Definition at line 138 of file Hdf5ReaderWriter.cc.

◆ iterateMe()

herr_t Arcane::Hdf5ReaderWriter::iterateMe ( hid_t group_id,
const char * member_name )

Definition at line 327 of file Hdf5ReaderWriter.cc.

◆ metaData()

String Arcane::Hdf5ReaderWriter::metaData ( )
virtual

Metadata.

Implements Arcane::IDataReader.

Definition at line 719 of file Hdf5ReaderWriter.cc.

References Arcane::Array< T >::data(), and m_sub_group_id.

Here is the call graph for this function:

◆ read()

void Arcane::Hdf5ReaderWriter::read ( IVariable * var,
IData * data )
virtual

Reads the data data of the variable var.

Implements Arcane::IDataReader.

Definition at line 635 of file Hdf5ReaderWriter.cc.

◆ setMetaData()

void Arcane::Hdf5ReaderWriter::setMetaData ( const String & meta_data)
virtual

Sets the metadata information.

Implements Arcane::IDataWriter.

Definition at line 644 of file Hdf5ReaderWriter.cc.

References Arcane::BasicSerializer::allocateBuffer(), Arcane::BasicSerializer::get(), m_is_parallel, m_parallel_mng, m_sub_group_name, Arcane::ISerializer::ModeGet, Arcane::ISerializer::ModePut, Arcane::BasicSerializer::put(), Arcane::BasicSerializer::reserve(), and Arcane::BasicSerializer::setMode().

Here is the call graph for this function:

◆ write()

void Arcane::Hdf5ReaderWriter::write ( IVariable * var,
IData * data )
virtual

Writes the data data of the variable var.

Implements Arcane::IDataWriter.

Definition at line 594 of file Hdf5ReaderWriter.cc.

Member Data Documentation

◆ m_file_id

Hdf5Utils::HFile Arcane::Hdf5ReaderWriter::m_file_id
private

HDF file identifier.

Definition at line 134 of file hdf5/Hdf5ReaderWriter.h.

◆ m_filename

String Arcane::Hdf5ReaderWriter::m_filename
private

Filename.

Definition at line 128 of file hdf5/Hdf5ReaderWriter.h.

◆ m_fileset_size

Integer Arcane::Hdf5ReaderWriter::m_fileset_size
private

Definition at line 149 of file hdf5/Hdf5ReaderWriter.h.

◆ m_index_modulo

Integer Arcane::Hdf5ReaderWriter::m_index_modulo
private

Definition at line 151 of file hdf5/Hdf5ReaderWriter.h.

◆ m_index_write

Integer Arcane::Hdf5ReaderWriter::m_index_write
private

Definition at line 150 of file hdf5/Hdf5ReaderWriter.h.

◆ m_io_timer

Timer Arcane::Hdf5ReaderWriter::m_io_timer
private

Definition at line 139 of file hdf5/Hdf5ReaderWriter.h.

◆ m_is_initialized

bool Arcane::Hdf5ReaderWriter::m_is_initialized
private

True if already initialized.

Definition at line 130 of file hdf5/Hdf5ReaderWriter.h.

◆ m_is_parallel

bool Arcane::Hdf5ReaderWriter::m_is_parallel
private

Active parallel mode: WARNING: for testing only.

Definition at line 144 of file hdf5/Hdf5ReaderWriter.h.

Referenced by setMetaData().

◆ m_last_recv_rank

Int32 Arcane::Hdf5ReaderWriter::m_last_recv_rank
private

Definition at line 147 of file hdf5/Hdf5ReaderWriter.h.

◆ m_my_rank

Int32 Arcane::Hdf5ReaderWriter::m_my_rank
private

Definition at line 145 of file hdf5/Hdf5ReaderWriter.h.

◆ m_open_mode

eOpenMode Arcane::Hdf5ReaderWriter::m_open_mode
private

Open mode.

Definition at line 127 of file hdf5/Hdf5ReaderWriter.h.

◆ m_parallel_mng

IParallelMng* Arcane::Hdf5ReaderWriter::m_parallel_mng
private

Parallelism manager;.

Definition at line 126 of file hdf5/Hdf5ReaderWriter.h.

Referenced by _writeValParallel(), and setMetaData().

◆ m_send_rank

Int32 Arcane::Hdf5ReaderWriter::m_send_rank
private

Definition at line 146 of file hdf5/Hdf5ReaderWriter.h.

◆ m_sub_group_id

Hdf5Utils::HGroup Arcane::Hdf5ReaderWriter::m_sub_group_id
private

HDF group identifier containing the protection.

Definition at line 135 of file hdf5/Hdf5ReaderWriter.h.

Referenced by metaData().

◆ m_sub_group_name

String Arcane::Hdf5ReaderWriter::m_sub_group_name
private

Subgroup name.

Definition at line 129 of file hdf5/Hdf5ReaderWriter.h.

Referenced by _writeValParallel(), and setMetaData().

◆ m_types

Hdf5Utils::StandardTypes Arcane::Hdf5ReaderWriter::m_types
private

Definition at line 132 of file hdf5/Hdf5ReaderWriter.h.

◆ m_variable_group_id

Hdf5Utils::HGroup Arcane::Hdf5ReaderWriter::m_variable_group_id
private

HDF group identifier containing the variables.

Definition at line 136 of file hdf5/Hdf5ReaderWriter.h.

◆ m_variables_name

StringList Arcane::Hdf5ReaderWriter::m_variables_name
private

List of names of saved variables.

Definition at line 138 of file hdf5/Hdf5ReaderWriter.h.


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