16#include <Solveur_Implicite_base.h>
17#include <Probleme_base.h>
28 int is_seuil_resol_lu = 0;
29 double seuil_convergence_solveur_prov = -1.;
30 Motcle accferme =
"}";
31 Motcle accouverte =
"{";
32 int le_solveur_est_lu = 0;
35 if (motlu != accouverte)
Process::exit(
"We are waiting a { !");
38 while (motlu != accferme)
40 if (motlu ==
"max_iter_implicite")
42 Cerr << motlu << finl;
43 Cerr << motlu <<
" is no more longer understood by Simpler but by the time scheme" << finl;
46 else if (motlu ==
"seuil_convergence_implicite")
48 Cerr << motlu << finl;
51 else if (motlu ==
"seuil_generation_solveur")
53 Cerr << motlu << finl;
54 is_seuil_resol_lu = 1;
57 else if (motlu ==
"seuil_verification_solveur")
59 Cerr << motlu << finl;
62 else if (motlu ==
"seuil_test_preliminaire_solveur")
64 Cerr << motlu << finl;
67 else if (motlu ==
"seuil_convergence_solveur")
69 Cerr << motlu << finl;
70 is_seuil_resol_lu = 1;
71 is >> seuil_convergence_solveur_prov;
73 else if (motlu ==
"nb_it_max")
77 else if (motlu ==
"seuil_convergence_variable")
79 Cerr <<
"Option seuil_convergence_variable is not yet understood." << finl;
81 Cerr << motlu << finl;
85 else if (motlu ==
"controle_residu")
89 else if (motlu ==
"solveur")
91 le_solveur_est_lu = 1;
97 while (nb_acc != 0 || !ok)
100 toto <<
" " << motlubis;
101 if (motlubis ==
"}") nb_acc--;
102 else if (motlubis ==
"{")
108 le_solveur_lu_ = Nom(toto.
get_str());
117 if (seuil_convergence_solveur_prov > 0)
119 param_defaut_.set_seuil_solveur_avec_seuil_convergence_solveur(seuil_convergence_solveur_prov);
121 if ((is_seuil_resol_lu == 0) && (le_solveur_est_lu == 0))
123 Cerr <<
"Neither the solving object nor the threshold seuil_convergence_solveur has been indicated." << finl;
124 Cerr <<
"At least one of them (or both) must be specified." << finl;
135 if (le_solveur_est_lu == 0)
138 toto <<
"Gmres { diag seuil " <<
param_defaut_.seuil_generation_solveur()
141 le_solveur_lu_ = Nom(toto.
get_str());
145 EChaine titi(le_solveur_lu_);
160 Cerr <<
"Keyword : " << motlu <<
" is not undertood in " <<
que_suis_je() << finl;
175 param.typer(
"Parametre_implicite");
177 if (!sub_type(Parametre_implicite,param.valeur()))
183 Parametre_implicite& param_impl = ref_cast(Parametre_implicite,param.valeur());
199 Cerr << finl <<
"Error!" << finl;
200 Cerr <<
"seuil_convergence_implicite option should be defined in your time scheme." << finl;
201 Cerr <<
"It is a mandatory option for a calculation with coupled problems." << finl;
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....
Probleme_base & probleme()
Renvoie le probleme associe a l'equation.
Une chaine de caractere (Nom) en majuscules.
classe Objet_U Cette classe est la classe de base des Objets de TRUST
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.
classe Parametre_equation_base Un objet Parametre_equation_base est un objet regroupant les different...
double & seuil_verification_solveur()
int seuil_test_preliminaire_lu() const
double & seuil_convergence_implicite()
double & seuil_test_preliminaire_solveur()
static void exit(int exit_code=-1)
Routine de sortie de TRUST dans une region Kokkos.
const char * get_str() const
returns a copy of the string stored by the SChaine
virtual int get_controle_residu() const
virtual Entree & lire(const Motcle &, Entree &)
virtual OWN_PTR(Parametre_equation_base) &get_and_set_parametre_equation(Equation_base &)
virtual bool iterer_eqs(LIST(OBS_PTR(Equation_base)) eqs, int n, int &ok)
int is_seuil_convg_variable
Parametre_implicite param_defaut_
Classe de base des flux de sortie.