Sch_CN_iteratif#
#include <Sch_CN_iteratif.h>
classe Sch_CN_iteratif Schema en temps alternant un demi - pas de temps d’Euler implicite et un demi - pas de temps de LeapFrog.
How to cite this class in this doc#
:ref:`Sch\_CN\_iteratif <class-sch-cn-iteratif>`
[Sch\_CN\_iteratif](#class-sch-cn-iteratif)
Detailed description#
La resolution implicite est iterative (point fixe). Le pas de temps est calcule comme le produit du pas de temps de stabilite explicite par un facsec. Le facsec est ajuste automatiquement pour que la resolution converge en un nombre d’iterations predefini. Les caracteristiques de chaque iteration sont ecrites dans le fichier dt_CN. La resolution est gouvernee par 4 parametres (valeurs par defauts entre parentheses) : * seuil (1e-3) : le seuil de convergence. Plus il est bas, plus la resolution est precise. * facsec_max (2) : la valeur du facsec que l’on ne veut pas depasser (eviter les instabilites et capter les phenomenes physiques) * niter_min (2) : le nombre minimum d’iterations. En deca, on continue a iterer meme si on semble avoir atteint la convergence. * niter_avg (3) : le nombre d’iterations que l’on souhaite faire pour arriver a convergence. * niter_max (6) : le nombre d’iteration au - dela duquel on reessaye avec un facsec plus petit. Conseil pour le choix des parametres d’ajustement du facsec : * Choisir seuil en fonction de la precision desiree. * Choisir niter_min : 2 garantit un schema d’ordre 2 en temps. * Si on cherche un stationnaire, choisir seuil_statio> = seuil. * Choisir facsec_max en fonction des phenomenes physiques a capter. * Commencer par tester avec une grande valeur de niter_avg. Observer le comportement du nombre d’iterations. Il bute sur une valeur maximum avant de retomber. * Choisir niter_avg aux 2/3 de cette valeur maximum, et niter_max aux 4/3 ou au double environ.
Inherits from#
public : Schema_Temps_base
Inherited by#
public : Sch_CN_EX_iteratif
List of Public Methods#
List of Public Static Methods#
List of Protected Methods#
Complete Member Function Documentation#
void Sch_CN_iteratif::completer() override
Reimplements:
How to cite in this doc:
:ref:`void Sch_CN_iteratif::completer() override <public-void-sch-cn-iteratif-completer-override>`
[void Sch_CN_iteratif::completer() override](#public-void-sch-cn-iteratif-completer-override)
int Sch_CN_iteratif::duplique() const override
Reimplements:
How to cite in this doc:
:ref:`int Sch_CN_iteratif::duplique() const override <public-int-sch-cn-iteratif-duplique-const-override>`
[int Sch_CN_iteratif::duplique() const override](#public-int-sch-cn-iteratif-duplique-const-override)
int Sch_CN_iteratif::faire_un_pas_de_temps_eqn_base(Equation_base &) override
Reimplements:
References
How to cite in this doc:
:ref:`int Sch_CN_iteratif::faire_un_pas_de_temps_eqn_base(Equation_base &) override <public-int-sch-cn-iteratif-faire-un-pas-de-temps-eqn-base-equation-base-ref-override>`
[int Sch_CN_iteratif::faire_un_pas_de_temps_eqn_base(Equation_base &) override](#public-int-sch-cn-iteratif-faire-un-pas-de-temps-eqn-base-equation-base-ref-override)
const Type_info * Sch_CN_iteratif::get_info() const override
Donne des informations sur le type de l’ Objet_U .
Reimplements:
How to cite in this doc:
:ref:`const Type_info * Sch_CN_iteratif::get_info() const override <public-const-type-info-ptr-sch-cn-iteratif-get-info-const-override>`
[const Type_info * Sch_CN_iteratif::get_info() const override](#public-const-type-info-ptr-sch-cn-iteratif-get-info-const-override)
bool Sch_CN_iteratif::initTimeStep(double dt) override
Reimplements:
References
How to cite in this doc:
:ref:`bool Sch_CN_iteratif::initTimeStep(double dt) override <public-bool-sch-cn-iteratif-inittimestep-double-dt-override>`
[bool Sch_CN_iteratif::initTimeStep(double dt) override](#public-bool-sch-cn-iteratif-inittimestep-double-dt-override)
bool Sch_CN_iteratif::iterateTimeStep(bool &converged) override
Calculate the U(n + 1) unknown for each equation (if solved) of the problem with the selected time scheme.
Reimplements:
References
How to cite in this doc:
:ref:`bool Sch_CN_iteratif::iterateTimeStep(bool &converged) override <public-bool-sch-cn-iteratif-iteratetimestep-bool-ref-converged-override>`
[bool Sch_CN_iteratif::iterateTimeStep(bool &converged) override](#public-bool-sch-cn-iteratif-iteratetimestep-bool-ref-converged-override)
int Sch_CN_iteratif::nb_valeurs_futures() const override
Renvoie le nombre de valeurs temporelles futures.
Ici : n + 1/2 et n + 1 donc 2.
Reimplements:
How to cite in this doc:
:ref:`int Sch_CN_iteratif::nb_valeurs_futures() const override <public-int-sch-cn-iteratif-nb-valeurs-futures-const-override>`
[int Sch_CN_iteratif::nb_valeurs_futures() const override](#public-int-sch-cn-iteratif-nb-valeurs-futures-const-override)
int Sch_CN_iteratif::nb_valeurs_temporelles() const override
Renvoie le nombre de valeurs temporelles a conserver.
Ici : n, n + 1/2 et n + 1, donc 3
Reimplements:
How to cite in this doc:
:ref:`int Sch_CN_iteratif::nb_valeurs_temporelles() const override <public-int-sch-cn-iteratif-nb-valeurs-temporelles-const-override>`
[int Sch_CN_iteratif::nb_valeurs_temporelles() const override](#public-int-sch-cn-iteratif-nb-valeurs-temporelles-const-override)
Sch_CN_iteratif::Sch_CN_iteratif()
How to cite in this doc:
:ref:`Sch_CN_iteratif::Sch_CN_iteratif() <public-sch-cn-iteratif-sch-cn-iteratif>`
[Sch_CN_iteratif::Sch_CN_iteratif()](#public-sch-cn-iteratif-sch-cn-iteratif)
void Sch_CN_iteratif::set_param(Param &titi) override
Reimplements:
References
Referenced By
How to cite in this doc:
:ref:`void Sch_CN_iteratif::set_param(Param &titi) override <public-void-sch-cn-iteratif-set-param-param-ref-titi-override>`
[void Sch_CN_iteratif::set_param(Param &titi) override](#public-void-sch-cn-iteratif-set-param-param-ref-titi-override)
unsigned Sch_CN_iteratif::taille_memoire() const override
Reimplements:
How to cite in this doc:
:ref:`unsigned Sch_CN_iteratif::taille_memoire() const override <public-unsigned-sch-cn-iteratif-taille-memoire-const-override>`
[unsigned Sch_CN_iteratif::taille_memoire() const override](#public-unsigned-sch-cn-iteratif-taille-memoire-const-override)
double Sch_CN_iteratif::temps_defaut() const override
Renvoie le temps que doivent utiliser les champs a l’appel de valeurs()
Ici : t(n + 1/2)
Reimplements:
References
How to cite in this doc:
:ref:`double Sch_CN_iteratif::temps_defaut() const override <public-double-sch-cn-iteratif-temps-defaut-const-override>`
[double Sch_CN_iteratif::temps_defaut() const override](#public-double-sch-cn-iteratif-temps-defaut-const-override)
double Sch_CN_iteratif::temps_futur(int i) const override
Renvoie le le temps a la i - eme valeur future.
Reimplements:
Referenced By
How to cite in this doc:
:ref:`double Sch_CN_iteratif::temps_futur(int i) const override <public-double-sch-cn-iteratif-temps-futur-int-i-const-override>`
[double Sch_CN_iteratif::temps_futur(int i) const override](#public-double-sch-cn-iteratif-temps-futur-int-i-const-override)
Sch_CN_iteratif::~Sch_CN_iteratif()
How to cite in this doc:
:ref:`Sch_CN_iteratif::~Sch_CN_iteratif() <public-sch-cn-iteratif-dtor-sch-cn-iteratif>`
[Sch_CN_iteratif::~Sch_CN_iteratif()](#public-sch-cn-iteratif-dtor-sch-cn-iteratif)
Objet_U * Sch_CN_iteratif::cree_instance()
How to cite in this doc:
:ref:`Objet_U * Sch_CN_iteratif::cree_instance() <public-static-objet-u-ptr-sch-cn-iteratif-cree-instance>`
[Objet_U * Sch_CN_iteratif::cree_instance()](#public-static-objet-u-ptr-sch-cn-iteratif-cree-instance)
const Type_info * Sch_CN_iteratif::info()
How to cite in this doc:
:ref:`const Type_info * Sch_CN_iteratif::info() <public-static-const-type-info-ptr-sch-cn-iteratif-info>`
[const Type_info * Sch_CN_iteratif::info()](#public-static-const-type-info-ptr-sch-cn-iteratif-info)
const Sch_CN_iteratif & Sch_CN_iteratif::self_cast(const Objet_U &)
How to cite in this doc:
:ref:`const Sch_CN_iteratif & Sch_CN_iteratif::self_cast(const Objet_U &) <public-static-const-sch-cn-iteratif-ref-sch-cn-iteratif-self-cast-const-objet-u-ref>`
[const Sch_CN_iteratif & Sch_CN_iteratif::self_cast(const Objet_U &)](#public-static-const-sch-cn-iteratif-ref-sch-cn-iteratif-self-cast-const-objet-u-ref)
Sch_CN_iteratif & Sch_CN_iteratif::self_cast(Objet_U &)
How to cite in this doc:
:ref:`Sch_CN_iteratif & Sch_CN_iteratif::self_cast(Objet_U &) <public-static-sch-cn-iteratif-ref-sch-cn-iteratif-self-cast-objet-u-ref>`
[Sch_CN_iteratif & Sch_CN_iteratif::self_cast(Objet_U &)](#public-static-sch-cn-iteratif-ref-sch-cn-iteratif-self-cast-objet-u-ref)
void Sch_CN_iteratif::ajuster_facsec(type_convergence cv)
References
Referenced By
How to cite in this doc:
:ref:`void Sch_CN_iteratif::ajuster_facsec(type_convergence cv) <protected-void-sch-cn-iteratif-ajuster-facsec-type-convergence-cv>`
[void Sch_CN_iteratif::ajuster_facsec(type_convergence cv)](#protected-void-sch-cn-iteratif-ajuster-facsec-type-convergence-cv)
bool Sch_CN_iteratif::convergence(const DoubleTab &u0, const DoubleTab &up1, const DoubleTab &delta, int p) const
Indique si le calcul iteratif a converge.
Critere de convergence utilise : || u(n + 1,p + 1) - u(n + 1,p) || <seuil * || u(n + 1/2,p + 1) || C’est equivalent a || u(n + 1,p) - u(n + 1) || <seuil * || (Id - (dt/2).(df/du))^ - 1 || * || u(n + 1/2,p + 1) || ou u(n + 1) est la solution exacte en n + 1, df/du est le lagrangien de f(u), pris en u(n + 1/2) et les normes sont compatibles entre matrices et vecteurs (ici norme infinie).
References
How to cite in this doc:
:ref:`bool Sch_CN_iteratif::convergence(const DoubleTab &u0, const DoubleTab &up1, const DoubleTab &delta, int p) const <protected-bool-sch-cn-iteratif-convergence-const-doubletab-ref-u0-const-doubletab-ref-up1-const-doubletab-ref-delta-int-p-const>`
[bool Sch_CN_iteratif::convergence(const DoubleTab &u0, const DoubleTab &up1, const DoubleTab &delta, int p) const](#protected-bool-sch-cn-iteratif-convergence-const-doubletab-ref-u0-const-doubletab-ref-up1-const-doubletab-ref-delta-int-p-const)
bool Sch_CN_iteratif::divergence(const DoubleTab &u0, const DoubleTab &up1, const DoubleTab &delta, int p) const
Indique si le calcul iteratif a diverge.
How to cite in this doc:
:ref:`bool Sch_CN_iteratif::divergence(const DoubleTab &u0, const DoubleTab &up1, const DoubleTab &delta, int p) const <protected-bool-sch-cn-iteratif-divergence-const-doubletab-ref-u0-const-doubletab-ref-up1-const-doubletab-ref-delta-int-p-const>`
[bool Sch_CN_iteratif::divergence(const DoubleTab &u0, const DoubleTab &up1, const DoubleTab &delta, int p) const](#protected-bool-sch-cn-iteratif-divergence-const-doubletab-ref-u0-const-doubletab-ref-up1-const-doubletab-ref-delta-int-p-const)
bool Sch_CN_iteratif::iterateTimeStepOnEquation(int i, bool &converged)
Calcule une iteration de la resolution sur l’equation i.
Calcule u(n + 1/2,p + 1) = u(n) + f(u(n + 1/2,p))*dt/2 et u(n + 1,p + 1) = u(n) + f(u(n + 1/2,p))*dt ou f donne du/dt en fonction de u Retourne true dans converged si ca ne bouge plus d’une iteration a l’autre, false sinon Renvoie true si OK pour continuer a iterer, false sinon (diverge ou trop d’iterations)
References
Referenced By
How to cite in this doc:
:ref:`bool Sch_CN_iteratif::iterateTimeStepOnEquation(int i, bool &converged) <protected-bool-sch-cn-iteratif-iteratetimesteponequation-int-i-bool-ref-converged>`
[bool Sch_CN_iteratif::iterateTimeStepOnEquation(int i, bool &converged)](#protected-bool-sch-cn-iteratif-iteratetimesteponequation-int-i-bool-ref-converged)
Sortie & Sch_CN_iteratif::printOn(Sortie &x) const override
Surcharge Objet_U::printOn(Sortie&) Imprime le schema en temps sur un flot de sortie.
!! Attention n’est pas symetrique de la lecture !! On ecrit les differents parametres du schema en temps.
Reimplements:
References
Referenced By
How to cite in this doc:
:ref:`Sortie & Sch_CN_iteratif::printOn(Sortie &x) const override <protected-sortie-ref-sch-cn-iteratif-printon-sortie-ref-x-const-override>`
[Sortie & Sch_CN_iteratif::printOn(Sortie &x) const override](#protected-sortie-ref-sch-cn-iteratif-printon-sortie-ref-x-const-override)
Entree & Sch_CN_iteratif::readOn(Entree &) override
Lecture d’un schema en temps a partir d’un flot d’entree.
Le format de lecture attendu est le suivant: { [ Motcle valeur_reelle] } Les mots clefs peuvent etre: tinit, tmax, nb_pas_dt_max, dt_min, dt_max, dt_sauv, dt_impr, facsec, seuil_statio,
Reimplements:
References
How to cite in this doc:
:ref:`Entree & Sch_CN_iteratif::readOn(Entree &) override <protected-entree-ref-sch-cn-iteratif-readon-entree-ref-override>`
[Entree & Sch_CN_iteratif::readOn(Entree &) override](#protected-entree-ref-sch-cn-iteratif-readon-entree-ref-override)
Attributes Documentation#
const Type_info Sch_CN_iteratif::info_obj
double Sch_CN_iteratif::facsec_max = 2
int Sch_CN_iteratif::iteration = - 1
double Sch_CN_iteratif::last_facsec = - 100.
int Sch_CN_iteratif::niter_avg = 3
int Sch_CN_iteratif::niter_max = 6
int Sch_CN_iteratif::niter_min = 2
double Sch_CN_iteratif::seuil = 1.e-3
Enums#
Sch_CN_iteratif::type_convergence#
Location: trust-code/src/ThHyd/Schemas_Temps/Sch_CN_iteratif.h:81
How to cite in this doc:
:ref:`Sch\_CN\_iteratif::type\_convergence <enum-none-sch-cn-iteratif-type-convergence>`
[Sch\_CN\_iteratif::type\_convergence](#enum-none-sch-cn-iteratif-type-convergence)
DIVERGENCE
NON_CONVERGENCE
CONVERGENCE_LENTE
CONVERGENCE_RAPIDE
CONVERGENCE_OK