12#ifndef ARCANE_IMPL_INTERNAL_TIMEHISTORYMNGINTERNAL_H
13#define ARCANE_IMPL_INTERNAL_TIMEHISTORYMNGINTERNAL_H
17#include "arcane/utils/Iostream.h"
18#include "arcane/utils/Iterator.h"
19#include "arcane/utils/ScopedPtr.h"
20#include "arcane/utils/ITraceMng.h"
21#include "arcane/utils/PlatformUtils.h"
22#include "arcane/utils/OStringStream.h"
24#include "arcane/core/IIOMng.h"
25#include "arcane/core/CommonVariables.h"
26#include "arcane/core/Directory.h"
27#include "arcane/core/ObserverPool.h"
28#include "arcane/core/IVariableMng.h"
29#include "arcane/core/IParallelMng.h"
30#include "arcane/core/ITimeHistoryCurveWriter2.h"
31#include "arcane/core/ITimeHistoryTransformer.h"
32#include "arcane/core/XmlNode.h"
33#include "arcane/core/XmlNodeList.h"
34#include "arcane/core/IXmlDocumentHolder.h"
35#include "arcane/core/ServiceBuilder.h"
36#include "arcane/core/Properties.h"
37#include "arcane/core/IParallelReplication.h"
39#include "arcane/datatype/DataTypeTraits.h"
41#include "arcane/core/internal/ITimeHistoryMngInternal.h"
65 , m_sub_size(sub_size)
113 virtual Integer
size()
const = 0;
123 const String&
name()
const {
return m_thpi.timeHistoryAddValueArg().name(); }
131 Integer subSize()
const {
return m_sub_size; }
148 bool isLocal()
const {
return m_thpi.timeHistoryAddValueArg().isLocal(); }
155 Integer
localProcId()
const {
return m_thpi.timeHistoryAddValueArg().localProcId(); }
178template <
typename DataType>
196 static const Integer COMPRESSED_TAG = -15;
217 , m_use_compression(
false)
218 , m_shrink_history(shrink)
234 , m_use_compression(
false)
235 , m_shrink_history(shrink)
263 return m_iterations.
size();
276 Integer sub_size = values.size();
280 for (Integer i = 0; i < sub_size; ++i)
281 m_values[
nb_value - sub_size + i] = values[i];
289 for (Integer i = 0; i < sub_size; ++i)
297 for (Integer i = 0; i <
size; ++i)
316 if (m_shrink_history)
340 ci.iterations = iterations;
341 Integer sub_size = subSize();
342 ci.sub_size = subSize();
351 msg->
warning() <<
"Bad size after history transformation";
357 m_iterations[i] = iterations[i];
360 for (Integer i = 0; i <
nb_value; ++i)
361 m_values[i] = values[i];
370 Integer sub_size = subSize();
376 Integer iter = m_iterations[i];
378 for (Integer z = 0; z < sub_size; ++z) {
381 iterations.add(iter);
386 const ValueList& values()
const {
return m_values; }
387 const IterationList& iterations()
const {
return m_iterations; }
392 IterationList m_iterations;
393 bool m_use_compression;
394 bool m_shrink_history;
407 , m_trace_mng(m_variable_mng->traceMng())
408 , m_parallel_mng(m_variable_mng->parallelMng())
409 , m_common_variables(m_variable_mng)
416 , m_properties(properties)
430 m_curve_writers2.clear();
434 typedef std::map<String, TimeHistoryValue*> HistoryList;
435 typedef std::set<Ref<ITimeHistoryCurveWriter2>> CurveWriter2List;
436 typedef HistoryList::value_type HistoryValueType;
508 template <
class DataType>
573 CurveWriter2List m_curve_writers2;
#define ARCANE_FATAL(...)
Macro envoyant une exception FatalErrorException.
Variables communes d'un cas.
Classe gérant un répertoire.
Interface du gestionnaire des maillages.
Interface du gestionnaire de parallélisme pour un sous-domaine.
virtual IParallelReplication * replication() const =0
Informations sur la réplication.
virtual bool isMasterIO() const =0
true si l'instance est un gestionnaire maître des entrées/sorties.
Informations sur la réplication des sous-domaines en parallèle.
Interface du gestionnaire des propriétés.
Interface d'un écrivain d'une courbe.
Interface de la partie interne d'un gestionnaire d'historique de valeur.
Infos communes à chaque courbe.
Interface d'un objet transformant les courbes d'historiques.
virtual void transform(CommonInfo &infos, RealSharedArray values)=0
Applique la transformation pour une courbe avec des valeurs Real.
Interface du gestionnaire de variables.
Interface d'une variable.
@ PNoReplicaSync
Indique que la variable n'a pas forcément la même valeur entre les réplicas.
@ PExecutionDepend
Indique que la valeur de la variable est dépendante de l'exécution.
@ PNoRestore
Indique que la variable ne doit pas être restaurée.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Classe étendant les arguments lors d'un ajout de valeur dans un historique de valeur.
Informations pour l'écriture d'une courbe.
Informations sur l'écriture des courbes.
RealConstArrayView times() const
Liste des temps.
void setIOMasterWriteOnly(bool is_active) override
Méthode permettant de définir si seul le processus maitre appelle les écrivains.
bool isShrinkActive() const override
Retourne un booléen indiquant si l'historique est compressé
void updateMetaData() override
Méthode permettant de mettre à jour les méta-données des courbes.
bool m_is_master_io
True si je suis le gestionnaire actif.
bool m_is_shrink_active
Indique si la compression de l'historique est active.
void addNowInGlobalTime() override
Méthode permettant d'ajouter le GlobalTime actuel au tableau des GlobalTimes.
bool isMasterIO() override
Méthode permettant de savoir si notre processus est l'écrivain.
void addValue(const TimeHistoryAddValueArgInternal &thpi, Real value) override
Méthode permettant d'ajouter une valeur à un historique.
void _dumpSummaryOfCurves()
Méthode permettant de sortir un fichier JSON avec le nom de chaque courbe sortie en format GNUPLOT ai...
void addValue(const TimeHistoryAddValueArgInternal &thpi, Int32 value) override
Méthode permettant d'ajouter une valeur à un historique.
void _removeCurveWriter(const Ref< ITimeHistoryCurveWriter2 > &writer)
Méthode permettant de retirer un écrivain.
void updateGlobalTimeCurve() override
Méthode permettant de copier le tableau de GlobalTime dans la variable globale GlobalTime.
void resizeArrayAfterRestore() override
Méthode permettant de redimensionner les tableaux de valeurs après une reprise.
void addObservers(IPropertyMng *prop_mng) override
Méthode permettant de rajouter les observers sauvegardant l'historique avant une protection.
bool isDumpActive() const override
Indique l'état d'activation des sorties.
bool m_is_dump_active
Indique si les dump sont actifs.
void removeCurveWriter(const String &name) override
Méthode permettant de retirer un écrivain.
void readVariables(IMeshMng *mesh_mng, IMesh *default_mesh) override
Méthode permettant de récupérer les courbes précédemment écrites lors d'une reprise.
void setDumpActive(bool is_active) override
Positionne l'état d'activation des sorties.
void addValue(const TimeHistoryAddValueArgInternal &thpi, Int32ConstArrayView values) override
Méthode permettant d'ajouter des valeurs à un historique.
void dumpHistory() override
Méthode permettant d'écrire toutes les courbes à l'aide de tous les writers enregistrés.
void _dumpSummaryOfCurvesLegacy()
Méthode permettant de sortir un fichier XML avec le nom de chaque courbe sortie en format GNUPLOT.
void addValue(const TimeHistoryAddValueArgInternal &thpi, Int64ConstArrayView values) override
Méthode permettant d'ajouter des valeurs à un historique.
HistoryList m_history_list
Liste des historiques.
void _addHistoryValue(const TimeHistoryAddValueArgInternal &thpi, ConstArrayView< DataType > values)
Méthode permettant d'ajouter des valeurs à un historique de valeurs.
VariableArrayReal m_th_global_time
Tableau des instants de temps.
bool isNonIOMasterCurvesEnabled() override
Méthode permettant de savoir si tous les processus peuvent avoir un historique de valeurs.
bool m_enable_non_io_master_curves
Indique si l'ecriture de courbes par des procs non io_master est possible.
void _dumpCurvesAllWriters()
Méthode permettant de sortir toutes les courbes avec tous les writers.
void setActive(bool is_active) override
Positionne l'état d'activation.
void applyTransformation(ITimeHistoryTransformer *v) override
Applique la transformation v à l'ensemble des courbes.
void iterationsAndValues(const TimeHistoryAddValueArgInternal &thpi, UniqueArray< Int32 > &iterations, UniqueArray< Real > &values) override
Méthode permettant de sortir les itérations et les valeurs d'un historique.
void dumpCurves(ITimeHistoryCurveWriter2 *writer) override
Méthode permettant d"écrire les courbes à l'aide du writer fourni.
bool m_io_master_write_only
Indique si les writers doivent être appelé par tous les processus.
bool isIOMasterWriteOnly() override
Méthode permettant de savoir s'il n'y a que le processus maitre qui appelle les écrivains.
bool active() const override
Indique l'état d'activation.
void addValue(const TimeHistoryAddValueArgInternal &thpi, RealConstArrayView values) override
Méthode permettant d'ajouter des valeurs à un historique.
void _saveProperties()
Méthode permettant de sauver les propriétés des metadatas.
void addValue(const TimeHistoryAddValueArgInternal &thpi, Int64 value) override
Méthode permettant d'ajouter une valeur à un historique.
void setShrinkActive(bool is_active) override
Positionne le booléen indiquant si l'historique est compressé
VariableScalarString m_th_meta_data
Infos des historiques.
void _fromLegacyFormat(IMesh *default_mesh)
Méthode permettant de convertir l'ancien format vers le nouveau.
void editOutputPath(const Directory &directory) override
Méthode permettant de changer le répertoire de sortie des courbes.
void _destroyAll()
Destructeur.
RealUniqueArray m_global_times
Liste des temps globaux.
bool m_is_active
Indique si le service est actif.
void addCurveWriter(Ref< ITimeHistoryCurveWriter2 > writer) override
Méthode permettant d'ajouter un écrivain pour la sortie des courbes.
Historique de valeurs du type T.
TimeHistoryValueT(const TimeHistoryAddValueArgInternal &thpi, Integer index, Integer nb_element, bool shrink)
Constructeur permettant de construire un historique de valeur lié à un maillage.
void applyTransformation(ITraceMng *msg, ITimeHistoryTransformer *v) override
Méthode permettant d'appliquer une transformation sur les valeurs de l'historique de valeur.
Integer size() const override
Méthode permettant de récupérer le nombre de valeurs enregistrées.
void dumpValues(ITraceMng *msg, ITimeHistoryCurveWriter2 *writer, const TimeHistoryCurveWriterInfo &infos) const override
Imprime les valeurs de l'historique avec l'écrivain writer.
void addValue(ConstArrayView< DataType > values, Integer iteration)
Méthode permettant d'ajouter des valeurs à une itération.
void removeAfterIteration(Integer last_iteration) override
Méthode permettant de retirer toutes les valeurs après une certaine itération.
void arrayToWrite(UniqueArray< Int32 > &iterations, UniqueArray< Real > &values, const TimeHistoryCurveWriterInfo &infos) const override
Méthode permettant de récupérer les itérations et les valeurs d'un historique de valeur.
TimeHistoryValueT(IVariableMng *vm, const TimeHistoryAddValueArgInternal &thpi, Integer index, Integer nb_element, bool shrink)
Constructeur permettant de construire un historique de valeur non lié à un maillage.
void fromOldToNewVariables(IVariableMng *vm, IMesh *default_mesh) override
Méthode permettant de convertir les variables d'anciennes sauvegardes vers le nouveau format.
Classe de base d'un historique de valeurs.
Integer index() const
Index de l'historique dans la liste.
virtual Integer size() const =0
Méthode permettant de récupérer le nombre de valeurs enregistrées.
const MeshHandle & meshHandle() const
Méthode permettant de récupérer le MeshHandle enregistré.
virtual void removeAfterIteration(Integer last_iteration)=0
Méthode permettant de retirer toutes les valeurs après une certaine itération.
const String & name() const
Nom de l'historique.
eDataType dataType() const
Type de données de l'historique.
virtual void applyTransformation(ITraceMng *msg, ITimeHistoryTransformer *v)=0
Méthode permettant d'appliquer une transformation sur les valeurs de l'historique de valeur.
Integer m_index
Index de l'historique dans la liste.
virtual void fromOldToNewVariables(IVariableMng *vm, IMesh *default_mesh)=0
Méthode permettant de convertir les variables d'anciennes sauvegardes vers le nouveau format.
virtual ~TimeHistoryValue()=default
Libére les ressources.
Integer localProcId() const
Méthode permettant de récupérer l'id du sous-domaine à qui appartient cet historique.
virtual void arrayToWrite(UniqueArray< Int32 > &iterations, UniqueArray< Real > &values, const TimeHistoryCurveWriterInfo &infos) const =0
Méthode permettant de récupérer les itérations et les valeurs d'un historique de valeur.
bool isLocal() const
Méthode permettant de savoir si c'est un historique global ou local à un sous-domaine.
eDataType m_data_type
Type de la donnée.
virtual void dumpValues(ITraceMng *msg, ITimeHistoryCurveWriter2 *writer, const TimeHistoryCurveWriterInfo &infos) const =0
Imprime les valeurs de l'historique avec l'écrivain writer.
Paramètres nécessaires à la construction d'une variable.
virtual void resizeWithReserve(Integer new_size, Integer nb_additional)
Redimensionne le tableau pour contenir new_size éléments.
virtual void resize(Integer new_size)
Redimensionne le tableau pour contenir new_size éléments.
constexpr Integer size() const noexcept
Retourne la taille du tableau.
void copy(const U ©_array)
Recopie le tableau copy_array dans l'instance.
Vue constante d'un tableau de type T.
constexpr Integer size() const noexcept
Nombre d'éléments du tableau.
Interface du gestionnaire de traces.
Chaîne de caractères unicode.
TraceMessage warning() const
Flot pour un message d'avertissement.
Vecteur 1D de données avec sémantique par valeur (style STL).
T max(const T &a, const T &b, const T &c)
Retourne le maximum de trois éléments.
Real toReal(Real r)
Converti r en un Real.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
Integer arcaneCallFunctionAndCatchException(std::function< void()> function)
eDataType
Type d'une donnée.