16#ifndef Schema_Temps_base_included
17#define Schema_Temps_base_included
19#include <Interface_blocs.h>
20#include <TRUST_Deriv.h>
101 inline const Nom&
le_nom()
const override;
135 virtual int stop()
const;
142 assert(stationnaire_atteint_ != -1);
143 return stationnaire_atteint_;
181 inline int lu()
const {
return lu_; }
204 if (stationnaire_atteint_ == -1)
205 stationnaire_atteint_ = 1;
206 return stationnaire_atteint_;
234 virtual void ajouter_blocs(matrices_t matrices, DoubleTab& secmem,
const Equation_base& eqn,
const tabs_t& semi_impl = {})
const;
239 return disable_progress_ ;
246 return disable_dt_ev_ ;
305 int stationnaire_atteint_ = 0;
306 int stationnaires_atteints_ = 0;
308 bool disable_progress_ =
false;
309 bool disable_dt_ev_ =
false;
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....
Classe Matrice_Base Classe de base de la hierarchie des matrices.
Une chaine de caractere (Nom) en majuscules.
class Nom Une chaine de caractere pour nommer les objets de TRUST
Objet_U()
Constructeur par defaut : attribue un numero d'identifiant unique a l'objet (object_id_),...
Helper class to factorize the readOn method of Objet_U classes.
classe Parser_U Version de la classe Parser, derivant de Objet_U.
classe Probleme_base C'est un Probleme_U qui n'est pas un couplage.
static void abort()
Routine de sortie de Trio-U sur une erreur abort().
Cette classe est a la classe C++ ofstream ce que la classe Sortie est a la classe C++ ostream Elle re...
int seuil_statio_relatif_deconseille_
Drapeau pour specifier si seuil_statio_ est une valeur absolue (defaut) ou relative.
int diffusion_implicite() const
Renvoie 1 si le schema en temps a ete lu diffusion_implicite.
virtual Entree & lire_periode_sauvegarde_securite_en_heures(Entree &)
int impr_extremums() const
bool & set_indice_nb_pas_dt_max_atteint()
int precision_impr_
Nombre de chiffres significatifs impression.
int limpr() const
Renvoie 1 s'il y a lieu d'effectuer une impression (cf dt_impr) Renvoie 0 sinon.
virtual double computeTimeStep(bool &stop) const
int & set_stationnaire_atteint()
int nb_impr() const
Renvoie le nombre d'impressions effectuees.
const Nom & le_nom() const override
surcharge Objet_U::le_nom() Renvoie le nom du shema en temps
bool ind_nb_pas_dt_max_atteint
virtual bool isStationary() const
Retourne 1 si lors du dernier pas de temps, le probleme n'a pas evolue.
int stationnaire_atteint_safe() const
double temps_courant() const
Renvoie le temps courant.
double & set_temps_courant()
int impr_diffusion_implicite() const
virtual void resetTime(double time)
int no_error_if_not_converged_diffusion_implicite() const
Nom dt_max_str_
reglage de dt_max comme une fonction du temps
OBS_PTR(Probleme_base) mon_probleme
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.
int sauvegarder(Sortie &) const override
Sauvegarde le temps courant et le nombre de pas de temps sur un flot de sortie.
int nb_pas_dt_max_atteint() const
Renvoie 1 si (le nombre de pas de temps >= nombre de pas de temps maximum).
Parser_U dt_max_fn_
Parser_U associe.
virtual void set_param(Param &titi) const override
int nb_sauv_
how many checkpoints have we performed so far?
const Nom & norm_residu() const
double dt_
Pas de temps de calcul.
int gnuplot_header() const
virtual void ajouter_inertie(Matrice_Base &mat_morse, DoubleTab &secmem, const Equation_base &eqn) const
virtual double temps_futur(int i) const =0
int precision_impr() const
bool disable_progress() const
double dt_failed_
Si on a rate un pas de temps, sa valeur.
double pas_temps_max() const
Renvoie le pas de temps maximum.
int no_error_if_not_converged_diff_impl_
virtual void associer_pb(const Probleme_base &)
void write_dt_ev(bool init)
void nommer(const Nom &) override
surcharge Objet_U::nommer(const Nom&) Donne un nom au shema en temps
double temps_max() const
Renvoie une reference sur le temps maximum.
double dt_max_
Pas de temps max fixe par l'utilisateur.
double mode_dt_start_
Mode calcul du pas de temps de depart - contient un double si option dt_init.
int & set_precision_impr()
virtual void abortTimeStep()
virtual void changer_temps_courant(const double)
Change le temps courant.
double periode_cpu_sans_sauvegarde_
Par defaut 23 heures;.
bool ind_tps_final_atteint
double limite_cpu_sans_sauvegarde_
Par defaut 23 heures;.
double temps_calcul() const
Renvoie le temps de calcul ecoule i.
int nb_sauv_max() const
Renvoie le nb maximum de sauvegarde (estimation).
int indice_tps_final_atteint() const
int temps_final_atteint() const
Renvoie 1 si le temps final est atteint (ou depasse).
virtual int stop() const
Renvoie 1 si il y lieu de stopper le calcul pour differente raisons: - le temps final est atteint.
int & set_niter_max_diffusion_implicite()
Probleme_base & pb_base()
bool disable_dt_ev() const
virtual void validateTimeStep()
void imprimer_temps_courant(SFichier &) const
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.
virtual int impr(Sortie &os) const
Impression du numero du pas de temps, la valeur du pas de temps.
double pas_temps_min() const
Renvoie le pas de temps minimum.
int & set_diffusion_implicite()
int niter_max_diff_impl_
Iterations maximale pour GC implicitation - Above 1000 iterations, diffusion implicit algorithm may b...
double & set_temps_init()
virtual void ajouter_blocs(matrices_t matrices, DoubleTab &secmem, const Equation_base &eqn, const tabs_t &semi_impl={}) const
double pas_de_temps() const
Renvoie le pas de temps (delta_t) courant.
int no_conv_subiteration_diff_impl_
double seuil_diffusion_implicite() const
void notify_failed_timestep()
double & set_temps_precedent()
DoubleTab dt_locaux_
Local time steps: Vector of size nb faces of the mesh.
const DoubleTab & pas_de_temps_locaux() const
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()
virtual int nb_valeurs_futures() const =0
virtual Entree & lire_residuals(Entree &)
virtual void modifier_second_membre(const Equation_base &eqn, DoubleTab &secmem)
int nb_sauv_max_
Max number of checkpoints that will be performed (useful for PDI backup file).
virtual int faire_un_pas_de_temps_eqn_base(Equation_base &)=0
int niter_max_diffusion_implicite() const
int nb_pas_dt() const
Renvoie le nombre de pas de temps effectues.
const double & residu() const
double dt_impr_
Pas de temps d'impression.
int stop_lu() const
Renvoie 1 si le fichier (d'extension) .
double mode_dt_start() const
double dt_min_
Pas de temps min fixe par l'utilisateur.
int reprendre(Entree &) override
Reprise (lecture) du temps courant et du nombre de pas de temps effectues a partir d'un flot d'entree...
const int & schema_impr() const
virtual bool iterateTimeStep(bool &converged)
Calculate the U(n+1) unknown for each equation (if solved) of the problem with the selected time sche...
double temps_init() const
Renvoie le temps initial.
double & set_seuil_statio()
virtual int nb_valeurs_temporelles() const =0
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 stationnaire_atteint() const
double dt_stab_
Pas de temps de stabilite.
double & set_seuil_diffusion_implicite()
int indice_nb_pas_dt_max_atteint() const
int no_conv_subiteration_diffusion_implicite() const
virtual Entree & lire_temps_cpu_max(Entree &)
virtual void mettre_a_jour_dt_stab()
int temps_cpu_max_atteint() const
virtual void mettre_a_jour_dt(double toto)
virtual double temps_defaut() const =0
int file_allocation() const
virtual Entree & lire_nb_pas_dt_max(Entree &)
Lecture du nombre de pas de temps maximal.
bool & set_indice_tps_final_atteint()
int nb_pas_dt_max() const
Renvoie une reference sur le nombre de pas maxi.
double seuil_diff_impl_
Seuil pour implicitation de la diffusion par GC.
void update_critere_statio(const DoubleTab &tab_critere, Equation_base &equation)
//Actualisation de stationnaire_atteint_ et residu_ (critere residu_<seuil_statio_)
bool ind_temps_cpu_max_atteint
void write_progress(bool init)
Ecriture du fichier .progress (temps CPU estime restant).
double facteur_securite_pas() const
Renvoie le facteur de securite ou multiplicateur de delta_t.
virtual void completer()=0
double & set_mode_dt_start()
void finir() const
Fermeture du fichier .dt_ev.
void set_stationnaires_atteints(bool flag)
double temps_precedent() const
Renvoie le temps courant.
Classe de base des flux de sortie.