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

📄 def_spat.f90

📁 国外大名顶顶的“台风”并行计算流体力学CFD软件的早期版本的源代码
💻 F90
字号:
!------------------------------------------------------------------------------!! Procedure : def_spat                    Auteur : J. Gressier!                                         Date   : Novembre 2002! Fonction                                Modif  : (cf historique)!   Traitement des parametres du fichier menu principal!   Parametres principaux du projet!! Defauts/Limitations/Divers :!!------------------------------------------------------------------------------!subroutine def_spat(block, defsolver, defspat)use RPMuse TYPHMAKEuse OUTPUTuse VARCOMuse MENU_SOLVERuse MENU_NUMimplicit none! -- Declaration des entrees --type(rpmblock), target :: blocktype(mnu_solver)       :: defsolver! -- Declaration des sorties --type(mnu_spat) :: defspat! -- Declaration des variables internes --type(rpmblock), pointer  :: pblock, pcour  ! pointeur de bloc RPMinteger                  :: nkey           ! nombre de clefsinteger                  :: icharacter(len=dimrpmlig) :: str            ! chaine RPM intermediaire! -- Debut de la procedure --call print_info(5,"- Definition of spatial numerical parameters")! -- Initialisation --defspat%calc_grad = .false.! -- Recherche du BLOCK:SPAT_PARAM --pblock => blockcall seekrpmblock(pblock, "SPAT_PARAM", 0, pcour, nkey)! DEV : est-ce que la presence du bloc est obligatoire ?if (nkey /= 1) call erreur("parameters parsing", &                           "SPAT_PARAM block not found")defspat%calc_grad = .false.select case(defsolver%typ_solver)case(solNS)  call rpmgetkeyvalstr(pcour, "SCHEME", str, "HLLC")  defspat%sch_hyp = inull  if (samestring(str,"ROE"))             defspat%sch_hyp = sch_roe  if (samestring(str,"OSHER-NO"))        defspat%sch_hyp = sch_osher_no  if (samestring(str,"OSHER-IO"))        defspat%sch_hyp = sch_osher_io  if (samestring(str,"OSHER"))           defspat%sch_hyp = sch_osher_no  if (samestring(str,"HUS"))             defspat%sch_hyp = sch_efmo  if (samestring(str,"EFMO"))            defspat%sch_hyp = sch_efmo  if (samestring(str,"HLL"))             defspat%sch_hyp = sch_hlle  if (samestring(str,"HLLE"))            defspat%sch_hyp = sch_hlle  if (samestring(str,"HLLK"))            defspat%sch_hyp = sch_hllk  if (samestring(str,"HLLC"))            defspat%sch_hyp = sch_hllc  if (samestring(str,"HLLCK"))           defspat%sch_hyp = sch_hllck  if (samestring(str,"STEGER-WARMING"))  defspat%sch_hyp = sch_stegwarm  if (samestring(str,"VANLEER"))         defspat%sch_hyp = sch_vanleer  if (samestring(str,"EFM"))             defspat%sch_hyp = sch_efm  if (samestring(str,"KFVS"))            defspat%sch_hyp = sch_efm  if (samestring(str,"AUSMM"))           defspat%sch_hyp = sch_ausmm  if (defspat%sch_hyp == inull) &    call erreur("parameters parsing","unknown numerical scheme")  ! -- Methode de calcul des flux dissipatifs --  select case(defsolver%defns%typ_fluid)  case(eqEULER)  case(eqNSLAM, eqRANS)    call get_gradientmethod("DISSIPATIVE_FLUX", defspat%sch_dis)  case default    call erreur("parameters parsing","unexpected fluid dynamical model")  endselect  ! -- High resolution method  defspat%method = cnull  call rpmgetkeyvalstr(pcour, "HIGHRES", str, "NONE")  if (samestring(str,"NONE"))      defspat%method = hres_none  if (samestring(str,"MUSCL"))     defspat%method = hres_muscl  if (samestring(str,"ENO"))       defspat%method = hres_eno  if (samestring(str,"WENO"))      defspat%method = hres_weno  if (samestring(str,"SPECTRAL"))  defspat%method = hres_spect    if (defspat%method == cnull) &    call erreur("parameters parsing","unexpected high resolution method")      select case(defspat%method)  case(hres_none)  case(hres_muscl)    ! -- High resolution order    call rpmgetkeyvalint(pcour, "ORDER", defspat%order, 2_kpp)    ! -- High resolution gradient computation    call get_gradientmethod("GRADIENT", defspat%muscl%sch_grad)    defspat%muscl%limiter = cnull    call rpmgetkeyvalstr(pcour, "LIMITER", str, "VAN_ALBADA")    if (samestring(str,"NONE"))        defspat%muscl%limiter = lim_none    if (samestring(str,"MINMOD"))      defspat%muscl%limiter = lim_minmod    if (samestring(str,"VAN_ALBADA"))  defspat%muscl%limiter = lim_albada    if (samestring(str,"ALBADA"))      defspat%muscl%limiter = lim_albada    if (samestring(str,"VAN_LEER"))    defspat%muscl%limiter = lim_vleer    if (samestring(str,"VANLEER"))     defspat%muscl%limiter = lim_vleer    if (samestring(str,"SUPERBEE"))    defspat%muscl%limiter = lim_sbee    if (defspat%muscl%limiter == cnull) &      call erreur("parameters parsing","unexpected high resolution limiter")  case default    call erreur("parameters parsing","unexpected high resolution method")  endselect  case(solKDIF)  ! -- Methode de calcul des flux dissipatifs --  call get_gradientmethod("DISSIPATIVE_FLUX", defspat%sch_dis)case(solVORTEX)endselectcontains  !-------------------------------------------------------------------------  ! get method for dissipative flux computation  !-------------------------------------------------------------------------  subroutine get_gradientmethod(keyword, sch)  character(len=*), intent(in)  :: keyword  integer(kpp),     intent(out) :: sch    call rpmgetkeyvalstr(pcour, keyword, str, "FULL")    sch = inull    if (samestring(str,"COMPACT")) sch = dis_dif2    if (samestring(str,"AVERAGE")) sch = dis_avg2    if (samestring(str,"FULL"))    sch = dis_full    if (sch == inull) &         call erreur("parameters parsing","unknown DISSIPATIVE_FLUX method")    select case(sch)    case(dis_dif2)      case(dis_avg2)      defspat%calc_grad = .true.    case(dis_full)      defspat%calc_grad = .true.    endselect  endsubroutine get_gradientmethodendsubroutine def_spat!------------------------------------------------------------------------------!! Historique des modifications!! nov  2002 : creation, lecture de bloc vide! oct  2003 : choix de la methode de calcul des flux dissipatifs! mars 2004 : traitement dans le cas solVORTEX! july 2004 : NS solver parameters! nov  2004 : NS high resolution parameters!------------------------------------------------------------------------------!

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -