Arcane  v3.14.10.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
CaseFunction.cc
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2022 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/* CaseFunction.cc (C) 2000-2022 */
9/* */
10/* Classe gérant une fonction du jeu de données. */
11/*---------------------------------------------------------------------------*/
12/*---------------------------------------------------------------------------*/
13
14#include "arcane/CaseFunction.h"
15
16#include "arcane/utils/ITraceMng.h"
17#include "arcane/utils/FatalErrorException.h"
18#include "arcane/utils/NotImplementedException.h"
19#include "arcane/utils/ValueConvert.h"
20#include "arcane/utils/TraceInfo.h"
21
22#include "arcane/MathUtils.h"
23
24#include "arcane/ISubDomain.h"
25
26/*---------------------------------------------------------------------------*/
27/*---------------------------------------------------------------------------*/
28
29namespace Arcane
30{
31
32/*---------------------------------------------------------------------------*/
33/*---------------------------------------------------------------------------*/
34
41
42/*---------------------------------------------------------------------------*/
43/*---------------------------------------------------------------------------*/
44
47: m_trace(info.m_trace_mng)
48, m_name(info.m_name)
49, m_param_type(info.m_param_type)
50, m_value_type(info.m_value_type)
51, m_transform_param_func(info.m_transform_param_func)
52, m_transform_value_func(info.m_transform_value_func)
53, m_deltat_coef(info.m_deltat_coef)
54{
55}
56
57/*---------------------------------------------------------------------------*/
58/*---------------------------------------------------------------------------*/
59
60CaseFunction::
61~CaseFunction()
62{
63}
64
65/*---------------------------------------------------------------------------*/
66/*---------------------------------------------------------------------------*/
67
70{
71 if (new_name.null())
72 return;
74}
75
76/*---------------------------------------------------------------------------*/
77/*---------------------------------------------------------------------------*/
78
79/*---------------------------------------------------------------------------*/
80/*---------------------------------------------------------------------------*/
81
89
90/*---------------------------------------------------------------------------*/
91/*---------------------------------------------------------------------------*/
92
100
101/*---------------------------------------------------------------------------*/
102/*---------------------------------------------------------------------------*/
103
104
105/*---------------------------------------------------------------------------*/
106/*---------------------------------------------------------------------------*/
107
113
114/*---------------------------------------------------------------------------*/
115/*---------------------------------------------------------------------------*/
116
122
123/*---------------------------------------------------------------------------*/
124/*---------------------------------------------------------------------------*/
125
127checkIfValid() const
128{
129 throw NotImplementedException(A_FUNCINFO);
130}
131
132/*---------------------------------------------------------------------------*/
133/*---------------------------------------------------------------------------*/
134
135Real CaseFunction::
136_applyValueComulTransform(Real v,Real comul) const
137{
138 return v * comul;
139}
140Integer CaseFunction::
141_applyValueComulTransform(Integer v,Integer comul) const
142{
143 return v * comul;
144}
145Real3 CaseFunction::
146_applyValueComulTransform(Real3 v,Real3 comul) const
147{
148 return v * comul;
149}
150String CaseFunction::
151_applyValueComulTransform(const String& v,const String& comul) const
152{
153 ARCANE_UNUSED(v);
154 ARCANE_UNUSED(comul);
155 ARCANE_FATAL("Invalid for type 'String'");
156}
157bool CaseFunction::
158_applyValueComulTransform(bool v,bool comul) const
159{
160 ARCANE_UNUSED(v);
161 ARCANE_UNUSED(comul);
162 ARCANE_FATAL("Invalid for type 'bool'");
163}
164
165/*---------------------------------------------------------------------------*/
166/*---------------------------------------------------------------------------*/
167
168template<typename ValueType> void CaseFunction::
169_applyValueTransform2(ValueType& value) const
170{
171 // Applique la transformation...
172 // Pour l'instant, uniquement un coefficient multiplicateur.
174 return;
175 ValueType comul = ValueType();
176 bool is_bad = builtInGetValue(comul,m_transform_value_func);
177 if (is_bad)
178 ARCANE_FATAL("Can not convert 'comul' value '{0}'",m_transform_value_func);
179 value = _applyValueComulTransform(value,comul);
180}
181
182/*---------------------------------------------------------------------------*/
183/*---------------------------------------------------------------------------*/
184
185void CaseFunction::
186_applyValueTransform(Real& value) const
187{
188 _applyValueTransform2(value);
189}
190void CaseFunction::
191_applyValueTransform(Real3& value) const
192{
193 _applyValueTransform2(value);
194}
195void CaseFunction::
196_applyValueTransform(Integer& value) const
197{
198 _applyValueTransform2(value);
199}
200void CaseFunction::
201_applyValueTransform(String& value) const
202{
203 _applyValueTransform2(value);
204}
205void CaseFunction::
206_applyValueTransform(bool& value) const
207{
208 _applyValueTransform2(value);
209}
210
211/*---------------------------------------------------------------------------*/
212/*---------------------------------------------------------------------------*/
213
214template<typename ParamType> void CaseFunction::
215_applyParamTransform2(ParamType& param) const
216{
217 // Applique la transformation...
218 // Pour l'instant, uniquement un coefficient multiplicateur.
220 return;
221
222 ParamType comul = ParamType();
223 bool is_bad = builtInGetValue(comul,m_transform_param_func);
224 if (is_bad)
225 ARCANE_FATAL("Can not convert 'comul-x' value '{0}'",m_transform_param_func);
226 if (math::isZero(comul))
227 ARCANE_FATAL("The parameter 'comul-x' can not be zero");
228 param = param / comul;
229}
230
231/*---------------------------------------------------------------------------*/
232/*---------------------------------------------------------------------------*/
233
234void CaseFunction::
235_applyParamTransform(Real& value) const
236{
237 _applyParamTransform2(value);
238}
239
240/*---------------------------------------------------------------------------*/
241/*---------------------------------------------------------------------------*/
242
243void CaseFunction::
244_applyParamTransform(Integer& value) const
245{
246 _applyParamTransform2(value);
247}
248
249/*---------------------------------------------------------------------------*/
250/*---------------------------------------------------------------------------*/
251
252Ref<ICaseFunction> CaseFunction::
253toReference()
254{
255 return Arccore::makeRefFromInstance<ICaseFunction>(this);
256}
257
258/*---------------------------------------------------------------------------*/
259/*---------------------------------------------------------------------------*/
260
261} // End namespace Arcane
262
263/*---------------------------------------------------------------------------*/
264/*---------------------------------------------------------------------------*/
#define ARCANE_FATAL(...)
Macro envoyant une exception FatalErrorException.
Informations pour construire une instance de CaseFunction.
ARCANE_DEPRECATED_260 CaseFunctionBuildInfo(ISubDomain *sd, const String &name)
void setTransformParamFunction(const String &str) override
Affecte une fonction de transformation du paramètre. Pour l'instant, il s'agit juste d'un coefficient...
eParamType m_param_type
Type du paramètre (x)
bool checkIfValid() const override
Vérifie la validité de la fonction.
void setParamType(eParamType type) override
Positionne le type de paramètre de la fonction.
String m_name
Nom de la fonction.
void setName(const String &new_name) override
Positionne le nom de la fonction en new_name.
eValueType m_value_type
Type de la valeur (y)
String m_transform_param_func
Fonction de transformation du paramètre.
CaseFunction(const CaseFunctionBuildInfo &info)
Construit une fonction du jeu de données.
void setValueType(eValueType type) override
Positionne le type des valeurs de la fonction.
void setTransformValueFunction(const String &str) override
Affecte une fonction de transformation de la valeur. Pour l'instant, il s'agit juste d'un coefficient...
String m_transform_value_func
Fonction de transformation de la valeur.
eParamType
Type d'un paramètre d'une fonction.
eValueType
Type d'une valeur d'une fonction.
Interface du gestionnaire d'un sous-domaine.
Definition ISubDomain.h:74
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Definition Lima.cc:120
Exception lorsqu'une fonction n'est pas implémentée.
Chaîne de caractères unicode.
bool null() const
Retourne true si la chaîne est nulle.
Definition String.cc:304
bool isZero(const BuiltInProxy< _Type > &a)
Teste si une valeur est exactement égale à zéro.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-