16#ifndef Probleme_base_included
17#define Probleme_base_included
19#include <Probleme_base_interface_proto.h>
20#include <Champs_compris_interface.h>
21#include <Champ_front_Parametrique.h>
22#include <Champ_Parametrique.h>
23#include <Correlation_base.h>
24#include <Probleme_Couple.h>
25#include <Postraitements.h>
26#include <Equation_base.h>
27#include <Save_Restart.h>
28#include <Milieu_base.h>
29#include <TRUST_List.h>
30#include <Probleme_U.h>
104 const Domaine&
domaine()
const;
146 int limpr()
const override;
147 int lsauv()
const override;
148 void sauver()
const override;
176 const std::vector<double>& x,
177 const std::vector<double>& y,
178 const std::vector<double>& z,
179 std::vector<double>& vals,
int compo)
override;
192 OBS_PTR(
Field_base) findInputField(
const Nom& name)
const override {
return findInputField_impl(*
this, name); }
202 Motcle mot(nom_correlation);
208 Motcle mot(nom_correlation);
243 if(!la_discretisation_)
245 Cerr <<
que_suis_je() <<
" has not been discretized!" << finl;
248 return la_discretisation_.valeur();
class Champ_Generique_base
: class Champ_Parametrique
classe Champ_base Cette classe est la base de la hierarchie des champs.
classe Champs_compris_interface Cette classe contient une interface de methodes destinees a gerer
classe Discretisation_base Cette classe represente un schema de discretisation en espace,...
classe Domaine_dis_base Cette classe est la base de la hierarchie des domaines discretisees.
Ecriture dans un fichier partage Cette classe derive de Ecr_Fic_Par, en utilisant une sortie en binai...
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....
: Classe de base des lois de fermetures.
classe Milieu_base Cette classe est la base de la hierarchie des milieux (physiques)
Une chaine de caractere (Nom) en majuscules.
class Nom Une chaine de caractere pour nommer les objets de TRUST
const std::string & getString() const
Un tableau de chaine de caracteres (VECT(Nom)).
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.
classe Postraitement La classe est dotee -d une liste de champs generiques champs_post_complet_ qui c...
classe Probleme_Couple C'est la classe historique de couplage de TRUST.
virtual bool solveTimeStep()
pour recodage eventuel et appel unifie en python
void getInputFieldsNames_impl(const Probleme_base &pb, Noms &noms) const
bool updateGivenFields_impl(Probleme_base &pb)
void getOutputFieldsNames_impl(const Probleme_base &pb, Noms &noms) const
const bool & is_probleme_initialized_impl() const
void initialize_impl(Probleme_base &pb)
void validateTimeStep_impl(Probleme_base &pb)
void abortTimeStep_impl(Probleme_base &pb)
void terminate_impl(Probleme_base &pb)
bool solveTimeStep_impl(Probleme_base &pb)
bool initTimeStep_impl(Probleme_base &pb, double dt)
bool iterateTimeStep_impl(Probleme_base &pb, bool &converged)
double futureTime_impl(const Probleme_base &pb) const
double presentTime_impl(const Probleme_base &pb) const
bool isStationary_impl(const Probleme_base &pb) const
double computeTimeStep_impl(const Probleme_base &pb, bool &stop) const
void addInputField_impl(Probleme_base &pb, Field_base &f)
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.
const bool & is_probleme_base_initialized() const
virtual void associer_milieu_base(const Milieu_base &)
Associe un milieu physique aux equations du probleme.
bool has_domaine_dis() const
virtual Entree & lire_equations(Entree &is, Motcle &dernier_mot)
Lecture des equations du probleme.
void setStationary(bool flag) override
Tells to the Problem that stationary is reached or not.
virtual void typer_lire_milieu(Entree &is)
void get_noms_champs_postraitables(Noms &nom, Option opt=NONE) const override
Probleme_Couple & get_pb_couple()
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...
double presentTime() const override
Returns the present time.
LIST(OBS_PTR(SFichier)) &get_set_out_files() const
OBS_PTR(Champ_Generique_base) findOutputField(const Nom &name) const override
std::string newCompute() override
Recherche des champs parametriques, et pour chacun, passage au parametre suivant.
virtual void lire_postraitement_interfaces(Entree &is)
bool iterateTimeStep(bool &converged) override
In the case solveTimeStep uses an iterative process, this method executes a single iteration.
const Nom & checkpoint_filename() const
virtual void associer_domaine(const Domaine &)
Associe un domaine au probleme.
virtual void discretiser_equations()
void initialize() override
This method is called once at the beginning, before any other one of the interface Problem.
double futureTime() const override
Returns the future time (end of current computing interval) This value is valid between initTimeStep ...
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.
void associer_pb_couple(const Probleme_Couple &pbc)
virtual void addInputField(Field_base &f)
virtual void postraiter_interfaces(const Nom &nom_fich, Sortie &s, const Nom &format, double temps)
LIST(OBS_PTR(Champ_Parametrique)) Champs_Parametriques_
bool is_dilatable() const
bool reprise_effectuee() const
void creer_champ(const Motcle &motlu) override
LIST(OBS_PTR(SFichier)) out_files_
void getOutputFieldsNames(Noms &noms) const override
int associer_(Objet_U &) override
surcharge Objet_U::associer_(Objet_U& ob) Associe differents objets au probleme en controlant
const Nom & checkpoint_format() const
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)
bool solveTimeStep() override
pour recodage eventuel et appel unifie en python
bool updateGivenFields() override
ATTENTION :
const Nom & yaml_filename() const
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.
const Discretisation_base & discretisation() const
Renvoie la discretisation associee au probleme.
void init_postraitements()
Flag le premier et le dernier postraitement pour chaque fichier Et initialise les postraitements.
const Probleme_Couple & get_pb_couple() const
void abortTimeStep() override
Aborts the resolution of the current time step.
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
const std::vector< OWN_PTR(Milieu_base)> & milieu_vect() 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.
OBS_PTR(Schema_Temps_base) le_schema_en_temps_
int has_correlation(std::string nom_correlation) const
virtual void allocation() const final
Verifie que la place necessaire existe sur le disque dur.
OBS_PTR(Domaine) le_domaine_
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.
LIST(OBS_PTR(Loi_Fermeture_base)) liste_loi_fermeture_
OBS_PTR(Probleme_Couple) pbc_
virtual bool has_mod_rayo_transp() const
int is_sauvegarde_simple() const
const Correlation_base & get_correlation(std::string nom_correlation) const
virtual const Champ_Generique_base & get_champ_post(const Motcle &nom) const
bool & reprise_effectuee()
std::vector< OWN_PTR(Milieu_base)> le_milieu_
virtual const Milieu_base & milieu() const
Renvoie le milieu physique associe au probleme.
virtual Equation_base & equation(int)=0
std::map< std::string, OWN_PTR(Correlation_base)> correlations_
const Schema_Temps_base & schema_temps() const
Renvoie le schema en temps associe au probleme.
const Postraitements & postraitements() const
LIST(OWN_PTR(Equation_base)) eq_opt_
void terminate() override
This method is called once at the end, after any other one.
virtual int nombre_d_equations() const =0
OBS_PTR(Domaine_dis_base) le_domaine_dis_
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.
bool initTimeStep(double dt) override
This method allocates and initializes the unknown and given fields for the future time step.
OBS_PTR(Discretisation_base) la_discretisation_
void getInputFieldsNames(Noms &noms) const override
This method is used to find the names of input fields understood by the Problem.
virtual int expression_predefini(const Motcle &motlu, Nom &expression)
bool isStationary() const override
Tells if the Problem unknowns have changed during the last time step.
virtual void lire_solved_equations(Entree &is)
const Domaine_dis_base & domaine_dis() const
Renvoie le domaine discretise associe au probleme.
const char * reprise_format_temps() const
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...
double computeTimeStep(bool &stop) const override
Compute the value the Problem would like for the next time step.
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...
void validateTimeStep() override
Validates the calculated unknown by moving the present time at the end of the time step.
const Nom & restart_filename() const
std::vector< OWN_PTR(Milieu_base)> & milieu_vect()
static void exit(int exit_code=-1)
Routine de sortie de TRUST dans une region Kokkos.
Cette classe est a la classe C++ ofstream ce que la classe Sortie est a la classe C++ ostream Elle re...
void set_stationnaires_atteints(bool flag)
Classe de base des flux de sortie.