16#include <Sch_CN_EX_iteratif.h>
17#include <Probleme_base.h>
18#include <Navier_Stokes_std.h>
106 DoubleTab& intermediaire = eqn.
inconnue().
valeurs(temps_intermediaire);
109 DoubleTab dudt(present);
111 DoubleTab delta(intermediaire);
112 DoubleTab old(intermediaire);
135 intermediaire = dudt;
136 intermediaire*= dt_intermediaire;
137 intermediaire+= present;
138 intermediaire*= (1-
omega);
148 final.echange_espace_virtuel();
151 delta+=intermediaire;
192 double dt_2=temps_final-temps_intermediaire;
195 DoubleTab& intermediaire = eqn.
inconnue().
valeurs(temps_intermediaire);
198 DoubleTab dIdt(present);
201 double nb_dt_1, nb_dt_2;
202 modf(ceil(dt_1/dt_eq), &nb_dt_1);
203 modf(ceil(dt_2/dt_eq), &nb_dt_2);
205 double dt_eq_1=dt_1/nb_dt_1;
206 double dt_eq_2=dt_2/nb_dt_2;
209 intermediaire=present;
210 for (
double k=0.; k<nb_dt_1; k=k+1.)
222 intermediaire+= dIdt;
233 for (
double k=0.; k<nb_dt_2; k=k+1.)
DoubleTab & valeurs() override
Renvoie le tableau des valeurs du champ au temps courant.
Champ_Inc_base & avancer(int i=1)
Avance le pointeur courant de i pas de temps, dans la liste des valeurs temporelles conservees.
Champ_Inc_base & reculer(int i=1)
Recule le pointeur courant de i pas de temps, dans la liste des valeurs temporelles conservees.
virtual void imposer_cond_lim(Champ_Inc_base &, double)=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 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.
virtual double calculer_pas_de_temps() const
Calcul du prochain pas de temps.
classe Navier_Stokes_std Cette classe porte les termes de l'equation de la dynamique
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(const char *keyword, const int *value, Param::Nature nat=Param::OPTIONAL)
Register an integer parameter.
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
classe Sch_CN_EX_iteratif
virtual bool iterateTimeStepOnOther(int i, bool &converged)
void mettre_a_jour_dt_stab() override
Ne tient compte que de l'equation de Navier Stokes du probleme (s'il y en a une) Les autres ne sont p...
virtual bool iterateTimeStepOnNS(int i, bool &converged)
void ajuster_facsec(type_convergence cv) override
void set_param(Param &titi) const override
bool iterateTimeStepOnEquation(int i, bool &converged) override
Calcule une iteration de la resolution sur l'equation i.
classe Sch_CN_iteratif Schema en temps alternant un demi-pas de temps d'Euler implicite et un demi-pa...
virtual bool divergence(const DoubleTab &u0, const DoubleTab &up1, const DoubleTab &delta, int p) const
Indique si le calcul iteratif a diverge.
virtual bool convergence(const DoubleTab &u0, const DoubleTab &up1, const DoubleTab &delta, int p) const
Indique si le calcul iteratif a converge.
void set_param(Param &titi) const override
double temps_futur(int i) const override
Renvoie le le temps a la i-eme valeur future.
int & set_stationnaire_atteint()
double temps_courant() const
Renvoie le temps courant.
Probleme_base & pb_base()
virtual void imprimer(Sortie &os) const
Imprime le pas de temps sur un flot de sortie s'il y a lieu.
double dt_stab_
Pas de temps de stabilite.
void update_critere_statio(const DoubleTab &tab_critere, Equation_base &equation)
//Actualisation de stationnaire_atteint_ et residu_ (critere residu_<seuil_statio_)
Classe de base des flux de sortie.
virtual void echange_espace_virtuel(IsExchangeBlocking exchange_type=IsExchangeBlocking::DefaultBlocking, const std::string kernel_name="noname")