Arcane  v3.14.10.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
hdf5/Hdf5MpiReaderWriter.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2023 CEA (www.cea.fr) IFPEN (www.ifpenergiesnouvelles.com)
4// See the top-level COPYRIGHT file for details.
5// SPDX-License-Identifier: Apache-2.0
6//-----------------------------------------------------------------------------
7/*---------------------------------------------------------------------------*/
8/* Hdf5MpiReaderWriter.h (C) 2000-2023 */
9/* */
10/* Outils de lecture/écriture dans un fichier HDF5. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_HDF5_HDF5MPIREADERWRITER_H
13#define ARCANE_HDF5_HDF5MPIREADERWRITER_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/IDataReader.h"
18#include "arcane/IDataWriter.h"
19
20#include "arcane/hdf5/Hdf5Utils.h"
21#include "arcane/VariableTypes.h"
22
23#include <map>
24
25/*---------------------------------------------------------------------------*/
26/*---------------------------------------------------------------------------*/
27
28namespace Arcane
29{
30
31/*---------------------------------------------------------------------------*/
32/*---------------------------------------------------------------------------*/
33
42: public TraceAccessor
43, public IDataReader
44, public IDataWriter
45{
46 public:
47
48 enum eOpenMode
49 {
50 OpenModeRead,
51 OpenModeTruncate,
52 OpenModeAppend
53 };
54 public:
55
57 Integer fileset_size,eOpenMode om,bool do_verif=false);
59
60 public:
61
62 virtual void initialize();
63
64 virtual void beginWrite(const VariableCollection& vars);
65 virtual void endWrite();
66 virtual void beginRead(const VariableCollection&) {}
67 virtual void endRead() {}
68
69 virtual void setMetaData(const String& meta_data);
70 virtual String metaData();
71
72 virtual void write(IVariable* v,IData* data);
73 virtual void read(IVariable* v,IData* data);
74
75 public:
76
77 herr_t iterateMe(hid_t group_id,const char* member_name);
78
79 private:
80
82 {
83 public:
85 : m_offset(offset), m_total_size(total_size), m_all_sizes(all_sizes)
86 {
87 }
88 public:
89 Int64 m_offset;
90 Int64 m_total_size;
91 SharedArray<Int64> m_all_sizes;
92 };
93
96 eOpenMode m_open_mode;
100
102
106
108 Timer m_io_timer;
109 Timer m_write_timer;
110
111 typedef std::map<String,VarOffset> OffsetMap;
112 OffsetMap m_variables_offset;
113
114 private:
115
118 Int32 m_my_rank;
119 Int32 m_send_rank;
120 Int32 m_last_recv_rank;
121
122 Integer m_fileset_size;
123
124 private:
125
126 void _writeVal(const String& var_group_name,const String& sub_group_name,
127 const ISerializedData* sdata);
128 void _writeValParallel(IVariable* v,const ISerializedData* sdata);
129 void _readVal(IVariable* var,IData* data);
130
131 Ref<ISerializedData> _readDim2(IVariable* v);
132
133 void _directReadVal(IVariable* v,IData* data);
134 void _directWriteVal(IVariable* v,IData* data);
135 void _checkValid();
136 String _variableGroupName(IVariable* var);
137
138 void _receiveRemoteVariables();
139 void _writeRemoteVariable(ISerializer* sb);
140 void _setMetaData(const String& meta_data,const String& sub_group_name);
141};
142
143/*---------------------------------------------------------------------------*/
144/*---------------------------------------------------------------------------*/
145
146} // End namespace Arcane
147
148/*---------------------------------------------------------------------------*/
149/*---------------------------------------------------------------------------*/
150
151#endif
Lecture/Ecriture au format HDF5 parallele.
bool m_is_parallel
Mode parallèle actif: ATTENTION: en cours de test uniquement.
IParallelMng * m_parallel_mng
Gestionnaire du parallélisme;.
Hdf5Utils::HFile m_file_id
Identifiant HDF du fichier.
virtual void write(IVariable *v, IData *data)
Ecrit les données data de la variable var.
Hdf5Utils::HGroup m_sub_group_id
Identifiant HDF du groupe contenant la protection.
virtual String metaData()
Méta-données.
virtual void read(IVariable *v, IData *data)
Lit les données data de la variable var.
Hdf5Utils::HGroup m_variable_group_id
Identifiant HDF du groupe contenant les variables.
bool m_is_initialized
Vrai si déjà initialisé
virtual void setMetaData(const String &meta_data)
Positionne les infos des méta-données.
ISubDomain * m_sub_domain
Gestionnaire du sous-domaine.
StringList m_variables_name
Liste des noms des variables sauvées.
eOpenMode m_open_mode
Mode d'ouverture.
Encapsule un hid_t pour un fichier.
Encapsule un hid_t pour un groupe.
Définition des types standards Arcane pour hdf5.
Interface de lecture des données d'une variable.
Definition IDataReader.h:41
Interface d'écriture des données d'une variable.
Definition IDataWriter.h:49
Interface d'une donnée.
Definition IData.h:33
Interface du gestionnaire de parallélisme pour un sous-domaine.
Interface d'une donnée sérialisée.
Interface du gestionnaire d'un sous-domaine.
Definition ISubDomain.h:74
Interface d'une variable.
Definition IVariable.h:54
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Definition Lima.cc:120
Gestion d'un timer.
Definition Timer.h:62
Collection de variables.
Chaîne de caractères unicode.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-