16#include <Fermeture_Thermo_Systeme_Naire.h>
20#include <Fermeture_Thermo_base.h>
30 os <<
"Kappa = " <<
kappa_i_ << finl;
32 os <<
"Mobility = " <<
mob_i_ << finl;
33 os <<
"Beta = " <<
beta_ << finl;
34 os <<
"Potential = " << mu_ << finl;
41 Cerr <<
"Reading the " <<
que_suis_je() <<
" closures ..." << finl;
46 param.lire_avec_accolades_depuis(is);
66 Process::exit(
"Fermeture_Thermo_Systeme_Naire: nb_parametres|nb_equations must be read before any other keyword");
69 if (mot ==
"kappa_rotation")
71 Cerr <<
"1) Reading kappa_rotation " << finl;
82 Param param(
"lire_kappa_rotation");
87 using Kokkos::numbers::pi;
88 constexpr auto pi_s_180 = pi / 180.;
93 kappa_i_(1) = 2 * cos_kappa * sin_kappa
101 Cerr <<
"kappa rotation not yet implemented for nb_phases /= 2" << finl;
105 else if (motlu ==
"non")
111 Cerr <<
"Fermeture_Thermo_Systeme_Naire::readOn: We are expecting { after 'non' instead of " << motlu << finl;
115 if (motlu ==
"kappa")
118 for (
int i = 0; i <
kappa_i_.size(); i++)
123 Cerr <<
"Fermeture_Thermo_Systeme_Naire::readOn: Error while reading kappa_rotation " << finl;
124 Cerr << motlu <<
" is not understood. We are expecting the keyword kappa !! " << finl;
131 Cerr <<
"Fermeture_Thermo_Systeme_Naire::readOn: We are expecting } instead of " << motlu << finl;
138 else if (mot ==
"mobilite_auto_diffusion")
140 Cerr <<
"2) Reading mobilite_auto_diffusion " << finl;
145 Cout <<
"Auto diffusion ? " << motlu << finl;
156 Cerr <<
"Fermeture_Thermo_Systeme_Naire::readOn: We are expecting { after 'oui' instead of " << motlu << finl;
162 if (motlu ==
"mobilite")
164 else if (motlu ==
"fonction")
171 Process::exit(
"Problem in mobilite_auto_diffusion readOn : Only mobilite & fonction keywords are known !");
181 Cerr <<
"Fermeture_Thermo_Systeme_Naire::readOn: We are expecting { after 'oui' instead of " << motlu << finl;
188 param_mobilite[0] =
"coefficient_auto_diffusion";
189 param_mobilite[1] =
"temperature";
190 param_mobilite[2] =
"volume_molaire";
193 int rang0 = param_mobilite.
search(motlu);
218 Cerr <<
"Fermeture_Thermo_Systeme_Naire::readOn: Error while reading mobilite_auto_diffusion " << finl;
219 Cerr << motlu <<
" is not understood." << finl;
220 Cerr <<
"We are expecting a keyword among " << param_mobilite << finl;
229 Cerr <<
"Fermeture_Thermo_Systeme_Naire::readOn: Error while reading Fermeture_Thermo_Systeme_Naire: wrong number of parameters" << finl;
230 Cerr <<
"You should specify all these parameters: " << param_mobilite << finl;
238 else if (motlu ==
"non")
244 Cerr <<
"Fermeture_Thermo_Systeme_Naire::readOn: We are expecting { after 'non' instead of " << motlu << finl;
250 if (motlu ==
"mobilite")
252 for (
int i = 0; i <
mob_i_.size(); i++)
257 Cerr <<
"Fermeture_Thermo_Systeme_Naire::readOn: Error while reading mobilite_auto_diffusion " << finl;
258 Cerr << motlu <<
" is not understood. We are expecting the keyword mobilite !!" << finl;
266 else if (motlu ==
"defaut")
270 Cout <<
"Default case..." << finl;
272 Cout <<
"Word: " << motlu << finl;
275 Cerr <<
"Fermeture_Thermo_Systeme_Naire::readOn: We are expecting { after 'defaut' instead of " << motlu << finl;
279 Cout <<
"Second word: " << motlu << finl;
282 Cout <<
"In the loop: " << motlu << finl;
283 if (motlu ==
"mobilite")
285 for (
int i = 0; i <
mob_i_.size(); i++)
287 Cout <<
"We have read 'mobilite', then it is the value of mobility : " <<
mob_i_ << finl;
291 Cerr <<
"Fermeture_Thermo_Systeme_Naire::readOn: Error while reading defaut option. " << finl;
292 Cerr << motlu <<
" is not understood. We are expecting the keyword mobilite !!" << finl;
296 Cout <<
"Another word after: " << motlu << finl;
302 else if (mot ==
"potentiel_chimique")
304 Cerr <<
"3) Reading potentiel_chimique " << finl;
313 else if (mot ==
"beta")
315 Cerr <<
"4) Reading beta" << finl;
325 Cerr <<
"Fermeture_Thermo_Systeme_Naire::readOn -- Problem while reading parameters..." << finl;
Class defining operators and methods for all reading operation in an input flow (file,...
classe Fermeture_Thermo_Systeme_Naire
int lire_motcle_non_standard(const Motcle &, Entree &) override
Lecture des parametres de type non simple d'un objet_U a partir d'un flot d'entree.
void set_param(Param &) const override
classe Fermeture_Thermo_base
DoubleTab mobilite_func_auto_diffusion(const DoubleTab &) const
DoubleTab mobilite_func_c_defaut(const DoubleTab &) const
DoubleTab mobilite_func_c_cst(const DoubleTab &) const
int type_mobilite_auto_diffusion_
Table mobilite_forme_expr_
DoubleVect coeff_auto_diffusion_
int nb_parametres_d_ordre_
DoubleTab(Fermeture_Thermo_base::* mobilite_func_c)(const DoubleTab &) const
DoubleTab mobilite_func_c_general(const DoubleTab &) const
Une chaine de caractere (Nom) en majuscules.
Un tableau d'objets de la classe Motcle.
int search(const Motcle &t) const
const Nom & que_suis_je() const
renvoie la chaine identifiant la classe.
virtual Entree & readOn(Entree &)
Lecture d'un Objet_U sur un flot d'entree Methode a surcharger.
virtual Sortie & printOn(Sortie &) const
Ecriture de l'objet sur un flot de sortie Methode a surcharger.
Helper class to factorize the readOn method of Objet_U classes.
void ajouter(const char *keyword, const int *value, Param::Nature nat=Param::OPTIONAL)
Register an integer parameter.
void ajouter_non_std(const char *keyword, const Objet_U *value, Param::Nature nat=Param::OPTIONAL)
Register a keyword handled by Objet_U::lire_motcle_non_standard.
int lire_avec_accolades_depuis(Entree &is)
Parse the parameter block { ... } from is.
static void exit(int exit_code=-1)
Routine de sortie de TRUST dans une region Kokkos.
Classe de base des flux de sortie.