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;
458 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
459 <<
" are different!" << finl;
460 Cerr <<
"Specify the same dt_post, or use two different files for postprocessing." << finl;
461 Cerr <<
"INFO: For Probleme_couple, if you do not specify different filenames, postpros in subproblems must also have the same dt_post." << finl;
488 Cerr <<
"Backup of problem " <<
le_nom() << finl;
493 assert(bytes % 4 == 0);
497 assert(bytes % 4 == 0);
508 statistics().begin_count(STD_COUNTERS::restart,statistics().get_last_opened_counter_level()+1);
511 Cerr <<
"Resuming the problem " <<
le_nom() << finl;
516 Cerr <<
"End of resuming the problem " <<
le_nom() <<
" after " << statistics().get_time_since_last_open(STD_COUNTERS::restart) <<
" s" << finl;
517 statistics().end_count(STD_COUNTERS::restart);
558 if (le_schema_en_temps_)
561 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;
564 le_schema_en_temps_=un_schema_en_temps;
579 if(!le_schema_en_temps_)
581 Cerr <<
le_nom() <<
" has not been associated to a time scheme !" << finl;
584 return le_schema_en_temps_.valeur();
597 if(!le_schema_en_temps_)
599 Cerr <<
le_nom() <<
" has not been associated to a time scheme !" << finl;
602 return le_schema_en_temps_.valeur();
614 return le_domaine_.valeur();
623 return le_domaine_.valeur();
632 return le_domaine_dis_.valeur();
641 return le_domaine_dis_.valeur();
690 Motcle Type(type), Type_eqn;
694 if (Type_eqn == Type)
703 Cerr <<
que_suis_je() <<
" does not contain any equation/medium of type: " << type << finl;
704 Cerr <<
"Here is the list of possible equations for a " <<
que_suis_je() <<
" problem: " << finl;
745 Motcle Type(type), Type_eqn;
749 if (Type_eqn == Type)
758 Cerr <<
que_suis_je() <<
" does not contain any equation/medium of type: " << type << finl;
759 Cerr <<
"Here is the list of possible equations for a " <<
que_suis_je() <<
" problem: " << finl;
776 for (
auto &itr : liste_loi_fermeture_)
777 itr->creer_champ(motlu);
798 if (corr.second->has_champ(un_nom, ref_champ))
801 for (
const auto &itr : liste_loi_fermeture_)
802 if (itr->has_champ(un_nom, ref_champ))
826 if (corr.second->has_champ(un_nom))
829 for (
const auto &itr : liste_loi_fermeture_)
830 if (itr->has_champ(un_nom))
856 if (corr.second->has_champ(un_nom, ref_champ))
859 for (
const auto &itr : liste_loi_fermeture_)
860 if (itr->has_champ(un_nom, ref_champ))
863 Cerr <<
"The field of name " << un_nom <<
" do not correspond to a field understood by the problem." << finl;
864 Cerr <<
"It may be a field dedicated only to post-process and defined in the Definition_champs set." << finl;
865 Cerr <<
"1) If you have request the post-processing of " << un_nom <<
" in the Champs set" << finl;
866 Cerr <<
"please remove the localisation elem or som that you may have specified." << finl;
867 Cerr <<
"2) If you have used " << un_nom <<
" in Definition_champs, please use 'sources_reference { " << un_nom <<
" }'" << finl;
868 Cerr <<
"instead of 'source refchamp { pb_champ " <<
le_nom() <<
" " << un_nom <<
" }'" << finl;
869 Cerr <<
"3) Check reference manual." << finl;
870 Cerr <<
"4) Contact TRUST support." << finl;
873 throw std::runtime_error(std::string(
"Field ") + un_nom.
getString() + std::string(
" not found !"));
882 for (
int i=0; i<nb_eq; i++)
885 for (
const auto& itr : liste_loi_fermeture_)
894 if (un_nom ==
"TEMPERATURE_PHYSIQUE")
return 0;
928 Cerr <<
"The field named " << un_nom <<
" do not correspond to a field understood by the problem." << finl;
929 Cerr <<
"Check the name of the field indicated into the postprocessing block of the data file " << finl;
930 Cerr <<
"or in the list of post-processed fields above (in the block 'Reading of fields to be postprocessed')." << finl;
933 throw std::runtime_error(std::string(
"Field ") + un_nom.
getString() + std::string(
" not found !"));
971 for (
auto& itr : liste_loi_fermeture_)
977 corr.second->mettre_a_jour(temps);
1001 for (
auto& itr : liste_loi_fermeture_)
1030 Cerr<<
"The postprocessing of interfaces is only possible for"<<finl;
1031 Cerr<<
"a problem type Pb_Front_Tracking, not a "<<
que_suis_je()<<finl;
1037 Cerr<<
que_suis_je()<<
" must overloaded :postraiter_interfaces"<<finl;
1063 statistics().begin_count(STD_COUNTERS::postreatment,statistics().get_last_opened_counter_level()+1);
1070 if (
Process::nproc()>=100) Cerr <<
"[Post] Probleme_base::postraiter... " << finl;
1085 if (!(indice_nb_pas_dt && nb_pas_dt_max == 0) && !(indice_tps_final && est_egal(t_init, t_max)))
1092 if (nb_pas_dt_max == 0)
1093 indice_nb_pas_dt =
true;
1094 if (est_egal(t_init, t_max))
1095 indice_tps_final =
true;
1097 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;
1102 statistics().end_count(STD_COUNTERS::postreatment);
1104 if(!
save_restart_.is_restart_in_progress() && le_domaine_dis_)
1107 double temps = le_schema_en_temps_->temps_courant();
1108 le_domaine_dis_->domaine().update_after_post(temps);
1122 statistics().begin_count(STD_COUNTERS::backup_file,statistics().get_last_opened_counter_level()+1);
1125 Cout <<
"[IO] " << statistics().get_time_since_last_open(STD_COUNTERS::backup_file) <<
" s to write save file." << finl;
1126 statistics().end_count(STD_COUNTERS::backup_file,1,bytes);
1139 for (
auto os : get_set_out_files())
1143 glob_noms_fichiers.vide();
1144 glob_derniers_posts.vide();
1153 static const std::string param_name =
"SORTIE_ROOT_DIRECTORY";
1164 std::string dirname=
"";
1170 for (
auto const &condLim : condsLim)
1187 for (
auto &source: sources)
1189 for (
auto const &champ_don: source->champs_don())
1194 dirname = champ.newCompute();
1200 for (
auto const &champ_don:
milieu().champs_don())
1205 dirname = champ.newCompute();
1215 Noms noms_eq, noms_eq_maj;
1217 for (
auto& itr : noms_eq) noms_eq_maj.add(
Motcle(itr));
1218 for (is >> mot; noms_eq_maj.
rang(mot) >= 0; is >> mot)
1221 eq_opt_.dernier().typer(mot);
1241 Cerr <<
"correlations : { expected instead of " << mot << finl;
1244 for (is >> mot; mot !=
"}"; is >> mot)
1253 const std::vector<double>& x,
1254 const std::vector<double>& y,
1255 const std::vector<double>& z,
1256 std::vector<double>& vals,
int compo)
1259 Process::exit(
"Probleme_base::getOutputPointValues not implemented in // !! \n");
1261 assert (compo > -1);
1263 const int size_x =
static_cast<int>(x.size());
1264 const int size_y =
static_cast<int>(y.size());
1265 const int size_z =
static_cast<int>(z.size());
1266 const int size_vals =
static_cast<int>(vals.size());
1268 if (size_x != size_y)
1269 Process::exit(
"Error in Probleme_base::getOutputPointValues => vectors x and y must have same dimensions !!!");
1272 Process::exit(
"Error in Probleme_base::getOutputPointValues => vectors x, y and z must have same dimensions !!!");
1275 vals.resize(size_x);
1278 if (size_vals != size_x)
1279 Process::exit(
"Error in Probleme_base::getOutputPointValues => vectors x, y/z and vals must have same dimensions !!!");
1282 DoubleTrav les_positions;
1285 for (
int i = 0; i < size_x; i++)
1287 les_positions(i, 0) = x[i];
1288 les_positions(i, 1) = y[i];
1294 if(elem.
size() != size_x)
1297 le_domaine_->chercher_elements(les_positions, elem, 1);
1300 ArrOfDouble tmp(size_x);
1301 for (
int i = 0; i < size_x; i++)
1304 for (
int i = 0; i < size_x; i++)
1307 Cerr <<
"Error in Probleme_base::getOutputPointValues => The point number " << i + 1 <<
" is outside the computational domain !!! " << finl;
1311 DoubleTrav valeurs_locales;
1312 valeurs_locales.
resize(size_x, 1);
1319 if (champ_ref->nb_comp() == 1)
1321 assert(champ_ref->valeurs().line_size() == 1);
1322 champ_ref->valeur_aux_elems(les_positions, elem, valeurs_locales);
1326 assert(compo < champ_ref->nb_comp());
1327 champ_ref->valeur_aux_elems_compo(les_positions, elem, valeurs_locales, compo);
1336 Cerr <<
"Error in Probleme_base::getOutputPointValues => No output fields of name " << name << finl;
1341 const Champ_base& ma_source = ref_ch->get_champ(espace_stockage);
1350 assert(compo < ma_source.
nb_comp());
1355 for (
int i = 0; i < size_x; i++)
1356 vals[i] = valeurs_locales(i, 0);
class Champ_Generique_base
: class Champ_Parametrique
virtual DoubleTab & valeurs()=0
class Champ_base This class is the base of the fields hierarchy.
virtual DoubleVect & valeur_aux_elems_compo(const DoubleTab &positions, const IntVect &les_polys, DoubleVect &valeurs, int ncomp) const
Causes an error! Must be overridden by derived classes.
virtual DoubleTab & valeur_aux_elems(const DoubleTab &positions, const IntVect &les_polys, DoubleTab &valeurs) const
Causes an error! Must be overridden by derived classes.
: class Champ_front_Parametrique
std::string newCompute() const
class Cond_lim_base Base class for the hierarchy of classes that represent the different boundary con...
Champ_front_base & champ_front()
class Conds_lim This class represents a vector of boundary conditions.
static void typer_lire_correlation(OWN_PTR(Correlation_base)&, const Probleme_base &, const Nom &, Entree &)
static void set_nom_pb_actuel(const Nom &nom)
class Discretisation_base This class represents a spatial discretization scheme, which
virtual Domaine_dis_base & discretiser() const
void associer_domaine(const Domaine &dom)
class Domaine_32_64 A Domain is a mesh composed of a set of geometric elements of the same type.
const Cond_lim & les_conditions_limites(int) const
Returns the i-th boundary condition.
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
class Domaine_dis_base This class is the base of the hierarchy of discretized domains.
void get_noms_champs_postraitables(Noms &nom, Option opt=NONE) const override
void creer_champ(const Motcle &motlu) override
void associer_domaine(const Domaine &)
Associates a Domain with the object.
virtual void modifier_pour_Cl(const Conds_lim &)=0
Class defining operators and methods for all reading operation in an input flow (file,...
class Equation_base The role of an equation is the calculation of one or more fields....
virtual void associer_milieu_equation()
virtual void associer_milieu_base(const Milieu_base &)=0
int reprendre(Entree &) override
We resume the unknown from an input stream.
virtual const Milieu_base & milieu() const =0
virtual void associer_domaine_dis(const Domaine_dis_base &)
Associates the discretized domain with the equation.
virtual void imprimer(Sortie &os) const
Prints the equation operators if the time scheme indicates it is necessary.
virtual void associer_pb_base(const Probleme_base &)
Associates with the Problem passed as parameter.
Sources & sources()
Returns the source terms associated with the equation.
virtual void mettre_a_jour_champs_conserves(double temps, int reset=0)
virtual void mettre_a_jour(double temps)
The value of the unknown at the time step has been calculated.
virtual void completer()
Completes the construction (initialization) of objects associated with the equation.
void get_noms_champs_postraitables(Noms &nom, Option opt=NONE) const override
virtual int preparer_calcul()
Everything that does not depend on other possible problems.
int sauvegarder(Sortie &) const override
We save the unknown, then the source terms to an output stream.
virtual Domaine_Cl_dis_base & domaine_Cl_dis()
Returns the discretized boundary condition domain associated with the equation.
virtual void associer_sch_tps_base(const Schema_Temps_base &)
Associates the time scheme with the equation.
void creer_champ(const Motcle &motlu) override
virtual void discretiser()
Discretizes the equation.
Domaine_dis_base & domaine_dis()
Returns the discretized domain associated with the equation.
virtual int nb_comp() const
: Base class of closure laws.
virtual void associer_pb_base(const Probleme_base &)
This method is the first called by the problem to construct the object when it is associated with the...
virtual void preparer_calcul()
This method is called by the problem after preparer_calcul() of equations and medium.
void get_noms_champs_postraitables(Noms &nom, Option opt=NONE) const override
virtual void mettre_a_jour(double temps)
This method is called by the problem after mettre_a_jour() of equations and medium.
Milieu_base This class is the base of the (physical) medium hierarchy.
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
A character string (Nom) in uppercase.
class Nom: a character string for naming TRUST objects.
const std::string & getString() const
const Nom & le_nom() const override
Returns *this.
An array of character strings (VECT(Nom)).
int rang(const char *const ch) const
const Nom & que_suis_je() const
Returns the string identifying the class.
virtual Entree & readOn(Entree &)
Reads an Objet_U from an input stream. Virtual method to override.
static const Nom & nom_du_cas()
Returns a constant reference to the case name. This method is static.
Objet_U()
Default constructor: assigns a unique identifier to the object (object_id_) and registers the object ...
virtual Sortie & printOn(Sortie &) const
Writes the object to an output stream. Virtual method to override.
Base class for all post-processing objects.
class Postraitement. The class holds -a list of generic fields champs_post_complet_ containing
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
Returns the name of the Objet_U. Virtual method to override: returns "neant" in this 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)
class Probleme_base It is a Probleme_U that is not a coupling.
int sauvegarder(Sortie &) const override
Writing of the problem to file for restart.
int limpr() const override
Asks the time scheme if a print is needed.
virtual void associer_milieu_base(const Milieu_base &)
Associates a physical medium with the problem equations.
virtual Entree & lire_equations(Entree &is, Motcle &dernier_mot)
Reading of the equations of the problem.
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 &)
Assigns a discretization to the problem Discretizes the Domain associated with the problem with the d...
std::string newCompute() override
Searches for parametric fields and for each, moves to the next parameter.
virtual void lire_postraitement_interfaces(Entree &is)
virtual void associer_domaine(const Domaine &)
Associates a domain with the problem.
virtual void discretiser_equations()
bool has_champ(const Motcle &nom, OBS_PTR(Champ_base) &ref_champ) const override
int postraiter(int force=1) override
If force=1, performs post-processing regardless of the post-processing frequencies.
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
override Objet_U::associer_(Objet_U& ob) Associates different objects with the problem by checking
virtual Entree & lire_correlations(Entree &is)
void sauver() const override
Writes to file for restart (backup).
const Domaine & domaine() const
Returns the domain associated with the problem.
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()
Prepares the computation: initializes the medium parameters and prepares the computation of each equa...
void init_postraitements()
Flags the first and last post-processing for each file And initializes the post-processing.
Postraitements & postraitements()
virtual double calculer_pas_de_temps() const
Computes the value of the next time step for the problem.
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)
Performs a time update of the problem.
Save_Restart save_restart_
void resetTime(double time) override
Reset the current time of the Problem to a given value.
int lsauv() const override
Asks the time scheme if a backup is needed.
virtual void allocation() const final
Verifies that the necessary disk space exists.
virtual void associer_sch_tps_base(const Schema_Temps_base &)
Associates a time scheme with the problem.
virtual void finir()
Finalizes post-processing and saves the problem to a file.
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
Returns the physical medium associated with the problem (const version).
std::map< std::string, OWN_PTR(Correlation_base)> correlations_
const Schema_Temps_base & schema_temps() const
Returns the time scheme associated with the problem.
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
Prints the equations associated with the problem if the associated time scheme indicates that it is n...
virtual int verifier()
Verifies that the object is complete, coherent, .
virtual void completer()
Completes the equations associated with the problem.
virtual int expression_predefini(const Motcle &motlu, Nom &expression)
virtual void lire_solved_equations(Entree &is)
const Domaine_dis_base & domaine_dis() const
Returns the discretized domain associated with the problem (const version).
virtual const Equation_base & get_equation_by_name(const Nom &) const
(B. Math): Virtual method added for problems having several equations of the same type (Probleme_FT_D...
int reprendre(Entree &) override
Reading of an input stream (file) for restart after a backup with Probleme_base::sauvegarder(Sortie& ...
virtual void associer()
Associates the problem with all its equations.
virtual Equation_base & getset_equation_by_name(const Nom &)
(B. Math): Virtual method added for problems having several equations of the same type (Probleme_FT_D...
static void mp_max_for_each_item(TRUSTArray< _TYPE_ > &x, int n=-1)
static bool is_parallel()
static int nproc()
Returns the number of processors in the current group. See Comm_Group::nproc() and PE_Groups::current...
static void exit(int exit_code=-1)
Exit routine for TRUST within a Kokkos region.
bool & set_indice_nb_pas_dt_max_atteint()
int limpr() const
Returns 1 if there is a need to perform a print (cf dt_impr) Returns 0 otherwise.
const Nom & le_nom() const override
overrides Objet_U::le_nom() Returns the name of the time scheme
double temps_courant() const
Returns the current time.
int sauvegarder(Sortie &) const override
Saves the current time and the number of time steps to an output stream.
double pas_temps_max() const
Returns the maximum time step.
virtual void associer_pb(const Probleme_base &)
double temps_max() const
Returns a reference to the maximum time.
int nb_pas_dt() const
Returns the number of time steps performed.
int reprendre(Entree &) override
Restarts (reads) the current time and the number of time steps performed from an input stream.
double temps_init() const
Returns the initial time.
bool & set_indice_tps_final_atteint()
int nb_pas_dt_max() const
Returns a reference to the maximum number of time steps.
void finir() const
Closes the .dt_ev file.
Base class for output streams.
class Sources Sources represents a list of Source objects.
void mettre_a_jour(double temps)
Time update of all sources in the list.
Models synonym information for Objet_U objects.
static const Synonyme_info * synonyme_info_from_name(const char *synonyme_name)
Static method that returns a pointer to the Synonyme_info whose name is "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)
Returns the names of the subtypes for a parent type identified by name.