16#include <Schema_Cahn_Hilliard.h>
17#include <Probleme_base.h>
57 int compteur = 0, ok = 1;
85 Cout<<
"==========================================================================================" << finl;
86 Cout<<
"Schema_Cahn_Hilliard: Implicit solver on the "<<eq_ch.
que_suis_je() <<
" equation of the problem "<< eq_ch.
probleme().
le_nom()<<
" :" <<finl;
87 Cout<<
"==========================================================================================" << finl;
92 le_solveur->iterer_eqn(eq_ch, passe, present,
theta_*
dt_, compteur, ok);
98 Cerr <<
"[faire_un_pas_de_temps_eqn_base] Total fail: returns 0." << finl;
103 for (
int elem = 0; elem < eq_ch.
domaine_dis().nb_elem_tot(); elem++)
104 for (
int p = 0; p < eq_ch.
fermeture().nb_parametres_d_ordre(); p++)
107 present(elem,p) = present(elem,p) - (1 -
theta_) * passe(elem,p);
108 present(elem,p) /=
theta_;
127 Cout<<
"==================================================================================" << finl;
128 Cout<<
"Schema_Cahn_Hilliard: Explicit case on the "<<eq_ch.
que_suis_je() <<
" equation of the problem "<< eq_ch.
probleme().
le_nom()<<
" :" <<finl;
129 Cout<<
"==================================================================================" << finl;
131 DoubleTrav dudt(futur);
void calculer_contribution_CL_concentration(const DoubleTab &)
Renvoie la contribution des conditions limites sur la concentration sous forme d'un vecteur (multi-co...
bool matrices_initialisees()
const Fermeture_Thermo_base & fermeture() const
void compute_mutilde()
Calcul de mutilde = beta*dW/dc - ∇. kappa ∇c.
void initialiser_matrices()
void calculer_contribution_CL_mutilde(const DoubleTab &)
Renvoie la contribution des conditions limites sur le potentiel chimique sous forme d'un vecteur (mul...
const Champ_Inc_base & mutilde() const
DoubleTab & derivee_en_temps_inco(DoubleTab &) override
Returns the time derivative of the unknown I of the equation: dI/dt = M-1*(sum(operators(I) + sources...
Domaine_Cl_dis_base & domaine_Cl_dis_mutilde()
void update_terme_mobilite(const DoubleTab &)
const Champ_Inc_base & inconnue() const override
Renvoie la concentration (champ inconnue de l'equation) (version const).
DoubleTab & futur(int i=1) override
Renvoie les valeurs du champs a l'instant t+i.
DoubleTab & passe(int i=1) override
Renvoie les valeurs du champs a l'instant t-i.
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 Domaine_Cl_dis_base & domaine_Cl_dis()
Renvoie le domaine des conditions aux limite discretisee associee a l'equation.
Probleme_base & probleme()
Renvoie le probleme associe a l'equation.
Domaine_dis_base & domaine_dis()
Renvoie le domaine discretise associe a l'equation.
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.
const Nom & le_nom() const override
Donne le nom de l'Objet_U Methode a surcharger : renvoie "neant" dans cette implementation.
classe Probleme_base C'est un Probleme_U qui n'est pas un couplage.
virtual const Equation_base & equation(int) const =0
class Schema_Cahn_Hilliard. Il herite de schema Euler semi implicite et ne s'applique qu'à Cahn-Hilli...
bool iterateTimeStep(bool &converged) override
Calculate the U(n+1) unknown for each equation (if solved) of the problem with the selected time sche...
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.
class Schema_Euler_Semi_Implicite Il herite de schema Euler implicite et porte un solveur,...
bool is_explicit()
Renvoie TRUE si le schéma semi-implicite est totalement explicite (important, car theta = 0 pose prob...
double temps_courant() const
Renvoie le temps courant.
double dt_
Pas de temps de calcul.
Probleme_base & pb_base()
double pas_de_temps() const
Renvoie le pas de temps (delta_t) courant.
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.