17#include <Schema_Cahn_Hilliard_Navier_Stokes.h>
40 if (mot ==
"Schema_convection")
44 schema_convection_.typer(type_sch);
45 is >> schema_convection_.valeur();
81 schema_convection_->associer_pb(un_probleme);
93 schema_convection_->initialize();
99 schema_convection_->initTimeStep(dt);
106 schema_convection_->changer_temps_courant(t);
115 for (
int i = nb_eqn - 1; i > -1; i--)
120 Cout <<
"====================================================" << finl;
121 Cout << eqn_i.
que_suis_je() <<
" equation is not solved." << finl;
122 Cout <<
"====================================================" << finl;
141 if (eqn.
que_suis_je() ==
"Cahn_Hilliard_Convection")
149 schema_convection_->faire_un_pas_de_temps_eqn_base(eqn);
157 bool ok = schema_convection_->corriger_dt_calcule(dt);
164 schema_convection_->mettre_a_jour();
175 schema_convection_->imprimer(os);
DoubleTab & valeurs() override
Renvoie le tableau des valeurs du champ au temps courant.
double temps() const
Renvoie le temps du champ.
virtual void mettre_a_jour(double temps)
Effectue une mise a jour en temps de toutes les conditions aux limites.
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 int equation_non_resolue() const
virtual const Milieu_base & milieu() const =0
virtual const Champ_Inc_base & inconnue() const =0
virtual DoubleTab & derivee_en_temps_inco(DoubleTab &)
Returns the time derivative of the unknown I of the equation: dI/dt = M-1*(sum(operators(I) + sources...
virtual Domaine_Cl_dis_base & domaine_Cl_dis()
Renvoie le domaine des conditions aux limite discretisee associee a l'equation.
Schema_Temps_base & schema_temps()
Renvoie le schema en temps associe a l'equation.
virtual void mettre_a_jour(double temps)
Une chaine de caractere (Nom) en majuscules.
class Nom Une chaine de caractere pour nommer les 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.
Helper class to factorize the readOn method of Objet_U classes.
void ajouter_non_std(const char *keyword, const Objet_U *value, Param::Nature nat=Param::OPTIONAL)
Register a keyword handled by Objet_U::lire_motcle_non_standard.
classe Probleme_base C'est un Probleme_U qui n'est pas un couplage.
virtual int nombre_d_equations() const =0
virtual const Equation_base & equation(int) const =0
: class Schema_CH_NS_Partitionne
void initialize() override
void set_param(Param &) const override
void associer_pb(const Probleme_base &) override
int faire_un_pas_de_temps_eqn_base(Equation_base &) override
Effectue un pas de temps sur l'equation de Cahn-Hilliard, d'où le test sur le sub_type.
bool iterateTimeStep(bool &converged) override
Calculate the U(n+1) unknown for each equation (if solved) of the problem with the selected time sche...
bool initTimeStep(double dt) override
int mettre_a_jour() override
Mise a jour du temps courant (t+=dt) et du nombre de pas de temps effectue (nb_pas_dt_++).
int stop() const override
Renvoie 1 si il y lieu de stopper le calcul pour differente raisons: - le temps final est atteint.
void changer_temps_courant(const double t) override
Change le temps courant.
void completer() override
bool corriger_dt_calcule(double &dt) const override
Corrige le pas de temps calcule que l'on passe en parametre et verifie qu'il n'est pas "trop" petit (...
int lire_motcle_non_standard(const Motcle &, Entree &) override
Lecture des parametres de type non simple d'un objet_U a partir d'un flot d'entree.
void imprimer(Sortie &os) const override
Imprime le pas de temps sur un flot de sortie s'il y a lieu.
class Schema_Cahn_Hilliard. Il herite de schema Euler semi implicite et ne s'applique qu'à Cahn-Hilli...
int faire_un_pas_de_temps_eqn_base(Equation_base &) override
Effectue un pas de temps sur l'equation de Cahn-Hilliard, d'où le test sur le sub_type.
bool & set_indice_nb_pas_dt_max_atteint()
int & set_stationnaire_atteint()
virtual bool isStationary() const
Retourne 1 si lors du dernier pas de temps, le probleme n'a pas evolue.
double temps_courant() const
Renvoie le temps courant.
double & set_temps_courant()
virtual bool corriger_dt_calcule(double &dt) const
Corrige le pas de temps calcule que l'on passe en parametre et verifie qu'il n'est pas "trop" petit (...
double temps_sauv() const
Renvoie une reference sur le temps de sauvegarde.
double temps_impr() const
Renvoie une reference sur le temps d'impression.
virtual void set_param(Param &titi) const override
double dt_
Pas de temps de calcul.
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.
virtual void changer_temps_courant(const double)
Change le temps courant.
int indice_tps_final_atteint() const
virtual int stop() const
Renvoie 1 si il y lieu de stopper le calcul pour differente raisons: - le temps final est atteint.
Probleme_base & pb_base()
int lire_motcle_non_standard(const Motcle &, Entree &) override
Lecture des parametres de type non simple d'un objet_U a partir d'un flot d'entree.
double pas_temps_min() const
Renvoie le pas de temps minimum.
double & set_temps_init()
double pas_de_temps() const
Renvoie le pas de temps (delta_t) courant.
virtual void imprimer(Sortie &os) const
Imprime le pas de temps sur un flot de sortie s'il y a lieu.
virtual void initialize()
virtual bool initTimeStep(double dt)
double seuil_statio() const
Renvoie une reference sur le seuil stationnaire.
int & set_nb_pas_dt_max()
int nb_pas_dt() const
Renvoie le nombre de pas de temps effectues.
double mode_dt_start() const
double temps_init() const
Renvoie le temps initial.
double & set_seuil_statio()
virtual int mettre_a_jour()
Mise a jour du temps courant (t+=dt) et du nombre de pas de temps effectue (nb_pas_dt_++).
int indice_nb_pas_dt_max_atteint() const
bool & set_indice_tps_final_atteint()
int nb_pas_dt_max() const
Renvoie une reference sur le nombre de pas maxi.
double facteur_securite_pas() const
Renvoie le facteur de securite ou multiplicateur de delta_t.
virtual void completer()=0
double & set_mode_dt_start()
Classe de base des flux de sortie.