Arcane  v3.16.4.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
ITimeHistoryCurveWriter2.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2025 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/* ITimeHistoryCurveWriter2.h (C) 2000-2025 */
9/* */
10/* Interface d'un écrivain d'une courbe d'un historique (Version 2). */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_CORE_ITIMEHISTORYCURVEWRITER2_H
13#define ARCANE_CORE_ITIMEHISTORYCURVEWRITER2_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
18#include "arcane/utils/ArrayView.h"
19#include "arcane/utils/String.h"
20
21/*
22 * \brief Indique si on autorise l'accès aux membres privés.
23 * Par défaut (mars 2016) on laisse l'accès pour des raisons de compatibilité,
24 * mais il faudra le supprimer.
25 */
26#define ARCANE_ALLOW_CURVE_WRITER_PRIVATE_ACCESS 1
27#ifdef SWIG
28#undef ARCANE_ALLOW_CURVE_WRITER_PRIVATE_ACCESS
29#endif
30
31/*---------------------------------------------------------------------------*/
32/*---------------------------------------------------------------------------*/
33
34namespace Arcane
35{
36
37/*---------------------------------------------------------------------------*/
38/*---------------------------------------------------------------------------*/
39/*!
40 * \brief Informations pour l'écriture d'une courbe.
41 */
42class TimeHistoryCurveInfo
43{
44 public:
45
46 TimeHistoryCurveInfo(const String& aname, Int32ConstArrayView aiterations,
47 RealConstArrayView avalues, Integer sub_size)
48 : m_name(aname)
49 , m_support()
50 , m_has_support(false)
51 , m_iterations(aiterations)
52 , m_values(avalues)
53 , m_sub_size(sub_size)
54 , m_sub_domain(-1)
55 {}
56
57 TimeHistoryCurveInfo(const String& aname, Int32ConstArrayView aiterations,
58 RealConstArrayView avalues, Integer sub_size, Integer sub_domain)
59 : m_name(aname)
60 , m_support()
61 , m_has_support(false)
62 , m_iterations(aiterations)
63 , m_values(avalues)
64 , m_sub_size(sub_size)
65 , m_sub_domain(sub_domain)
66 {}
67
68 TimeHistoryCurveInfo(const String& aname, const String& asupport, Int32ConstArrayView aiterations,
69 RealConstArrayView avalues, Integer sub_size)
70 : m_name(aname)
71 , m_support(asupport)
72 , m_has_support(true)
73 , m_iterations(aiterations)
74 , m_values(avalues)
75 , m_sub_size(sub_size)
76 , m_sub_domain(-1)
77 {}
78
79 TimeHistoryCurveInfo(const String& aname, const String& asupport, Int32ConstArrayView aiterations,
80 RealConstArrayView avalues, Integer sub_size, Integer sub_domain)
81 : m_name(aname)
82 , m_support(asupport)
83 , m_has_support(true)
84 , m_iterations(aiterations)
85 , m_values(avalues)
86 , m_sub_size(sub_size)
87 , m_sub_domain(sub_domain)
88 {}
89
90 public:
91
92 //! Nom de la courbe
93 const String& name() const { return m_name; }
94 const String& support() const { return m_support; }
95 bool hasSupport() const { return m_has_support; }
96 //! Liste des itérations
97 Int32ConstArrayView iterations() const { return m_iterations; }
98 //! Liste des valeurs de la courbe
99 RealConstArrayView values() const { return m_values; }
100 //! Nombre de valeur par temps
101 Integer subSize() const { return m_sub_size; }
102 // TODO nom pas terrible
103 Integer subDomain() const { return m_sub_domain; }
104
105#if ARCANE_ALLOW_CURVE_WRITER_PRIVATE_ACCESS
106 public:
107
108#else
109 private:
110#endif
111 String m_name;
112 String m_support;
113 bool m_has_support = false;
114 Int32ConstArrayView m_iterations;
115 RealConstArrayView m_values;
116 Integer m_sub_size = 0;
117 Integer m_sub_domain = 0;
118};
119
120/*---------------------------------------------------------------------------*/
121/*---------------------------------------------------------------------------*/
122/*!
123 * \brief Informations sur l'écriture des courbes.
124 */
125class TimeHistoryCurveWriterInfo
126{
127 public:
128
129 TimeHistoryCurveWriterInfo(const String& apath, RealConstArrayView atimes)
130 : m_path(apath)
131 , m_times(atimes)
132 {}
133
134 public:
135
136 /*!
137 * \brief Chemin ou écrire les données (sauf si surchargé spécifiquement
138 * par le service via ITimeHistoryCurveWriter2::setOutputPath())
139 */
140 String path() const { return m_path; }
141 //! Liste des temps
142 RealConstArrayView times() const { return m_times; }
143
144#if ARCANE_ALLOW_CURVE_WRITER_PRIVATE_ACCESS
145 public:
146
147#else
148 private:
149#endif
150 String m_path;
151 RealConstArrayView m_times;
152};
153
154/*---------------------------------------------------------------------------*/
155/*---------------------------------------------------------------------------*/
156/*!
157 * \ingroup StandardService
158 * \brief Interface d'un écrivain d'une courbe.
159 *
160 * Lors de l'écriture des courbes, l'instance sera appelée comme suit:
161 * \code
162 * ITimeHistoryCurveWriter2* instance = ...;
163 * instance->beginWrite();
164 * for( const TimeHistoryCurveInfo& curveinfo : all_curves )
165 * instance->writeCurve(curveinfo);
166 * instance->endWrite()
167 * \endcode
168 */
169class ARCANE_CORE_EXPORT ITimeHistoryCurveWriter2
170{
171 public:
172
173 //! Libère les ressources
174 virtual ~ITimeHistoryCurveWriter2() = default;
175
176 public:
177
178 virtual void build() = 0;
179
180 /*!
181 * \brief Notifie un début d'écriture.
182 */
183 virtual void beginWrite(const TimeHistoryCurveWriterInfo& infos) = 0;
184
185 /*!
186 * \brief Notifie la fin de l'écriture.
187 */
188 virtual void endWrite() = 0;
189
190 /*!
191 * \brief Ecrit une courbe.
192 *
193 * Les infos de la courbe sont données par \a infos
194 * Les valeurs sont dans le tableau \a values. \a times et \a iterations
195 * contiennent respectivement le temps et le numéro de l'itération pour
196 * chaque valeur.
197 * \a path contient le répertoire où seront écrites les courbes
198 */
199 virtual void writeCurve(const TimeHistoryCurveInfo& infos) = 0;
200
201 //! Nom de l'écrivain
202 virtual String name() const = 0;
203
204 /*!
205 * \brief Répertoire de base où seront écrites les courbes.
206 *
207 * Si nul, c'est le répertoire spécifié lors de beginWrite()
208 * qui est utilisé.
209 */
210 virtual void setOutputPath(const String& path) = 0;
211
212 //! Répertoire de base où seront écrites les courbes.
213 virtual String outputPath() const = 0;
214};
215
216/*---------------------------------------------------------------------------*/
217/*---------------------------------------------------------------------------*/
218
219} // namespace Arcane
220
221/*---------------------------------------------------------------------------*/
222/*---------------------------------------------------------------------------*/
223
224#endif
Déclarations des types utilisés dans Arcane.
Interface d'un écrivain d'une courbe.
virtual ~ITimeHistoryCurveWriter2()=default
Libère les ressources.
virtual void setOutputPath(const String &path)=0
Répertoire de base où seront écrites les courbes.
virtual String name() const =0
Nom de l'écrivain.
virtual void endWrite()=0
Notifie la fin de l'écriture.
virtual void beginWrite(const TimeHistoryCurveWriterInfo &infos)=0
Notifie un début d'écriture.
virtual String outputPath() const =0
Répertoire de base où seront écrites les courbes.
virtual void writeCurve(const TimeHistoryCurveInfo &infos)=0
Ecrit une courbe.
Chaîne de caractères unicode.
Informations pour l'écriture d'une courbe.
Int32ConstArrayView iterations() const
Liste des itérations.
const String & name() const
Nom de la courbe.
RealConstArrayView values() const
Liste des valeurs de la courbe.
Integer subSize() const
Nombre de valeur par temps.
Informations sur l'écriture des courbes.
String path() const
Chemin ou écrire les données (sauf si surchargé spécifiquement par le service via ITimeHistoryCurveWr...
RealConstArrayView times() const
Liste des temps.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
Int32 Integer
Type représentant un entier.
ConstArrayView< Int32 > Int32ConstArrayView
Equivalent C d'un tableau à une dimension d'entiers 32 bits.
Definition UtilsTypes.h:569
ConstArrayView< Real > RealConstArrayView
Equivalent C d'un tableau à une dimension de réels.
Definition UtilsTypes.h:575