16#include <Discretisation_base.h>
17#include <Domaine_Cl_dis_base.h>
18#include <Loi_Fermeture_base.h>
19#include <Domaine_dis_base.h>
20#include <Probleme_base.h>
21#include <Synonyme_info.h>
22#include <Postraitement.h>
23#include <Perf_counters.h>
25#include <Perf_counters.h>
105LIST(
Nom) glob_noms_fichiers;
113 os << le_domaine_dis_.valeur();
140 Cerr <<
"Reading of the problem " <<
le_nom() << finl;
144 Process::exit(
"We expected { to start to read the problem !!! \n");
162 Cerr <<
"Step verification of data being read in progress..." << finl;
166 Cerr <<
"The read data are coherent" << finl;
182 const std::string conc =
"Concentration", scal_pass =
"Scalaires_Passifs", nom_pb =
que_suis_je().
getString();
183 if (nom_pb.find(conc) != std::string::npos) nb_milieu = 2;
187 for (
int i = 0; i < nb_milieu; i++)
189 le_milieu_[i].typer_lire_simple(is,
"Typing the medium ...");
199 const bool is_constituant = nb_milieu == 1 ? false :
true, is_scal_pass = (nom_pb.find(scal_pass) != std::string::npos) ? true :
false;
200 const int ns_ou_cond_eq = 0;
214 conc_eq = is_scal_pass ? 1 : 2;
242 bool already_read =
true;
244 if (mot ==
"correlations")
246 Cerr <<
"Reading of the correlations ..." << finl;
248 already_read =
false;
251 if (mot ==
"Modele_rayonnement_milieu_transparent" || mot ==
"Transparent_medium_radiation_model")
253 Cerr <<
"Reading of the radiation model ..." << finl;
255 already_read =
false;
258 Cerr <<
"Reading of the equations ..." << finl;
260 for (
int i = 0; i < nb_eq; i++)
266 already_read =
false;
276 Cerr <<
"The use of a transparent radiation model is not authorized for your problem " <<
que_suis_je() <<
" !!!" << finl;
277 Cerr <<
"This model should only be used with a fluid problem. Update your data file." << finl;
310 if (sub_type(Domaine, ob))
318 liste_loi_fermeture_.add(loi);
324 Cerr <<
"ERROR: You are trying to associate a 64-bit Domain to a Problem!" << finl;
325 Cerr <<
" -> Keyword 'Domain_64' can *not* be used for a sequential run!" << finl;
326 Cerr<<
" -> Keyword 'Domain_64' can only be used for initial partitioning. It must be changed into 'Domain' in the PAR_xxx dataset when running the parallel computation itself!" << finl;
331 Cerr <<
"YOU ARE USING AN OLD SYNTAX IN YOUR DATA FILE AND THIS IS NO MORE SUPPORTED !" << finl;
332 Cerr <<
"STARTING FROM TRUST-v1.9.3 : THE MEDIUM SHOULD BE READ INSIDE THE PROBLEM AND NOT VIA ASSOSCIATION ... " << finl;
333 Cerr <<
"HAVE A LOOK TO ANY TRUST TEST CASE TO SEE HOW IT SHOULD BE DONE ($TRUST_ROOT/tests/) ... " << finl;
334 Cerr <<
"OR RUN -convert_data OPTION OF YOUR APPLICATION SCRIPT, FOR TRUST FOR EXAMPLE:" << finl;
352 for (
auto& itr : liste_loi_fermeture_)
358 corr.second->completer();
381 le_domaine_ = un_domaine;
382 statistics().record_nb_elem(un_domaine.
nb_elem());
387 Cerr <<
"Discretization of the equations of problem " <<
que_suis_je() <<
" ..." << finl;
405 la_discretisation_ = une_discretisation;
406 Cerr <<
"Discretization of the domain associated with the problem " <<
le_nom() << finl;
409 Process::exit(
"ERROR: Discretize - You're trying to discretize a problem without having associated a Domain to it!!! Fix your dataset.");
412 le_domaine_->init_renum_perio();
415 le_domaine_dis_ = une_discretisation.
discretiser();
419 for (
auto& itr : liste_loi_fermeture_)
420 itr->discretiser(une_discretisation);
440 int rg = glob_noms_fichiers.rang(nom_fichier);
443 glob_noms_fichiers.add(nom_fichier);
444 glob_derniers_posts.add(post);
452 glob_derniers_posts[rg] = post;
459 Cerr <<
"Error, the values of dt_post (" << autre_post.
dt_post() <<
" and " << post.
dt_post() <<
") of two postprocessing blocks writing in the same file" << nom_fichier
460 <<
" are different!" << finl;
461 Cerr <<
"Specify the same dt_post, or use two different files for postprocessing." << finl;
462 Cerr <<
"INFO: For Probleme_couple, if you do not specify different filenames, postpros in subproblems must also have the same dt_post." << finl;
489 Cerr <<
"Backup of problem " <<
le_nom() << finl;
494 assert(bytes % 4 == 0);
498 assert(bytes % 4 == 0);
509 statistics().begin_count(STD_COUNTERS::restart,statistics().get_last_opened_counter_level()+1);
512 Cerr <<
"Resuming the problem " <<
le_nom() << finl;
517 Cerr <<
"End of resuming the problem " <<
le_nom() <<
" after " << statistics().get_time_since_last_open(STD_COUNTERS::restart) <<
" s" << finl;
518 statistics().end_count(STD_COUNTERS::restart);
559 if (le_schema_en_temps_)
562 Cerr<<
"Error: Problem "<<
le_nom()<<
" was already associated with the scheme "<< le_schema_en_temps_->
le_nom()<<
" and we try to associate it with "<<un_schema_en_temps.
le_nom() <<
"." <<finl;
565 le_schema_en_temps_=un_schema_en_temps;
580 if(!le_schema_en_temps_)
582 Cerr <<
le_nom() <<
" has not been associated to a time scheme !" << finl;
585 return le_schema_en_temps_.valeur();
598 if(!le_schema_en_temps_)
600 Cerr <<
le_nom() <<
" has not been associated to a time scheme !" << finl;
603 return le_schema_en_temps_.valeur();
615 return le_domaine_.valeur();
624 return le_domaine_.valeur();
635 return le_domaine_dis_.valeur();
644 return le_domaine_dis_.valeur();
695 Motcle Type(type), Type_eqn;
699 if (Type_eqn == Type)
708 Cerr <<
que_suis_je() <<
" does not contain any equation/medium of type: " << type << finl;
709 Cerr <<
"Here is the list of possible equations for a " <<
que_suis_je() <<
" problem: " << finl;
750 Motcle Type(type), Type_eqn;
754 if (Type_eqn == Type)
763 Cerr <<
que_suis_je() <<
" does not contain any equation/medium of type: " << type << finl;
764 Cerr <<
"Here is the list of possible equations for a " <<
que_suis_je() <<
" problem: " << finl;
781 for (
auto &itr : liste_loi_fermeture_)
782 itr->creer_champ(motlu);
803 if (corr.second->has_champ(un_nom, ref_champ))
806 for (
const auto &itr : liste_loi_fermeture_)
807 if (itr->has_champ(un_nom, ref_champ))
831 if (corr.second->has_champ(un_nom))
834 for (
const auto &itr : liste_loi_fermeture_)
835 if (itr->has_champ(un_nom))
861 if (corr.second->has_champ(un_nom, ref_champ))
864 for (
const auto &itr : liste_loi_fermeture_)
865 if (itr->has_champ(un_nom, ref_champ))
868 Cerr <<
"The field of name " << un_nom <<
" do not correspond to a field understood by the problem." << finl;
869 Cerr <<
"It may be a field dedicated only to post-process and defined in the Definition_champs set." << finl;
870 Cerr <<
"1) If you have request the post-processing of " << un_nom <<
" in the Champs set" << finl;
871 Cerr <<
"please remove the localisation elem or som that you may have specified." << finl;
872 Cerr <<
"2) If you have used " << un_nom <<
" in Definition_champs, please use 'sources_reference { " << un_nom <<
" }'" << finl;
873 Cerr <<
"instead of 'source refchamp { pb_champ " <<
le_nom() <<
" " << un_nom <<
" }'" << finl;
874 Cerr <<
"3) Check reference manual." << finl;
875 Cerr <<
"4) Contact TRUST support." << finl;
878 throw std::runtime_error(std::string(
"Field ") + un_nom.
getString() + std::string(
" not found !"));
887 for (
int i=0; i<nb_eq; i++)
890 for (
const auto& itr : liste_loi_fermeture_)
899 if (un_nom ==
"TEMPERATURE_PHYSIQUE")
return 0;
933 Cerr <<
"The field named " << un_nom <<
" do not correspond to a field understood by the problem." << finl;
934 Cerr <<
"Check the name of the field indicated into the postprocessing block of the data file " << finl;
935 Cerr <<
"or in the list of post-processed fields above (in the block 'Reading of fields to be postprocessed')." << finl;
938 throw std::runtime_error(std::string(
"Field ") + un_nom.
getString() + std::string(
" not found !"));
976 for (
auto& itr : liste_loi_fermeture_)
982 corr.second->mettre_a_jour(temps);
1006 for (
auto& itr : liste_loi_fermeture_)
1035 Cerr<<
"The postprocessing of interfaces is only possible for"<<finl;
1036 Cerr<<
"a problem type Pb_Front_Tracking, not a "<<
que_suis_je()<<finl;
1042 Cerr<<
que_suis_je()<<
" must overloaded :postraiter_interfaces"<<finl;
1068 statistics().begin_count(STD_COUNTERS::postreatment,statistics().get_last_opened_counter_level()+1);
1075 if (
Process::nproc()>=100) Cerr <<
"[Post] Probleme_base::postraiter... " << finl;
1090 if (!(indice_nb_pas_dt && nb_pas_dt_max == 0) && !(indice_tps_final && est_egal(t_init, t_max)))
1097 if (nb_pas_dt_max == 0)
1098 indice_nb_pas_dt =
true;
1099 if (est_egal(t_init, t_max))
1100 indice_tps_final =
true;
1102 if (
Process::nproc()>=100) Cerr <<
"[Post] Done in " << statistics().get_time_since_last_open(STD_COUNTERS::postreatment) <<
" s. If too slow consider using CGNS format." << finl;
1107 statistics().end_count(STD_COUNTERS::postreatment);
1109 if(!
save_restart_.is_restart_in_progress() && le_domaine_dis_)
1112 double temps = le_schema_en_temps_->temps_courant();
1113 le_domaine_dis_->domaine().update_after_post(temps);
1127 statistics().begin_count(STD_COUNTERS::backup_file,statistics().get_last_opened_counter_level()+1);
1130 Cout <<
"[IO] " << statistics().get_time_since_last_open(STD_COUNTERS::backup_file) <<
" s to write save file." << finl;
1131 statistics().end_count(STD_COUNTERS::backup_file,1,bytes);
1144 for (
auto os : get_set_out_files())
1148 glob_noms_fichiers.vide();
1149 glob_derniers_posts.vide();
1158 static const std::string param_name =
"SORTIE_ROOT_DIRECTORY";
1169 std::string dirname=
"";
1175 for (
auto const &condLim : condsLim)
1192 for (
auto &source: sources)
1194 for (
auto const &champ_don: source->champs_don())
1199 dirname = champ.newCompute();
1205 for (
auto const &champ_don:
milieu().champs_don())
1210 dirname = champ.newCompute();
1220 Noms noms_eq, noms_eq_maj;
1222 for (
auto& itr : noms_eq) noms_eq_maj.add(
Motcle(itr));
1223 for (is >> mot; noms_eq_maj.
rang(mot) >= 0; is >> mot)
1226 eq_opt_.dernier().typer(mot);
1246 Cerr <<
"correlations : { expected instead of " << mot << finl;
1249 for (is >> mot; mot !=
"}"; is >> mot)
1258 const std::vector<double>& x,
1259 const std::vector<double>& y,
1260 const std::vector<double>& z,
1261 std::vector<double>& vals,
int compo)
1264 Process::exit(
"Probleme_base::getOutputPointValues not implemented in // !! \n");
1266 assert (compo > -1);
1268 const int size_x =
static_cast<int>(x.size());
1269 const int size_y =
static_cast<int>(y.size());
1270 const int size_z =
static_cast<int>(z.size());
1271 const int size_vals =
static_cast<int>(vals.size());
1273 if (size_x != size_y)
1274 Process::exit(
"Error in Probleme_base::getOutputPointValues => vectors x and y must have same dimensions !!!");
1277 Process::exit(
"Error in Probleme_base::getOutputPointValues => vectors x, y and z must have same dimensions !!!");
1280 vals.resize(size_x);
1283 if (size_vals != size_x)
1284 Process::exit(
"Error in Probleme_base::getOutputPointValues => vectors x, y/z and vals must have same dimensions !!!");
1287 DoubleTrav les_positions;
1290 for (
int i = 0; i < size_x; i++)
1292 les_positions(i, 0) = x[i];
1293 les_positions(i, 1) = y[i];
1299 if(elem.
size() != size_x)
1302 le_domaine_->chercher_elements(les_positions, elem, 1);
1305 ArrOfDouble tmp(size_x);
1306 for (
int i = 0; i < size_x; i++)
1309 for (
int i = 0; i < size_x; i++)
1312 Cerr <<
"Error in Probleme_base::getOutputPointValues => The point number " << i + 1 <<
" is outside the computational domain !!! " << finl;
1316 DoubleTrav valeurs_locales;
1317 valeurs_locales.
resize(size_x, 1);
1324 if (champ_ref->nb_comp() == 1)
1326 assert(champ_ref->valeurs().line_size() == 1);
1327 champ_ref->valeur_aux_elems(les_positions, elem, valeurs_locales);
1331 assert(compo < champ_ref->nb_comp());
1332 champ_ref->valeur_aux_elems_compo(les_positions, elem, valeurs_locales, compo);
1341 Cerr <<
"Error in Probleme_base::getOutputPointValues => No output fields of name " << name << finl;
1346 const Champ_base& ma_source = ref_ch->get_champ(espace_stockage);
1355 assert(compo < ma_source.
nb_comp());
1360 for (
int i = 0; i < size_x; i++)
1361 vals[i] = valeurs_locales(i, 0);
class Champ_Generique_base
: class Champ_Parametrique
virtual DoubleTab & valeurs()=0
classe Champ_base Cette classe est la base de la hierarchie des champs.
virtual DoubleVect & valeur_aux_elems_compo(const DoubleTab &positions, const IntVect &les_polys, DoubleVect &valeurs, int ncomp) const
provoque une erreur ! doit etre surchargee par les classes derivees
virtual DoubleTab & valeur_aux_elems(const DoubleTab &positions, const IntVect &les_polys, DoubleTab &valeurs) const
provoque une erreur ! doit etre surchargee par les classes derivees
: class Champ_front_Parametrique
std::string newCompute() const
classe Cond_lim_base Classe de base pour la hierarchie des classes qui representent les differentes c...
Champ_front_base & champ_front()
classe Conds_lim Cette classe represente un vecteur de conditions aux limites.
static void typer_lire_correlation(OWN_PTR(Correlation_base)&, const Probleme_base &, const Nom &, Entree &)
static void set_nom_pb_actuel(const Nom &nom)
classe Discretisation_base Cette classe represente un schema de discretisation en espace,...
virtual Domaine_dis_base & discretiser() const
void associer_domaine(const Domaine &dom)
classe Domaine_32_64 un Domaine est un maillage compose d'un ensemble d'elements geometriques de meme...
const Cond_lim & les_conditions_limites(int) const
Renvoie la i-ieme condition aux limites.
void get_noms_champs_postraitables(Noms &nom, Option opt=NONE) const override
virtual int restore_additional_state(Entree &, Probleme_base &)
virtual void setUpdateTheGrid(bool)
virtual int save_additional_state(Sortie &, const Probleme_base &) const
void creer_champ(const Motcle &motlu) override
classe Domaine_dis_base Cette classe est la base de la hierarchie des domaines discretisees.
void get_noms_champs_postraitables(Noms &nom, Option opt=NONE) const override
void creer_champ(const Motcle &motlu) override
void associer_domaine(const Domaine &)
Associe un Domaine a l'objet.
virtual void modifier_pour_Cl(const Conds_lim &)=0
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....
virtual void associer_milieu_equation()
virtual void associer_milieu_base(const Milieu_base &)=0
int reprendre(Entree &) override
On reprend l'inconnue a partir d'un flot d'entree.
virtual const Milieu_base & milieu() const =0
virtual void associer_domaine_dis(const Domaine_dis_base &)
Associe le domaine discretise a l'equation.
virtual void imprimer(Sortie &os) const
Imprime les operateurs de l'equation si le schema en temps indique que c'est necessaire.
virtual void associer_pb_base(const Probleme_base &)
S'associe au Probleme passe en parametre.
Sources & sources()
Renvoie les termes sources asssocies a l'equation.
virtual void mettre_a_jour_champs_conserves(double temps, int reset=0)
virtual void mettre_a_jour(double temps)
La valeur de l'inconnue sur le pas de temps a ete calculee.
virtual void completer()
Complete la construction (initialisation) des objets associes a l'equation.
void get_noms_champs_postraitables(Noms &nom, Option opt=NONE) const override
virtual int preparer_calcul()
Tout ce qui ne depend pas des autres problemes eventuels.
int sauvegarder(Sortie &) const override
On sauvegarde l'inconnue, puis les sources sur un flot de sortie.
virtual Domaine_Cl_dis_base & domaine_Cl_dis()
Renvoie le domaine des conditions aux limite discretisee associee a l'equation.
virtual void associer_sch_tps_base(const Schema_Temps_base &)
S'associe au schema_en_temps.
void creer_champ(const Motcle &motlu) override
virtual void discretiser()
Discretise l'equation.
Domaine_dis_base & domaine_dis()
Renvoie le domaine discretise associe a l'equation.
virtual int nb_comp() const
: Classe de base des lois de fermetures.
virtual void associer_pb_base(const Probleme_base &)
Cette methode est la premiere appelee par le probleme pour construire l'objet au moment ou on l'assoc...
virtual void preparer_calcul()
Cette methode est appelee par le probleme apres preparer_calcul() des equations et du milieu.
void get_noms_champs_postraitables(Noms &nom, Option opt=NONE) const override
virtual void mettre_a_jour(double temps)
Cette methode est appelee par le probleme apres mettre_a_jour() des equations et du milieu.
classe Milieu_base Cette classe est la base de la hierarchie des milieux (physiques)
virtual int initialiser(const double temps)
virtual bool is_dilatable() const
virtual void mettre_a_jour(double temps)
virtual void preparer_calcul()
void get_noms_champs_postraitables(Noms &nom, Option opt=NONE) const override
virtual void discretiser(const Probleme_base &pb, const Discretisation_base &dis)
void creer_champ(const Motcle &motlu) override
Une chaine de caractere (Nom) en majuscules.
class Nom Une chaine de caractere pour nommer les objets de TRUST
const std::string & getString() const
const Nom & le_nom() const override
Renvoie *this;.
Un tableau de chaine de caracteres (VECT(Nom)).
int rang(const char *const ch) 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.
static const Nom & nom_du_cas()
Renvoie une reference constante vers le nom du cas.
Objet_U()
Constructeur par defaut : attribue un numero d'identifiant unique a l'objet (object_id_),...
virtual Sortie & printOn(Sortie &) const
Ecriture de l'objet sur un flot de sortie Methode a surcharger.
Classe de base pour l'ensemble des postraitements.
classe Postraitement La classe est dotee -d une liste de champs generiques champs_post_complet_ qui c...
int comprend_champ_post(const Motcle &identifiant) const
virtual const Champ_Generique_base & get_champ_post(const Motcle &nom) const
int & est_le_dernier_postraitement_pour_nom_fich()
virtual bool has_champ_post(const Motcle &nom) const
int & est_le_premier_postraitement_pour_nom_fich()
const Nom & le_nom() const override
Donne le nom de l'Objet_U Methode a surcharger : renvoie "neant" dans cette implementation.
virtual std::string getOutputStringValue(const std::string &name)
std::map< std::string, std::string > str_params_
void resetTimeWithDir_impl(Probleme_base &pb, double time, std::string direname)
classe Probleme_base C'est un Probleme_U qui n'est pas un couplage.
int sauvegarder(Sortie &) const override
Ecriture du probleme sur fichier en vue d'une reprise.
int limpr() const override
Demande au schema en temps s'il faut faire une impression.
virtual void associer_milieu_base(const Milieu_base &)
Associe un milieu physique aux equations du probleme.
virtual Entree & lire_equations(Entree &is, Motcle &dernier_mot)
Lecture des equations du probleme.
virtual void typer_lire_milieu(Entree &is)
void get_noms_champs_postraitables(Noms &nom, Option opt=NONE) const override
void getOutputPointValues(const Nom &name, const std::vector< double > &x, const std::vector< double > &y, const std::vector< double > &z, std::vector< double > &vals, int compo) override
virtual void discretiser(Discretisation_base &)
Affecte une discretisation au probleme Discretise le Domaine associe au probleme avec la discretisati...
std::string newCompute() override
Recherche des champs parametriques, et pour chacun, passage au parametre suivant.
virtual void lire_postraitement_interfaces(Entree &is)
virtual void associer_domaine(const Domaine &)
Associe un domaine au probleme.
virtual void discretiser_equations()
bool has_champ(const Motcle &nom, OBS_PTR(Champ_base) &ref_champ) const override
int postraiter(int force=1) override
Si force=1, effectue le postraitement sans tenir compte des frequences de postraitement.
virtual void postraiter_interfaces(const Nom &nom_fich, Sortie &s, const Nom &format, double temps)
bool is_dilatable() const
void creer_champ(const Motcle &motlu) override
int associer_(Objet_U &) override
surcharge Objet_U::associer_(Objet_U& ob) Associe differents objets au probleme en controlant
virtual Entree & lire_correlations(Entree &is)
void sauver() const override
Ecriture sur fichier en vue d'une reprise (sauvegarde).
const Domaine & domaine() const
Renvoie le domaine associe au probleme.
const Champ_base & get_champ(const Motcle &nom) const override
Entree & read_optional_equations(Entree &is, Motcle &mot)
virtual bool has_champ_post(const Motcle &nom) const
virtual void preparer_calcul()
Prepare le calcul: initialise les parametres du milieu et prepare le calcul de chacune des equations.
void init_postraitements()
Flag le premier et le dernier postraitement pour chaque fichier Et initialise les postraitements.
Postraitements & postraitements()
virtual double calculer_pas_de_temps() const
Calcul la valeur du prochain pas de temps du probleme.
Postraitements les_postraitements_
virtual int a_pour_IntVect(const Motcle &, OBS_PTR(IntVect)&) const
virtual int comprend_champ_post(const Motcle &nom) const
virtual void mettre_a_jour(double temps)
Effectue une mise a jour en temps du probleme.
Save_Restart save_restart_
void resetTime(double time) override
Reset the current time of the Problem to a given value.
int lsauv() const override
Demande au schema en temps s'il faut faire une sauvegarde.
virtual void allocation() const final
Verifie que la place necessaire existe sur le disque dur.
virtual void associer_sch_tps_base(const Schema_Temps_base &)
Associe un schema en temps au probleme.
virtual void finir()
Finit le postraitement et sauve le probleme dans un fichier.
virtual const Champ_Generique_base & get_champ_post(const Motcle &nom) const
std::vector< OWN_PTR(Milieu_base)> le_milieu_
virtual const Milieu_base & milieu() const
Renvoie le milieu physique associe au probleme.
std::map< std::string, OWN_PTR(Correlation_base)> correlations_
const Schema_Temps_base & schema_temps() const
Renvoie le schema en temps associe au probleme.
virtual int nombre_d_equations() const =0
OBS_PTR(Field_base) findInputField(const Nom &name) const override
virtual Entree & lire_radiation_models(Entree &is, Motcle &mot)
virtual const Equation_base & equation(int) const =0
virtual void imprimer(Sortie &os) const
Imprime les equations associees au probleme si le schema en temps associe indique que c'est necessair...
virtual int verifier()
Verifie que l'objet est complet, coherent, .
virtual void completer()
Complete les equations associees au probleme.
virtual int expression_predefini(const Motcle &motlu, Nom &expression)
virtual void lire_solved_equations(Entree &is)
const Domaine_dis_base & domaine_dis() const
Renvoie le domaine discretise associe au probleme.
virtual const Equation_base & get_equation_by_name(const Nom &) const
(B. Math): Methode virtuelle ajoutee pour les problemes ayant plusieurs equations de meme type (Probl...
int reprendre(Entree &) override
Lecture d'un flot d'entree (fichier) pour reprise apres une sauvegarde avec Probleme_base::sauvegarde...
virtual void associer()
Associe le probleme a toutes ses equations.
virtual Equation_base & getset_equation_by_name(const Nom &)
(B. Math): Methode virtuelle ajoutee pour les problemes ayant plusieurs equations de meme type (Probl...
static void mp_max_for_each_item(TRUSTArray< _TYPE_ > &x, int n=-1)
static bool is_parallel()
static int nproc()
renvoie le nombre de processeurs dans le groupe courant Voir Comm_Group::nproc() et PE_Groups::curren...
static void exit(int exit_code=-1)
Routine de sortie de TRUST dans une region Kokkos.
bool & set_indice_nb_pas_dt_max_atteint()
int limpr() const
Renvoie 1 s'il y a lieu d'effectuer une impression (cf dt_impr) Renvoie 0 sinon.
const Nom & le_nom() const override
surcharge Objet_U::le_nom() Renvoie le nom du shema en temps
double temps_courant() const
Renvoie le temps courant.
int sauvegarder(Sortie &) const override
Sauvegarde le temps courant et le nombre de pas de temps sur un flot de sortie.
double pas_temps_max() const
Renvoie le pas de temps maximum.
virtual void associer_pb(const Probleme_base &)
double temps_max() const
Renvoie une reference sur le temps maximum.
int nb_pas_dt() const
Renvoie le nombre de pas de temps effectues.
int reprendre(Entree &) override
Reprise (lecture) du temps courant et du nombre de pas de temps effectues a partir d'un flot d'entree...
double temps_init() const
Renvoie le temps initial.
bool & set_indice_tps_final_atteint()
int nb_pas_dt_max() const
Renvoie une reference sur le nombre de pas maxi.
void finir() const
Fermeture du fichier .dt_ev.
Classe de base des flux de sortie.
class Sources Sources represente une liste de Source.
void mettre_a_jour(double temps)
Mise a jour en temps, de toute les sources de la liste.
modelise une information de synonyme pour les Objet_U
static const Synonyme_info * synonyme_info_from_name(const char *synonyme_name)
Methode statique qui renvoie un pointeur vers le Synonyme_info dont le nom est "synonyme_name".
const char * org_name_() const
void resize(_SIZE_ n, RESIZE_OPTIONS opt=RESIZE_OPTIONS::COPY_INIT)
void resize(_SIZE_, RESIZE_OPTIONS opt=RESIZE_OPTIONS::COPY_INIT)
static int les_sous_types(const Nom &, Noms &sous_types)
Donne les noms des sous-types, un type mere etant donne par son nom.