16#include <Schema_Euler_explicite.h>
17#include <Schema_Euler_Implicite.h>
18#include <Fluide_Dilatable_base.h>
19#include <Schema_RK_Williamson.h>
20#include <Schema_RK_Rationnel.h>
21#include <Loi_Fermeture_base.h>
22#include <Pb_Dilatable_base.h>
23#include <Probleme_Couple.h>
24#include <Equation_base.h>
25#include <Perf_counters.h>
44 && !sub_type(
RRK2,sch) && !sub_type(
RK2,sch) && !sub_type(
RK3,sch) && !sub_type(
RK4,sch))
46 Cerr <<
"TRUST can't solve a " <<
que_suis_je() <<
" with a " << sch.
que_suis_je() <<
" time scheme." << finl;
52 Cerr <<
"Coupled problem with unique Euler implicit time scheme with " <<
que_suis_je() <<
"fluid are not allowed!" << finl;
53 Cerr <<
"Choose another time scheme or set a time scheme for each of your problems." << finl;
75 le_fluide_->preparer_pas_temps();
90 for (
auto& itr : liste_loi_fermeture_)
108 statistics().begin_count(STD_COUNTERS::update_variables,statistics().get_last_opened_counter_level()+1);
111 statistics().end_count(STD_COUNTERS::update_variables);
114 statistics().begin_count(STD_COUNTERS::update_variables,statistics().get_last_opened_counter_level()+1);
117 le_fluide_->calculer_coeff_T();
120 le_fluide_->calculer_masse_volumique();
123 le_fluide_->Resoudre_EDO_PT();
126 le_fluide_->calculer_masse_volumique();
127 statistics().end_count(STD_COUNTERS::update_variables);
130 statistics().begin_count(STD_COUNTERS::update_variables,statistics().get_last_opened_counter_level()+1);
133 statistics().end_count(STD_COUNTERS::update_variables);
152 le_fluide_->update_pressure_fields(t);
void mettre_a_jour(double temps) override
Effectue une mise a jour en temps du champ inconnue.
Champ_Inc_base & reculer(int i=1)
Recule le pointeur courant de i pas de temps, dans la liste des valeurs temporelles conservees.
static void set_nom_pb_actuel(const Nom &nom)
virtual int calculer_coeffs_echange(double temps)
Calcul des coefficients d'echange pour les problemes couples thermiques.
virtual void mettre_a_jour(double temps, Domaine_dis_base &, Probleme_base &)
Class defining operators and methods for all reading operation in an input flow (file,...
virtual const Milieu_base & milieu() const =0
virtual const Champ_Inc_base & inconnue() const =0
virtual void mettre_a_jour(double temps)
La valeur de l'inconnue sur le pas de temps a ete calculee.
virtual Domaine_Cl_dis_base & domaine_Cl_dis()
Renvoie le domaine des conditions aux limite discretisee associee a l'equation.
void nommer(const Nom &) override
Donne un nom au champ.
classe Fluide_Dilatable_base Cette classe represente un d'un fluide dilatable,
void preparer_calcul() override
Prepare le fluide au calcul.
void calculer_masse_volumique()
const Nom type_fluide() const
virtual void completer(const Probleme_base &)
Complete le fluide avec les champs inconnus associes au probleme.
: Classe de base des lois de fermetures.
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 void mettre_a_jour(double temps)
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 Pb_Dilatable_base Cette classe est censee factoriser ce qui est commun a l'ensemble
void mettre_a_jour(double temps) override
Effectue une mise a jour en temps du probleme.
void associer_sch_tps_base(const Schema_Temps_base &) override
Associe un schema en temps au probleme.
bool iterateTimeStep(bool &converged) override
In the case solveTimeStep uses an iterative process, this method executes a single iteration.
bool initTimeStep(double dt) override
This method allocates and initializes the unknown and given fields for the future time step.
virtual void update_pressure_fields(double)
void preparer_calcul() override
Prepare le calcul: initialise les parametres du milieu et prepare le calcul de chacune des equations.
void associer_milieu_base(const Milieu_base &) override
Associe un milieu physique aux equations du probleme.
classe Pb_Fluide_base Cette classe a pour but de disposer d une classe amont pour
const Nom & le_nom() const override
Donne le nom de l'Objet_U Methode a surcharger : renvoie "neant" dans cette implementation.
virtual void associer_milieu_base(const Milieu_base &)
Associe un milieu physique aux equations du probleme.
const Domaine & domaine() const
Renvoie le domaine associe au probleme.
virtual void preparer_calcul()
Prepare le calcul: initialise les parametres du milieu et prepare le calcul de chacune des equations.
Postraitements les_postraitements_
virtual void associer_sch_tps_base(const Schema_Temps_base &)
Associe un schema en temps au probleme.
virtual const Milieu_base & milieu() const
Renvoie le milieu physique associe au probleme.
const Schema_Temps_base & schema_temps() const
Renvoie le schema en temps associe au probleme.
virtual int nombre_d_equations() const =0
virtual const Equation_base & equation(int) const =0
bool initTimeStep(double dt) override
This method allocates and initializes the unknown and given fields for the future time step.
const Domaine_dis_base & domaine_dis() const
Renvoie le domaine discretise associe au probleme.
static void exit(int exit_code=-1)
Routine de sortie de TRUST dans une region Kokkos.
: classe RK2 Cette classe represente un schema en temps de Runge Kutta d'ordre 2, cas 1 de Williamson...
: classe RK3 Cette classe represente un schema en temps de Runge Kutta d'ordre 3, cas 7 de Williamson...
: classe RK4 Cette classe represente un schema en temps de Runge Kutta d'ordre 4 degnere (schema a tr...
: classe RRK2 Cette classe represente un schema de Runge Kutta
: classe Schema_Euler_explicite Cette classe represente un schema en temps d'Euler explicite: U(n+1) ...
double temps_courant() const
Renvoie le temps courant.
double pas_de_temps() const
Renvoie le pas de temps (delta_t) courant.
virtual int faire_un_pas_de_temps_eqn_base(Equation_base &)=0
virtual double temps_defaut() const =0
Classe de base des flux de sortie.