|
TrioCFD 1.9.8
TrioCFD documentation
|
class Schema_Euler_Semi_Implicite Il herite de schema Euler implicite et porte un solveur, linéaire ou non linéaire. Le principe repose sur une interpolation temporelle (schéma theta) des champs entre les pas de temps n et n+1. Pour un champ u(n), on écrit : u(n+theta) = theta * u(n+1) + (1-theta) * u(n) Si theta = 1, on a bien un schéma entièrement implicite, si theta = 0, schema explicite (ATTENTION CEPENDANT à la valeur theta=0). introduit un coefficient theta d'interpolation temporelle More...
#include <Schema_Euler_Semi_Implicite.h>
Public Member Functions | |
| void | set_param (Param &) const override |
| double | temps_intermediaire () const |
| int | faire_un_pas_de_temps_pb_couple (Probleme_Couple &, int &ok) override |
| int | faire_un_pas_de_temps_eqn_base (Equation_base &) override |
| double | coeff_theta () const |
| bool | is_explicit () |
| Renvoie TRUE si le schéma semi-implicite est totalement explicite (important, car theta = 0 pose problème). | |
| Public Member Functions inherited from Schema_Euler_Implicite | |
| bool | initTimeStep (double dt) override |
| int | lire_motcle_non_standard (const Motcle &mot, Entree &is) override |
| Lecture des parametres de type non simple d'un objet_U a partir d'un flot d'entree. | |
| 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 le temps le temps que doivent rendre les champs a l'appel de valeurs(). | |
| void | Initialiser_Champs (Probleme_base &) |
| void | test_stationnaire (Probleme_base &) |
| int | Iterer_Pb (Probleme_base &, int ite, int &ok) |
| bool | iterateTimeStep (bool &converged) override |
| Calculate the U(n+1) unknown for each equation (if solved) of the problem with the selected time scheme. | |
| const double & | residu_old () const |
| int | mettre_a_jour () override |
| Mise a jour du temps courant (t+=dt) et du nombre de pas de temps effectue (nb_pas_dt_++). | |
| int | reprendre (Entree &) override |
| Reprise d'un Objet_U sur un flot d'entree Methode a surcharger. | |
| void | completer () override |
| int | resolution_monolithique (const Nom &nom) const |
| Entree & | lire_facsec_expert (Entree &) |
| void | lire_facsec_func (Entree &) |
| void | calcul_fac_sec (double &residu_, double &residu_old, double &facsec_) |
| double | facsec_cfl () const |
| Public Member Functions inherited from Schema_Implicite_base | |
| OWN_PTR (Solveur_Implicite_base) &solveur() | |
| const | OWN_PTR (Solveur_Implicite_base) &solveur() const |
| void | set_param (Param ¶m) 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 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 Attributes | |
| double | theta_ =-123. |
| Protected Attributes inherited from Schema_Euler_Implicite | |
| Parser_U | facsec_fn_ |
| bool | facsec_func_ = false |
| int | nb_ite_max = 200 |
| double | residu_old_ = 0 |
| double | facsec_max_ = DMAXFLOAT |
| bool | facsec_cfl_ = false |
| int | nb_ite_sans_accel_ = -1 |
| int | nb_ite_sans_accel_max_ = 20000 |
| double | rapport_residus_ = 1.2 |
| std::vector< std::set< std::string > > | resolution_monolithique_ |
| 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 |
| Protected Member Functions inherited from Schema_Implicite_base | |
| OWN_PTR (Solveur_Implicite_base) le_solveur | |
| 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). | |
class Schema_Euler_Semi_Implicite Il herite de schema Euler implicite et porte un solveur, linéaire ou non linéaire. Le principe repose sur une interpolation temporelle (schéma theta) des champs entre les pas de temps n et n+1. Pour un champ u(n), on écrit : u(n+theta) = theta * u(n+1) + (1-theta) * u(n) Si theta = 1, on a bien un schéma entièrement implicite, si theta = 0, schema explicite (ATTENTION CEPENDANT à la valeur theta=0). introduit un coefficient theta d'interpolation temporelle
Definition at line 32 of file Schema_Euler_Semi_Implicite.h.
|
inline |
Definition at line 48 of file Schema_Euler_Semi_Implicite.h.
|
overridevirtual |
Reimplemented from Schema_Euler_Implicite.
Definition at line 60 of file Schema_Euler_Semi_Implicite.cpp.
|
overridevirtual |
Reimplemented from Schema_Euler_Implicite.
Definition at line 53 of file Schema_Euler_Semi_Implicite.cpp.
| bool Schema_Euler_Semi_Implicite::is_explicit | ( | ) |
Renvoie TRUE si le schéma semi-implicite est totalement explicite (important, car theta = 0 pose problème).
Definition at line 48 of file Schema_Euler_Semi_Implicite.cpp.
|
overridevirtual |
Reimplemented from Schema_Euler_Implicite.
Definition at line 39 of file Schema_Euler_Semi_Implicite.cpp.
|
inline |
Definition at line 42 of file Schema_Euler_Semi_Implicite.h.
|
protected |
Definition at line 52 of file Schema_Euler_Semi_Implicite.h.