14#include "arcane/utils/ValueConvert.h"
15#include "arcane/utils/ITraceMng.h"
16#include "arcane/utils/FatalErrorException.h"
18#include "arcane/CaseTable.h"
19#include "arcane/CaseTableParams.h"
20#include "arcane/MathUtils.h"
21#include "arcane/ISubDomain.h"
33_verboseBuiltInGetValue(
const CaseTable* table,Integer index,T& v,
const String& s)
35 bool is_bad = builtInGetValue(v,s);
37 ARCANE_FATAL(
"Table '{0}' index={1} : can not convert value '{2}' to type '{3}'",
38 table->name(),index,s,typeToName(v));
53 m_use_fast_search = v.value() == 0;
69_isValidIndex(Integer index)
const
85 if (_isValidIndex(
id))
97 m_param_list->toString(
id,str);
104value(Real param,Real& v)
const
105{ _findValueAndApplyTransform(param,v); }
108value(Real param,Integer& v)
const
109{ _findValueAndApplyTransform(param,v); }
112value(Real param,
bool& v)
const
113{ _findValueAndApplyTransform(param,v); }
117{ _findValueAndApplyTransform(param,v); }
121{ _findValueAndApplyTransform(param,v); }
124value(Integer param,Real& v)
const
125{ _findValueAndApplyTransform(param,v); }
128value(Integer param,Integer& v)
const
129{ _findValueAndApplyTransform(param,v); }
132value(Integer param,
bool& v)
const
133{ _findValueAndApplyTransform(param,v); }
137{ _findValueAndApplyTransform(param,v); }
141{ _findValueAndApplyTransform(param,v); }
149 return m_param_list->setValue(
id,str);
158 if (_isValidIndex(
id))
159 return _setValue(
id,str);
176 variant.setValueAll(v);
180 if (builtInGetValue(v,value_str)){
183 variant.setValueAll(v);
187 if (builtInGetValue(v,value_str)){
190 variant.setValueAll(v);
222 eError err = m_param_list->appendValue(param);
250 for( Integer i=n; i>id; --i ){
263 if (!_isValidIndex(
id))
267 m_param_list->removeValue(
id);
276 return m_param_list->nbElement();
291template<
class U,
class V>
void CaseTable::
292_findValueAndApplyTransform(U param,
V&
avalue)
const
295 _applyValueTransform(
avalue);
301template<
typename U>
Real
302_curveLinear(
Real current_value,
Real next_value,U t)
304 return (
Real)(current_value + (next_value-current_value)*t );
306template<
typename U> Real3
307_curveLinear(Real3 current_value,Real3 next_value,U t)
309 return current_value + (next_value-current_value)*t;
312_curveLinear(Integer current_value,Integer next_value,U t)
316template<
typename U>
bool
317_curveLinear(
bool,
bool,U)
321template<
typename U> String
322_curveLinear(
const String&,
const String&,U)
336template<
typename ParamType,
typename ValueType>
void CaseTable::
339 _applyParamTransform(param);
347 if (m_use_fast_search)
348 m_param_list->getRange(param,
i0,
iend);
350 for( Integer i=
i0; i<
iend; ++i ){
#define ARCANE_FATAL(...)
Macro envoyant une exception FatalErrorException.
Informations pour construire une instance de CaseFunction.
ICaseFunction::eParamType m_param_type
Type du paramètre (x)
Fonction du jeu de données.
void setParamType(eParamType type) override
Positionne le type de paramètre de la fonction.
String name() const override
nom de la fonction
eValueType valueType() const override
Type des valeurs de la fonction.
eParamType paramType() const override
Type du paramètre de la fonction.
Paramètre d'une fonction.
virtual eError setValue(Integer id, const String &value)
Modifie la valeur de l'élément id.
virtual eError appendElement(const String ¶m, const String &value)
Ajoute un élément à la table.
virtual void setParamType(eParamType type)
Positionne le type de paramètre de la fonction.
virtual void insertElement(Integer id)
Insère un couple (paramètre,valeur) dans la fonction.
eCurveType
Type de la courbe de la table.
@ CurveLinear
Courbe linéaire par morceau.
@ CurveConstant
Courbe constante par morceau.
virtual Integer nbElement() const
Nombre d'éléments de la fonction.
CaseTable(const CaseFunctionBuildInfo &info, eCurveType curve_type)
Construit une table de marche du jeu de données.
virtual void removeElement(Integer id)
Supprime un couple (paramètre,valeur) dans la fonction.
eError
Type des erreurs retournées par la classe.
@ ErrCanNotConvertValueToRightType
Indique que la conversion de la valeur vers le type souhaité est impossible.
eCurveType m_curve_type
Type de la courbe.
virtual void value(Real param, Real &v) const
Valeur v de l'option pour le paramètre param.
virtual eError setParam(Integer id, const String &value)
Modifie le paramètre de l'élément id.
virtual bool checkIfValid() const
Vérifie la validité de la fonction.
virtual void paramToString(Integer id, String ¶m) const
\id ième paramètre dans la chaîne str
virtual void valueToString(Integer id, String &str) const
\id ième valeur dans la chaîne str
UniqueArray< SmallVariant > m_value_list
Liste des valeurs.
eParamType
Type d'un paramètre d'une fonction.
eValueType
Type d'une valeur d'une fonction.
@ ValueInteger
Valeur de type entière.
@ ValueReal
Valeur de type réelle.
@ ValueBool
Valeur de type entière.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Classe gérant un vecteur de réel de dimension 3.
Classe gérant un type polymorphe.
Integer size() const
Nombre d'éléments du vecteur.
void remove(Int64 index)
Supprime l'entité ayant l'indice index.
void add(ConstReferenceType val)
Ajoute l'élément val à la fin du tableau.
Chaîne de caractères unicode.
Integer toInteger(Real r)
Converti un Real en Integer.
constexpr ARCCORE_HOST_DEVICE bool isEqual(const _Type &a, const _Type &b)
Teste l'égalité bit à bit entre deux valeurs.
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 -*-
Int32 Integer
Type représentant un entier.