16#ifndef TRUSTProblem_Concentration_Gen_included
17#define TRUSTProblem_Concentration_Gen_included
19#include <Convection_Diffusion_Concentration.h>
20#include <Pb_Thermohydraulique.h>
21#include <Champ_Uniforme.h>
22#include <Constituant.h>
27template <
typename _DERIVED_TYPE_,
typename _EQUATION_TYPE_,
typename _MEDIUM_TYPE_>
32 LIST(_EQUATION_TYPE_) list_eq_concentration_;
49 Process::exit(
"Error in TRUSTProblem_Concentration_Gen<_DERIVED_TYPE_, _EQUATION_TYPE_, _MEDIUM_TYPE_>::equation => wrong equation number !");
51 const int nb_eq_mere = _DERIVED_TYPE_::nombre_d_equations();
53 return _DERIVED_TYPE_::equation(i);
55 return list_eq_concentration_(i - nb_eq_mere);
61 Process::exit(
"Error in TRUSTProblem_Concentration_Gen<_DERIVED_TYPE_, _EQUATION_TYPE_, _MEDIUM_TYPE_>::equation => wrong equation number !");
63 const int nb_eq_mere = _DERIVED_TYPE_::nombre_d_equations();
65 return _DERIVED_TYPE_::equation(i);
67 return list_eq_concentration_(i - nb_eq_mere);
75 nom_inco +=
Nom(i), nom_eq +=
Nom(i);
76 Cerr <<
"The unknown name of the " << eqn.que_suis_je() <<
" equation " << i <<
" is modified => " << nom_inco << finl;
77 eqn.inconnue().
nommer(nom_inco);
78 Cerr <<
"The " << eqn.que_suis_je() <<
" equation name, of number " << i <<
", is modified => " << nom_eq << finl;
82 eqn.get_champ_compris().clear_champs_compris();
83 eqn.get_champ_compris().ajoute_champ(eqn.inconnue());
89 _DERIVED_TYPE_::milieu_vect().resize(2);
90 for (
int i = 0; i < 2; i++) is >> _DERIVED_TYPE_::milieu_vect()[i];
91 _DERIVED_TYPE_::associer_milieu_base(_DERIVED_TYPE_::milieu_vect().front().valeur());
99 const Constituant& les_consts = ref_cast(_MEDIUM_TYPE_, _DERIVED_TYPE_::milieu_vect().back().valeur());
105 Cerr <<
"Error in TRUSTProblem_Concentration_Gen<_DERIVED_TYPE_, _EQUATION_TYPE_, _MEDIUM_TYPE_>::lire_resize_medium. You can not use a diffusion coefficient of type " << les_consts.
diffusivite_constituant().
que_suis_je() <<
" !!!" << finl;
106 Cerr <<
"We only accept uniform fields for the moment ... Fix your data set or call the 911 !!!" << finl;
114 const Constituant& les_consts = ref_cast(_MEDIUM_TYPE_, _DERIVED_TYPE_::milieu_vect().back().valeur());
119 std::ostringstream oss;
120 oss << std::scientific << std::setprecision(15) << vals(0, i);
122 Nom str =
"{ coefficient_diffusion Champ_Uniforme 1 ";
123 str += oss.str().c_str();
DoubleTab & valeurs() override
Surcharge Champ_base::valeurs() Renvoie le tableau des valeurs.
classe Constituant Cette classe represente le(s) constituant(s) d'un fluide.
int nb_constituants() const
const Champ_Don_base & diffusivite_constituant() const
Une entree dont la source est une chaine de caracteres.
Class defining operators and methods for all reading operation in an input flow (file,...
classe Equation_base Le role d'une equation est le calcul d'un ou plusieurs champs....
class Nom Une chaine de caractere pour nommer les objets de TRUST
virtual void nommer(const Nom &)
Donne un nom a l'Objet_U Methode virtuelle a surcharger.
const Nom & que_suis_je() const
renvoie la chaine identifiant la classe.
static void exit(int exit_code=-1)
Routine de sortie de TRUST dans une region Kokkos.
Classe de base des flux de sortie.
int nombre_d_equations() const override
std::vector< _MEDIUM_TYPE_ > mil_constituants_
Entree & lire_resize_medium(Entree &is)
Sortie & printOn(Sortie &os) const override
const Equation_base & equation(int i) const override
int nb_equations_multi() const
LIST(_EQUATION_TYPE_) list_eq_concentration_
void create_constituants_echaines()
Equation_base & equation(int i) override
void rename_equation_unknown(const int i, _EQUATION_TYPE_ &eqn)