16#ifndef TRUSTChamp_Don_generique_included
17#define TRUSTChamp_Don_generique_included
19#include <Champ_Don_base.h>
20#include <Champ_Uniforme.h>
21#include <Parser_Eval.h>
24#include <Interprete.h>
26enum class Champ_Don_Type { XYZ , TXYZ , LU };
28template <Champ_Don_Type _TYPE_>
35 double valeur_a_compo(
const DoubleVect& position,
int ncomp)
const override;
40 return mon_domaine.valeur();
52 static constexpr bool IS_LU = (_TYPE_ == Champ_Don_Type::LU);
63 DoubleVect&
valeur_a(
const DoubleVect& position, DoubleVect& vals)
const override
65 return valeur_a_<_TYPE_>(position, vals);
68 DoubleVect&
valeur_a_elem(
const DoubleVect& position, DoubleVect& vals,
int le_poly)
const override
70 return valeur_a_elem_<_TYPE_>(position, vals, le_poly);
75 return valeur_a_elem_compo_<_TYPE_>(position, le_poly, ncomp);
78 DoubleTab&
valeur_aux(
const DoubleTab& positions, DoubleTab& vals)
const override
80 return valeur_aux_<_TYPE_>(positions, vals);
83 DoubleVect&
valeur_aux_compo(
const DoubleTab& positions, DoubleVect& vals,
int ncomp)
const override
85 return valeur_aux_compo_<_TYPE_>(positions, vals, ncomp);
88 DoubleTab&
valeur_aux_elems(
const DoubleTab& positions,
const IntVect& les_polys, DoubleTab& vals)
const override
90 return valeur_aux_elems_<_TYPE_>(positions, les_polys, vals);
93 DoubleVect&
valeur_aux_elems_compo(
const DoubleTab& positions,
const IntVect& les_polys, DoubleVect& vals,
int ncomp)
const override
95 return valeur_aux_elems_compo_<_TYPE_>(positions,les_polys,vals,ncomp);
106 template<Champ_Don_Type T = _TYPE_> std::enable_if_t<T != Champ_Don_Type::LU, DoubleVect&>
107 valeur_a_(
const DoubleVect& position, DoubleVect&
valeurs)
const;
109 template<Champ_Don_Type T = _TYPE_> std::enable_if_t<T == Champ_Don_Type::LU, DoubleVect&>
110 valeur_a_(
const DoubleVect& position, DoubleVect&
valeurs)
const;
112 template<Champ_Don_Type T = _TYPE_> std::enable_if_t<T != Champ_Don_Type::LU, DoubleVect&>
113 valeur_a_elem_(
const DoubleVect& position, DoubleVect&
valeurs,
int le_poly)
const;
115 template<Champ_Don_Type T = _TYPE_> std::enable_if_t<T == Champ_Don_Type::LU, DoubleVect&>
116 valeur_a_elem_(
const DoubleVect& position, DoubleVect&
valeurs,
int le_poly)
const;
118 template <Champ_Don_Type T = _TYPE_> std::enable_if_t<T != Champ_Don_Type::TXYZ, double>
119 valeur_a_elem_compo_(
const DoubleVect& position,
int le_poly,
int ncomp)
const;
121 template <Champ_Don_Type T = _TYPE_> std::enable_if_t<T == Champ_Don_Type::TXYZ, double>
122 valeur_a_elem_compo_(
const DoubleVect& position,
int le_poly,
int ncomp)
const;
124 template <Champ_Don_Type T = _TYPE_> std::enable_if_t<T != Champ_Don_Type::LU, DoubleTab&>
125 valeur_aux_(
const DoubleTab& positions, DoubleTab&
valeurs)
const;
127 template<Champ_Don_Type T = _TYPE_> std::enable_if_t<T == Champ_Don_Type::LU, DoubleTab&>
128 valeur_aux_(
const DoubleTab& positions, DoubleTab&
valeurs)
const;
130 template<Champ_Don_Type T = _TYPE_> std::enable_if_t<T != Champ_Don_Type::LU, DoubleVect&>
131 valeur_aux_compo_(
const DoubleTab& positions, DoubleVect&
valeurs,
int ncomp)
const;
133 template<Champ_Don_Type T = _TYPE_> std::enable_if_t<T == Champ_Don_Type::LU, DoubleVect&>
134 valeur_aux_compo_(
const DoubleTab& positions, DoubleVect&
valeurs,
int ncomp)
const;
136 template<Champ_Don_Type T = _TYPE_> std::enable_if_t<T != Champ_Don_Type::LU, DoubleTab&>
137 valeur_aux_elems_(
const DoubleTab& positions,
const IntVect& les_polys, DoubleTab&
valeurs)
const;
139 template<Champ_Don_Type T = _TYPE_> std::enable_if_t<T == Champ_Don_Type::LU, DoubleTab&>
140 valeur_aux_elems_(
const DoubleTab& positions,
const IntVect& les_polys, DoubleTab&
valeurs)
const;
142 template<Champ_Don_Type T = _TYPE_> std::enable_if_t<T != Champ_Don_Type::LU, DoubleVect&>
143 valeur_aux_elems_compo_(
const DoubleTab& positions,
const IntVect& les_polys, DoubleVect&
valeurs,
int ncomp)
const;
145 template<Champ_Don_Type T = _TYPE_> std::enable_if_t<T == Champ_Don_Type::LU, DoubleVect&>
146 valeur_aux_elems_compo_(
const DoubleTab& positions,
const IntVect& les_polys, DoubleVect&
valeurs,
int ncomp)
const;
149#include <TRUSTChamp_Don_generique.tpp>
classe Champ_Don_base classe de base des Champs donnes (non calcules)
Champ_base & affecter_(const Champ_base &) override
Provoque une erreur ! A surcharger par les classes derivees ! non virtuelle pure par commoditees de d...
DoubleTab & valeurs() override
Surcharge Champ_base::valeurs() Renvoie le tableau des valeurs.
virtual DoubleTab & valeurs()=0
Champ_base()
Constructeur par defaut d'un Champ_base.
static Objet_U & objet(const Nom &)
Voir Interprete_bloc::objet_global() BM: la classe Interprete n'est pas le meilleur endroit pour cett...
class Nom Une chaine de caractere pour nommer les objets de TRUST
Classe Parser_Eval Cette classe a pour fonction d evaleur les valeurs prises par une fonction analyti...
Classe de base des flux de sortie.
void mettre_a_jour(double) override
Mise a jour en temps.
DoubleTab & valeur_aux_elems(const DoubleTab &positions, const IntVect &les_polys, DoubleTab &vals) const override
provoque une erreur ! doit etre surchargee par les classes derivees
DoubleVect & valeur_a(const DoubleVect &position, DoubleVect &vals) const override
Calcule les "valeurs" du champ au point de coordonnees "pos".
Champ_base & affecter_(const Champ_base &ch) override
Provoque une erreur ! A surcharger par les classes derivees ! non virtuelle pure par commoditees de d...
Domaine & interprete_get_domaine(const Nom &nom)
Champ_base & affecter(const Champ_base &ch)
DoubleVect & valeur_aux_elems_compo(const DoubleTab &positions, const IntVect &les_polys, DoubleVect &vals, int ncomp) const override
provoque une erreur ! doit etre surchargee par les classes derivees
OBS_PTR(Domaine) mon_domaine
void mettre_a_jour_positions(DoubleTab &)
Sortie & printOn(Sortie &os) const override
Ecriture de l'objet sur un flot de sortie Methode a surcharger.
double valeur_a_compo(const DoubleVect &position, int ncomp) const override
Calcule la valeur ponctuelle de la composante "compo" du champ au point de coordonnees pos.
DoubleVect & valeur_aux_compo(const DoubleTab &positions, DoubleVect &vals, int ncomp) const override
Idem que valeur_aux(const DoubleTab &, DoubleTab &), mais calcule uniquement la composante compo du c...
double valeur_a_elem_compo(const DoubleVect &position, int le_poly, int ncomp) const override
provoque une erreur ! doit etre surchargee par les classes derivees
DoubleTab & valeur_aux(const DoubleTab &positions, DoubleTab &vals) const override
Provoque une erreur ! Doit etre surchargee par les classes derivees.
DoubleVect & valeur_a_elem(const DoubleVect &position, DoubleVect &vals, int le_poly) const override
provoque une erreur ! doit etre surchargee par les classes derivees