⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 menu_num.f90

📁 国外大名顶顶的“台风”并行计算流体力学CFD软件的早期版本的源代码
💻 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 + -