📄 menu_num.f90
字号:
!------------------------------------------------------------------------------!! MODULE : MENU_NUM Auteur : J. Gressier! Date : Mai 2002! Fonction Modif : (cf historique)! Definition des structures pour les entrees du programme TYPHON! Structures pour les options numeriques!! Defauts/Limitations/Divers :!!------------------------------------------------------------------------------!module MENU_NUMuse TYPHMAKE ! Definition de la precisionimplicit none! -- Variables globales du module -------------------------------------------! -- Constantes pour le choix du parametre "temps"!character, parameter :: stationnaire = 'S'!character, parameter :: instationnaire = 'I'!character, parameter :: periodique = 'P'! -- Constantes pour le calcul du pas de tempsinteger(kpp), parameter :: given_dt = 1integer(kpp), parameter :: stab_cond = 2! -- Constantes pour la methode d'integration temporelleinteger(kpp), parameter :: tps_expl = 10 ! integration explicite basiqueinteger(kpp), parameter :: tps_impl = 20 ! integration implicite linearise (theta schema)integer(kpp), parameter :: tps_dualt = 25 ! integration implicite / convergence localeinteger(kpp), parameter :: tps_rk = 30 ! integration en Runge Kutta explicite! -- Constantes pour schema de calcul des flux hyperboliques (sch_hyp)integer(kpp), parameter :: sch_roe = 10integer(kpp), parameter :: sch_osher_no = 15integer(kpp), parameter :: sch_osher_io = 16integer(kpp), parameter :: sch_hllr = 20integer(kpp), parameter :: sch_hlle = 21integer(kpp), parameter :: sch_hllk = 22integer(kpp), parameter :: sch_hllc = 25integer(kpp), parameter :: sch_hllck = 26integer(kpp), parameter :: sch_stegwarm = 30integer(kpp), parameter :: sch_vanleer = 31integer(kpp), parameter :: sch_vanleerh = 32integer(kpp), parameter :: sch_efm = 40integer(kpp), parameter :: sch_efmo = 50integer(kpp), parameter :: sch_ausmm = 50! -- Constantes pour schema de calcul HIGH RESOLUTIONcharacter, parameter :: hres_none = 'N'character, parameter :: hres_muscl = 'M'character, parameter :: hres_eno = 'E'character, parameter :: hres_weno = 'W'character, parameter :: hres_spect = 'S'! -- Constants for limiterscharacter, parameter :: lim_none = 'X'character, parameter :: lim_minmod = 'M'character, parameter :: lim_albada = 'A'character, parameter :: lim_vleer = 'V'character, parameter :: lim_sbee = 'S'! -- Constantes pour schema de calcul des flux dissipatifs (sch_dis)integer(kpp), parameter :: dis_dif2 = 1 ! difference des 2 etats/face (NON CONSISTANT)integer(kpp), parameter :: dis_avg2 = 5 ! moyenne des 2 gradients/faceinteger(kpp), parameter :: dis_full = 10 ! evaluation complete (ponderee de 1 et 5)! -- Constantes pour le calcul des gradients (gradmeth)integer(kpp), parameter :: lsm1 = 10 ! moindres carres basee sur les centres voisins! -- Constantes pour la methode de resolution matricielleinteger(kpp), parameter :: alg_lu = 10 ! resolution directe LUinteger(kpp), parameter :: alg_cho = 15 ! resolution directe (decomposition Choleski) (SYM)integer(kpp), parameter :: alg_jac = 20 ! resolution iterative Jacobiinteger(kpp), parameter :: alg_gs = 25 ! resolution iterative Gauss-Seidelinteger(kpp), parameter :: alg_sor = 26 ! resolution iterative Gauss-Seidel avec OverRelaxationinteger(kpp), parameter :: alg_gmres = 40 ! resol. par proj. : GMRES! -- DECLARATIONS -----------------------------------------------------------!------------------------------------------------------------------------------!! structure MNU_RK : options numeriques pour la methode Runge Kutta!------------------------------------------------------------------------------!type mnu_rk integer(kpp) :: order ! ordre d'integration temporelle Runge-Kuttaendtype mnu_rk!------------------------------------------------------------------------------!! structure MNU_IMP : options numeriques pour l'implicitation!------------------------------------------------------------------------------!type mnu_imp integer(kpp) :: methode ! methode d'inversion matricielle integer(kpp) :: max_it ! nombre d'iteration maximal real(krp) :: ponderation ! ponderation implicite/explicite real(krp) :: maxres ! residu maximal pour convergence de l'inversion real(krp) :: overrelax ! parametre de surrelaxationendtype mnu_imp!------------------------------------------------------------------------------!! structure MNU_TIME : options numeriques pour l'integration temporelle!------------------------------------------------------------------------------!type mnu_time integer(kpp) :: temps ! (S)tationnaire, (I)nstationnaire, (P)eriodique integer(kpp) :: tps_meth ! methode d'integration temporelle logical :: local_dt ! methode de calcul du pas de temps (global/local) integer(kpp) :: stab_meth ! methode de calcul de la stabilite real(krp) :: dt, stabnb ! pas de temps fixe ou nombre de stabilite associe ! (CFL/Fourier) real(krp) :: maxres ! residu maximal pour convergence de la zone type(mnu_rk) :: rk ! parametres de la methode Runge Kutta type(mnu_imp) :: implicite ! parametres pour la methode d'implicitationendtype mnu_time!------------------------------------------------------------------------------!! structure MNU_MUSCL : options numeriques pour la methode MUSCL!------------------------------------------------------------------------------!type mnu_muscl integer(kpp) :: sch_grad ! type de schema pour les gradients real(krp) :: precision ! parametre de precision real(krp) :: compression ! parametre de compression character :: limiter ! limiteur (X) aucun, (M)inmod, (V)an Leer ! (A) Van Albada, (S)uperbeeendtype mnu_muscl!------------------------------------------------------------------------------!! structure MNU_SPAT : options numeriques pour l'integration spatiale!------------------------------------------------------------------------------!type mnu_spat integer(kpp) :: order ! ordre d'integration spatiale integer(kpp) :: sch_hyp ! type de schema pour les flux hyperboliques integer(kpp) :: sch_dis ! type de schema pour les flux dissipatifs character :: method ! methode d'ordre eleve (M)USCL, (E)NO integer(kpp) :: gradmeth ! methode de calcul des gradients logical :: calc_grad ! necessite le calcul des gradients type(mnu_muscl) :: muscl ! parametres de la methode MUSCLendtype mnu_spat! -- INTERFACES -------------------------------------------------------------! -- Fonctions et Operateurs ------------------------------------------------! -- IMPLEMENTATION ---------------------------------------------------------!containsendmodule MENU_NUM!------------------------------------------------------------------------------!! Historique des modifications!! mai 2002 : creation du module! aout 2003 : parametres pour l'integration temporelle (Fourier, residu)! sept 2003 : parametres pour l'integration spatiale (calcul de gradients)!------------------------------------------------------------------------------!
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -