|
TRUST 1.9.8
HPC thermohydraulic platform
|
classe Sch_CN_iteratif Schema en temps alternant un demi-pas de temps d'Euler implicite et un demi-pas de temps de LeapFrog. More...
#include <Sch_CN_iteratif.h>
Public Member Functions | |
| int | nb_valeurs_temporelles () const override |
| Renvoie le nombre de valeurs temporelles a conserver. | |
| int | nb_valeurs_futures () const override |
| Renvoie le nombre de valeurs temporelles futures. | |
| double | temps_futur (int i) const override |
| Renvoie le le temps a la i-eme valeur future. | |
| double | temps_defaut () const override |
| Renvoie le temps que doivent utiliser les champs a l'appel de valeurs(). | |
| bool | initTimeStep (double dt) override |
| bool | iterateTimeStep (bool &converged) override |
| Calculate the U(n+1) unknown for each equation (if solved) of the problem with the selected time scheme. | |
| int | faire_un_pas_de_temps_eqn_base (Equation_base &) override |
| void | completer () override |
| void | set_param (Param &titi) const override |
| Public Member Functions inherited from Schema_Temps_base | |
| virtual void | initialize () |
| virtual void | terminate () |
| virtual double | computeTimeStep (bool &stop) const |
| virtual void | validateTimeStep () |
| virtual bool | isStationary () const |
| Retourne 1 si lors du dernier pas de temps, le probleme n'a pas evolue. | |
| virtual void | abortTimeStep () |
| virtual void | resetTime (double time) |
| int | limpr () const |
| Renvoie 1 s'il y a lieu d'effectuer une impression (cf dt_impr) Renvoie 0 sinon. | |
| void | nommer (const Nom &) override |
| surcharge Objet_U::nommer(const Nom&) Donne un nom au shema en temps | |
| const Nom & | le_nom () const override |
| surcharge Objet_U::le_nom() Renvoie le nom du shema en temps | |
| int | sauvegarder (Sortie &) const override |
| Sauvegarde le temps courant et le nombre de pas de temps sur un flot de sortie. | |
| int | reprendre (Entree &) override |
| Reprise (lecture) du temps courant et du nombre de pas de temps effectues a partir d'un flot d'entree. | |
| virtual int | mettre_a_jour () |
| Mise a jour du temps courant (t+=dt) et du nombre de pas de temps effectue (nb_pas_dt_++). | |
| virtual void | mettre_a_jour_dt (double toto) |
| virtual void | mettre_a_jour_dt_stab () |
| double | pas_de_temps () const |
| Renvoie le pas de temps (delta_t) courant. | |
| const DoubleTab & | pas_de_temps_locaux () const |
| 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 (< dt-min_). | |
| virtual void | imprimer (Sortie &os) const |
| Imprime le pas de temps sur un flot de sortie s'il y a lieu. | |
| virtual int | impr (Sortie &os) const |
| Impression du numero du pas de temps, la valeur du pas de temps. | |
| void | imprimer (Sortie &os, Probleme_base &pb) const |
| Imprime le pas de temps sur un flot de sortie s'il y a lieu. | |
| void | imprimer (Sortie &os, const Probleme_base &pb) const |
| virtual int | impr (Sortie &os, Probleme_base &pb) const |
| Impression du numero du pas de temps, la valeur du pas de temps. | |
| virtual int | impr (Sortie &os, const Probleme_base &pb) const |
| void | imprimer_temps_courant (SFichier &) const |
| double | pas_temps_min () const |
| Renvoie le pas de temps minimum. | |
| double & | pas_temps_min () |
| Renvoie une reference sur le pas de temps minimum. | |
| double | pas_temps_max () const |
| Renvoie le pas de temps maximum. | |
| double & | pas_temps_max () |
| Renvoie une reference sur le pas de temps maximum. | |
| int | nb_impr () const |
| Renvoie le nombre d'impressions effectuees. | |
| double | temps_courant () const |
| Renvoie le temps courant. | |
| double | temps_precedent () const |
| Renvoie le temps courant. | |
| double | temps_calcul () const |
| Renvoie le temps de calcul ecoule i. | |
| virtual void | changer_temps_courant (const double) |
| Change le temps courant. | |
| void | update_critere_statio (const DoubleTab &tab_critere, Equation_base &equation) |
| //Actualisation de stationnaire_atteint_ et residu_ (critere residu_<seuil_statio_) | |
| double | facteur_securite_pas () const |
| Renvoie le facteur de securite ou multiplicateur de delta_t. | |
| double & | facteur_securite_pas () |
| Renvoie une reference sur le facteur de securite ou multiplicateur de delta_t. | |
| void | notify_failed_timestep () |
| virtual int | stop () const |
| Renvoie 1 si il y lieu de stopper le calcul pour differente raisons: - le temps final est atteint. | |
| int | lsauv () const |
| int | temps_final_atteint () const |
| Renvoie 1 si le temps final est atteint (ou depasse). | |
| int | nb_pas_dt_max_atteint () const |
| Renvoie 1 si (le nombre de pas de temps >= nombre de pas de temps maximum). | |
| int | temps_cpu_max_atteint () const |
| int | stationnaire_atteint () const |
| int | stationnaire_atteint_safe () const |
| int | stop_lu () const |
| Renvoie 1 si le fichier (d'extension) . | |
| int | diffusion_implicite () const |
| Renvoie 1 si le schema en temps a ete lu diffusion_implicite. | |
| double | seuil_diffusion_implicite () const |
| int | impr_diffusion_implicite () const |
| int | impr_extremums () const |
| int | niter_max_diffusion_implicite () const |
| int | no_conv_subiteration_diffusion_implicite () const |
| int | no_error_if_not_converged_diffusion_implicite () 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 Entree & | lire_nb_pas_dt_max (Entree &) |
| Lecture du nombre de pas de temps maximal. | |
| virtual Entree & | lire_periode_sauvegarde_securite_en_heures (Entree &) |
| virtual Entree & | lire_temps_cpu_max (Entree &) |
| virtual Entree & | lire_residuals (Entree &) |
| double | temps_init () const |
| Renvoie le temps initial. | |
| double | temps_max () const |
| Renvoie une reference sur le temps maximum. | |
| double | temps_sauv () const |
| Renvoie une reference sur le temps de sauvegarde. | |
| int | nb_sauv_max () const |
| Renvoie le nb maximum de sauvegarde (estimation). | |
| double | temps_impr () const |
| Renvoie une reference sur le temps d'impression. | |
| int | precision_impr () const |
| int | wcol () const |
| int | gnuplot_header () const |
| double | seuil_statio () const |
| Renvoie une reference sur le seuil stationnaire. | |
| int | nb_pas_dt_max () const |
| Renvoie une reference sur le nombre de pas maxi. | |
| int | nb_pas_dt () const |
| Renvoie le nombre de pas de temps effectues. | |
| double | mode_dt_start () const |
| int | indice_tps_final_atteint () const |
| int | indice_nb_pas_dt_max_atteint () const |
| int | lu () const |
| int | file_allocation () const |
| double & | set_temps_init () |
| double & | set_temps_max () |
| double & | set_temps_courant () |
| double & | set_temps_precedent () |
| int & | set_nb_pas_dt () |
| int & | set_nb_pas_dt_max () |
| double & | set_dt_min () |
| double & | set_dt_max () |
| double & | set_dt_sauv () |
| double & | set_dt_impr () |
| int & | set_precision_impr () |
| double & | set_dt () |
| double & | set_facsec () |
| double & | set_seuil_statio () |
| int & | set_stationnaire_atteint () |
| void | set_stationnaires_atteints (bool flag) |
| int & | set_diffusion_implicite () |
| double & | set_seuil_diffusion_implicite () |
| int & | set_niter_max_diffusion_implicite () |
| double & | set_mode_dt_start () |
| bool & | set_indice_tps_final_atteint () |
| bool & | set_indice_nb_pas_dt_max_atteint () |
| bool & | set_lu () |
| const double & | residu () const |
| double & | residu () |
| const Nom & | norm_residu () const |
| int & | schema_impr () |
| const int & | schema_impr () const |
| virtual void | associer_pb (const Probleme_base &) |
| Probleme_base & | pb_base () |
| const Probleme_base & | pb_base () const |
| virtual void | modifier_second_membre (const Equation_base &eqn, DoubleTab &secmem) |
| virtual void | ajouter_inertie (Matrice_Base &mat_morse, DoubleTab &secmem, const Equation_base &eqn) const |
| virtual void | ajouter_blocs (matrices_t matrices, DoubleTab &secmem, const Equation_base &eqn, const tabs_t &semi_impl={}) const |
| bool | disable_progress () const |
| void | write_dt_ev (bool init) |
| void | write_progress (bool init) |
| Ecriture du fichier .progress (temps CPU estime restant). | |
| bool | disable_dt_ev () const |
| void | finir () const |
| Fermeture du fichier .dt_ev. | |
| Public Member Functions inherited from Objet_U | |
| ~Objet_U () override | |
| Destructeur, supprime l'objet de la liste d'objets enregistres dans "memoire". | |
| int | numero () const |
| Renvoie l'indice de l'objet dans Memoire::data. | |
| virtual int | duplique () const =0 |
| virtual Sortie & | printOn (Sortie &) const |
| Ecriture de l'objet sur un flot de sortie Methode a surcharger. | |
| virtual Entree & | readOn (Entree &) |
| Lecture d'un Objet_U sur un flot d'entree Methode a surcharger. | |
| virtual unsigned | taille_memoire () const =0 |
| virtual int | est_egal_a (const Objet_U &) const |
| Renvoie 1 si l'objet x et *this sont une seule et meme instance (meme adresse en memoire). | |
| int | get_object_id () const |
| Renvoie l'identifiant unique de l'objet object_id_. | |
| virtual const Type_info * | get_info () const |
| Donne des informations sur le type de l'Objet_U. | |
| const Nom & | que_suis_je () const |
| renvoie la chaine identifiant la classe. | |
| const char * | le_type () const |
| Donne le nom du type de l'Objet_U. | |
| virtual int | change_num (const int *const) |
| Change le numero interne de l'Objet_U. | |
| virtual int | associer_ (Objet_U &) |
| Associe l'Objet_U a un autre Objet_U Methode virtuelle a surcharger. | |
| const Interprete & | interprete () const |
| Interprete & | interprete () |
| Public Member Functions inherited from Process | |
| virtual | ~Process () |
Protected Types | |
| enum | type_convergence { DIVERGENCE , NON_CONVERGENCE , CONVERGENCE_LENTE , CONVERGENCE_RAPIDE , CONVERGENCE_OK } |
Protected Member Functions | |
| virtual bool | convergence (const DoubleTab &u0, const DoubleTab &up1, const DoubleTab &delta, int p) const |
| Indique si le calcul iteratif a converge. | |
| virtual bool | divergence (const DoubleTab &u0, const DoubleTab &up1, const DoubleTab &delta, int p) const |
| Indique si le calcul iteratif a diverge. | |
| virtual void | ajuster_facsec (type_convergence cv) |
| virtual bool | iterateTimeStepOnEquation (int i, bool &converged) |
| Calcule une iteration de la resolution sur l'equation i. | |
| Protected Member Functions inherited from Schema_Temps_base | |
| OBS_PTR (Probleme_base) mon_probleme | |
| Protected Member Functions inherited from Objet_U | |
| Objet_U () | |
| Constructeur par defaut : attribue un numero d'identifiant unique a l'objet (object_id_), et enregistre l'objet en "memoire". | |
| Objet_U (const Objet_U &) | |
| Constructeur par copie. | |
| const Objet_U & | operator= (const Objet_U &) |
| Operateur= : ne fait rien (on conserve le numero et l'identifiant). | |
Protected Attributes | |
| double | seuil =1.e-3 |
| int | niter_min =2 |
| int | niter_max =6 |
| int | niter_avg =3 |
| double | facsec_max =2 |
| int | iteration = -1 |
| double | last_facsec = -100. |
| Protected Attributes inherited from Schema_Temps_base | |
| Nom | nom_ |
| double | dt_ = 0.0 |
| Pas de temps de calcul. | |
| DoubleTab | dt_locaux_ |
| Local time steps: Vector of size nb faces of the mesh. | |
| double | temps_courant_ = -100. |
| double | temps_precedent_ = -100. |
| double | dt_failed_ = -100. |
| Si on a rate un pas de temps, sa valeur. | |
| double | dt_gf_ = DMAXFLOAT |
| double | tinit_ = -DMAXFLOAT |
| double | tmax_ = 1.e30 |
| double | tcpumax_ = 1.e30 |
| int | nb_pas_dt_ = 0 |
| int | nb_pas_dt_max_ = std::numeric_limits<int>::max() |
| int | nb_impr_ = 0 |
| double | dt_min_ = 1.e-16 |
| Pas de temps min fixe par l'utilisateur. | |
| double | dt_max_ = 1.e30 |
| Pas de temps max fixe par l'utilisateur. | |
| Nom | dt_max_str_ |
| reglage de dt_max comme une fonction du temps | |
| Parser_U | dt_max_fn_ |
| Parser_U associe. | |
| double | dt_stab_ =-100. |
| Pas de temps de stabilite. | |
| double | facsec_ = 1. |
| double | seuil_statio_ = 1.e-12 |
| int | seuil_statio_relatif_deconseille_ = 0 |
| Drapeau pour specifier si seuil_statio_ est une valeur absolue (defaut) ou relative. | |
| Nom | norm_residu_ |
| double | dt_sauv_ = 1.e30 |
| int | nb_sauv_ = 0 |
| how many checkpoints have we performed so far? | |
| int | nb_sauv_max_ = 10 |
| Max number of checkpoints that will be performed (useful for PDI backup file). | |
| double | limite_cpu_sans_sauvegarde_ = 23 * 3600 |
| Par defaut 23 heures;. | |
| double | periode_cpu_sans_sauvegarde_ = 23 * 3600 |
| Par defaut 23 heures;. | |
| double | temps_cpu_ecoule_ = 0 |
| double | dt_impr_ = 1.e30 |
| Pas de temps d'impression. | |
| int | precision_impr_ = 8 |
| Nombre de chiffres significatifs impression. | |
| double | mode_dt_start_ = -2 |
| Mode calcul du pas de temps de depart - contient un double si option dt_init. | |
| double | residu_ = 0 |
| double | residu_old_slope_ = -1000 |
| double | cumul_slope_ = 1e-20 |
| int | gnuplot_header_ = 0 |
| bool | adapt_dt_tmax_ = false |
| bool | ind_tps_final_atteint = false |
| bool | ind_nb_pas_dt_max_atteint = false |
| bool | ind_temps_cpu_max_atteint = false |
| bool | lu_ = false |
| int | ind_diff_impl_ = 0 |
| double | seuil_diff_impl_ = 1.e-6 |
| Seuil pour implicitation de la diffusion par GC. | |
| int | impr_diff_impl_ = 0 |
| int | impr_extremums_ = 0 |
| int | niter_max_diff_impl_ = 1000 |
| Iterations maximale pour GC implicitation - Above 1000 iterations, diffusion implicit algorithm may be diverging. | |
| int | no_conv_subiteration_diff_impl_ = 0 |
| int | no_error_if_not_converged_diff_impl_ = 0 |
| int | schema_impr_ = -1 |
| int | file_allocation_ = 0 |
| int | max_length_cl_ = -10 |
Additional Inherited Members | |
| Static Public Member Functions inherited from Objet_U | |
| static const Nom & | nom_du_cas () |
| Renvoie une reference constante vers le nom du cas. | |
| static Nom & | get_set_nom_du_cas () |
| Renvoie une reference non constante vers le nom du cas (pour pouvoir le modifier). | |
| static const Type_info * | info () |
| Donne des informations sur le type de l'Objet_U. | |
| static const Objet_U & | self_cast (const Objet_U &) |
| methode ajoutee pour caster en python | |
| static Objet_U & | self_cast (Objet_U &) |
| Static Public Member Functions inherited from Process | |
| static int | me () |
| renvoie mon rang dans le groupe de communication courant. | |
| static int | nproc () |
| renvoie le nombre de processeurs dans le groupe courant Voir Comm_Group::nproc() et PE_Groups::current_group() | |
| static bool | is_parallel () |
| static void | exit (int exit_code=-1) |
| Routine de sortie de TRUST dans une region Kokkos. | |
| static double | mp_sum (double) |
| Calcule la somme de x sur tous les processeurs du groupe courant. | |
| static float | mp_sum (float) |
| static trustIdType | mp_sum (trustIdType) |
| Calcule la somme de x sur tous les processeurs du groupe courant. | |
| static double | mp_max (double) |
| static double | mp_min (double) |
| static int | mp_max (int) |
| renvoie le plus grand int i sur l'ensemble des processeurs du groupe courant. | |
| static int | mp_min (int) |
| renvoie le plus petit int i sur l'ensemble des processeurs du groupe courant. | |
| static double | mp_sum_as_double (int v) |
| static trustIdType | mppartial_sum (trustIdType i) |
| Calul de la somme partielle de i sur les processeurs 0 a me()-1 (renvoie 0 sur le processeur 0). | |
| template<typename T> | |
| static void | mp_sum_for_each (T &arg1, T &arg2) |
| C++14 compatible mp_sum_for_each: combine multiple mp_sum calls into one collective operation Usage: mp_sum_for_each(a, b); mp_sum_for_each(a, b, c); mp_sum_for_each(a, b, c, d); mp_sum_for_each(a, b, c, d, e); All arguments must be of the same type (double or int) and are modified in place. Supports 2-5 parameters. | |
| template<typename T> | |
| static void | mp_sum_for_each (T &arg1, T &arg2, T &arg3) |
| template<typename T> | |
| static void | mp_sum_for_each (T &arg1, T &arg2, T &arg3, T &arg4) |
| template<typename T> | |
| static void | mp_sum_for_each (T &arg1, T &arg2, T &arg3, T &arg4, T &arg5) |
| template<typename T> | |
| static void | mp_max_for_each (T &arg1, T &arg2) |
| C++14 compatible mp_max_for_each: combine multiple mp_max calls into one collective operation. | |
| template<typename T> | |
| static void | mp_max_for_each (T &arg1, T &arg2, T &arg3) |
| template<typename T> | |
| static void | mp_max_for_each (T &arg1, T &arg2, T &arg3, T &arg4) |
| template<typename T> | |
| static void | mp_max_for_each (T &arg1, T &arg2, T &arg3, T &arg4, T &arg5) |
| template<typename T> | |
| static void | mp_min_for_each (T &arg1, T &arg2) |
| C++14 compatible mp_min_for_each: combine multiple mp_min calls into one collective operation. | |
| template<typename T> | |
| static void | mp_min_for_each (T &arg1, T &arg2, T &arg3) |
| template<typename T> | |
| static void | mp_min_for_each (T &arg1, T &arg2, T &arg3, T &arg4) |
| template<typename T> | |
| static void | mp_min_for_each (T &arg1, T &arg2, T &arg3, T &arg4, T &arg5) |
| template<typename _TYPE_> | |
| static void | mp_sum_for_each_item (TRUSTArray< _TYPE_ > &x, int n=-1) |
| template<typename _TYPE_> | |
| static void | mp_max_for_each_item (TRUSTArray< _TYPE_ > &x, int n=-1) |
| template<typename _TYPE_> | |
| static void | mp_min_for_each_item (TRUSTArray< _TYPE_ > &x, int n=-1) |
| static bool | mp_and (bool) |
| Calcule le 'et' logique de b sur tous les processeurs du groupe courant. | |
| static bool | mp_or (bool) |
| static int | check_int_overflow (trustIdType) |
| static int | je_suis_maitre () |
| renvoie 1 si on est sur le processeur maitre du groupe courant (c'est a dire me() == 0), 0 sinon. | |
| static KOKKOS_INLINE_FUNCTION void | Kokkos_exit (const char *) |
| Routine de sortie de TRUST dans une region Kokkos. | |
| static int | node_master () |
| renvoie 1 si on est sur le processeur maitre du noeud numa, 0 sinon. | |
| static void | exit (const Nom &message, int exit_code=-1) |
| static bool | is_sequential () |
| static void | barrier () |
| Synchronise tous les processeurs du groupe courant (attend que tous les processeurs soient arrives a la barriere). | |
| static void | abort () |
| Routine de sortie de Trio-U sur une erreur abort(). | |
| static Sortie & | Journal (int message_level=0) |
| Renvoie un objet statique de type Sortie qui sert de journal d'evenements. | |
| static double | ram_processeur () |
| static void | imprimer_ram_totale (int all_process=0) |
| static bool | force_single_file (const int ranks, const Nom &filename) |
| Static Public Attributes inherited from Objet_U | |
| static double | precision_geom = 1e-10 |
| static constexpr bool | HAS_POINTER = false |
| static int | dimension =0 |
| static int | format_precision_geom =11 |
| static int | axi =0 |
| static int | bidim_axi =0 |
| static int | DEACTIVATE_SIGINT_CATCH =0 |
| static Type_info | info_obj |
| static bool | disable_TU =false |
| Flag to disable or not the writing of the .TU files. | |
| static bool | stat_per_proc_perf_log =false |
| Flag to enable the writing of the statistics detailed per processor in _csv.TU file. | |
| Static Public Attributes inherited from Process | |
| static int | exception_sur_exit =0 |
| static int | multiple_files =5120 |
classe Sch_CN_iteratif Schema en temps alternant un demi-pas de temps d'Euler implicite et un demi-pas de temps de LeapFrog.
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.
Definition at line 48 of file Sch_CN_iteratif.h.
|
protected |
| Enumerator | |
|---|---|
| DIVERGENCE | |
| NON_CONVERGENCE | |
| CONVERGENCE_LENTE | |
| CONVERGENCE_RAPIDE | |
| CONVERGENCE_OK | |
Definition at line 81 of file Sch_CN_iteratif.h.
|
protectedvirtual |
Reimplemented in Sch_CN_EX_iteratif.
Definition at line 41 of file Sch_CN_iteratif.cpp.
|
inlineoverridevirtual |
Implements Schema_Temps_base.
Definition at line 76 of file Sch_CN_iteratif.h.
|
protectedvirtual |
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).
| (DoubleTab& | u0) L'inconnue au debut de l'intervalle de temps u(n). C'est aussi la premiere estimation u(n+1/2,0) de l'inconnue en tn+1/2. |
| (DoubleTab& | up1) Estimation de l'inconnue en tn+1/2 a l'iteration p+1 : u(n+1/2,p+1) |
| (DoubleTab& | delta) u(n+1/2,p+1) - u(n+1/2,p) |
Definition at line 376 of file Sch_CN_iteratif.cpp.
|
protectedvirtual |
Indique si le calcul iteratif a diverge.
| (DoubleTab& | u0) L'inconnue au debut de l'intervalle de temps u(n). C'est aussi la premiere estimation u(n+1/2,0) de l'inconnue en tn+1/2. |
| (DoubleTab& | up1) Estimation de l'inconnue en tn+1/2 a l'iteration p+1 : u(n+1/2,p+1) |
| (DoubleTab& | delta) u(n+1/2,p+1) - u(n+1/2,p) |
Definition at line 392 of file Sch_CN_iteratif.cpp.
|
overridevirtual |
Implements Schema_Temps_base.
Definition at line 353 of file Sch_CN_iteratif.cpp.
|
overridevirtual |
Reimplemented from Schema_Temps_base.
Definition at line 148 of file Sch_CN_iteratif.cpp.
|
overridevirtual |
Calculate the U(n+1) unknown for each equation (if solved) of the problem with the selected time scheme.
Reimplemented from Schema_Temps_base.
Definition at line 165 of file Sch_CN_iteratif.cpp.
|
protectedvirtual |
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)
Reimplemented in Sch_CN_EX_iteratif.
Definition at line 260 of file Sch_CN_iteratif.cpp.
|
overridevirtual |
Renvoie le nombre de valeurs temporelles futures.
Ici : n+1/2 et n+1 donc 2.
Implements Schema_Temps_base.
Definition at line 115 of file Sch_CN_iteratif.cpp.
|
overridevirtual |
Renvoie le nombre de valeurs temporelles a conserver.
Ici : n, n+1/2 et n+1, donc 3
Implements Schema_Temps_base.
Definition at line 105 of file Sch_CN_iteratif.cpp.
|
overridevirtual |
Reimplemented from Schema_Temps_base.
Definition at line 76 of file Sch_CN_iteratif.cpp.
|
overridevirtual |
Renvoie le temps que doivent utiliser les champs a l'appel de valeurs().
Ici : t(n+1/2)
Implements Schema_Temps_base.
Definition at line 137 of file Sch_CN_iteratif.cpp.
|
overridevirtual |
Renvoie le le temps a la i-eme valeur future.
Implements Schema_Temps_base.
Definition at line 123 of file Sch_CN_iteratif.cpp.
|
protected |
Definition at line 93 of file Sch_CN_iteratif.h.
|
protected |
Definition at line 96 of file Sch_CN_iteratif.h.
|
protected |
Definition at line 97 of file Sch_CN_iteratif.h.
|
protected |
Definition at line 92 of file Sch_CN_iteratif.h.
|
protected |
Definition at line 91 of file Sch_CN_iteratif.h.
|
protected |
Definition at line 90 of file Sch_CN_iteratif.h.
|
protected |
Definition at line 89 of file Sch_CN_iteratif.h.