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

📄 def_amr.f90

📁 国外大名顶顶的“台风”并行计算流体力学CFD软件的早期版本的源代码
💻 F90
字号:
!------------------------------------------------------------------------------!! Procedure : def_amr                     Auteur : J. Gressier!                                         Date   : July 2004! Fonction                                Modif  : (cf historique)!   Traitement des parametres du fichier menu principal!   Parametres AMR!! Defauts/Limitations/Divers :!!------------------------------------------------------------------------------!subroutine def_amr(block, isolver, defamr)use RPMuse TYPHMAKEuse OUTPUTuse VARCOMuse MENU_AMRimplicit none! -- Declaration des entrees --type(rpmblock), target :: blockinteger                :: isolver! -- Declaration des sorties --type(mnu_amr) :: defamr! -- 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 des parametres de raffinememt automatique (AMR)")! -- Initialisation --! -- Recherche du BLOCK:AMR_PARAM --pblock => blockcall seekrpmblock(pblock, "AMR", 0, pcour, nkey)! DEV : est-ce que la presence du bloc est obligatoire ?if (nkey > 1) call erreur("lecture de menu", &                           "bloc AMR surnumeraire")if (nkey == 1) then  ! -- max level number --  call rpmgetkeyvalint(pcour, "MAXLEVEL", defamr%maxlevel, 1)  if ((defamr%maxlevel > 0).and.(defamr%maxlevel < 10)) then    call print_info(8,"  niveau maximal de raffinement :"//strof(defamr%maxlevel,2))  else    call erreur("Parametre AMR","nombre de niveau de raffinement inattendu")  endif  ! -- refinement degree --  call rpmgetkeyvalint(pcour, "REFINEMENT", defamr%degree, 2)  if ((defamr%degree >= 2).and.(defamr%degree <= 4)) then    call print_info(8,"  degre de raffinement :"//strof(defamr%degree,2))  else    call erreur("Parametre AMR","degre de raffinement inattendu")  endif  ! -- method --  call rpmgetkeyvalstr(pcour, "METHOD", str)  defamr%method = cnull  if (samestring(str,"EVOLUTIVE"))   defamr%method = amr_evolutive  if (samestring(str,"PROGRESSIVE")) defamr%method = amr_progressive  select case(defamr%method)  case(amr_evolutive)    call print_info(8,"  methode evolutive (raffinement complet)")  case(amr_progressive)    call print_info(8,"  methode progressive (niveau par niveau)")  case default    call erreur("Parametre AMR","methode inconnue")  endselect  ! -- periodicity --  call rpmgetkeyvalstr(pcour, "PERIODICITY", str)  defamr%period = cnull  if (samestring(str,"TIMESTEP")) defamr%period = amr_timestep  if (samestring(str,"CYCLE"))    defamr%period = amr_cycle  select case(defamr%period)  case(amr_timestep)    call print_info(8,"  raffinement a chaque iteration")  case(amr_cycle)    call print_info(8,"  raffinement a chaque cycle")  case default    call erreur("Parametre AMR","type de periodicite inconnue")  endselectendifendsubroutine def_amr!------------------------------------------------------------------------------!! Changes history!! july 2004 : creation, reading basic parameters!------------------------------------------------------------------------------!

⌨️ 快捷键说明

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