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

📄 def_project.f90

📁 国外大名顶顶的“台风”并行计算流体力学CFD软件的早期版本的源代码
💻 F90
字号:
!------------------------------------------------------------------------------!! Procedure : def_project                 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_project(block, prj)use RPMuse TYPHMAKEuse OUTPUTuse VARCOMuse MENU_GENimplicit none! -- Declaration des entrees --type(rpmblock), target :: block! -- Declaration des sorties --type(mnu_project) :: prj! -- Declaration des variables internes --type(rpmblock), pointer  :: pblock, pcour  ! pointeur de bloc RPMinteger                  :: nkey, nkey2    ! nombre de clefsinteger                  :: icharacter(len=dimrpmlig) :: str            ! chaine RPM intermediaire! -- Debut de la procedure --call print_info(2,"* Definition du projet")! -- Recherche du BLOCK:PROJECT pblock => blockcall seekrpmblock(pblock, "PROJECT", 0, pcour, nkey)if (nkey /= 1) call erreur("lecture de menu", &                           "bloc PROJECT inexistant ou surnumeraire")! -- Determination du nombre de zone (1 par defaut)call rpmgetkeyvalint(pcour, "NZONE", prj%nzone, 1)write(str_w,*) ". nombre de zones du projet : ",prj%nzonecall print_info(8,adjustl(str_w))! -- Determination du nombre de couplages entre zones (0 par defaut)call rpmgetkeyvalint(pcour, "NCOUPLING", prj%ncoupling, 0)write(str_w,*) ". nombre de couplages dans le projet : ",prj%ncouplingcall print_info(8,adjustl(str_w))! -- Determination du type de reperecall rpmgetkeyvalstr(pcour, "COORD", str)prj%typ_coord = ' 'if (samestring(str, "2D" ))     prj%typ_coord = c2dplanif (samestring(str, "2DPLAN" )) prj%typ_coord = c2dplanif (samestring(str, "2DAXI"))   prj%typ_coord = c2daxiif (samestring(str, "3D"))      prj%typ_coord = c3dgenselect case(prj%typ_coord)case(c2dplan)  call print_info(10,"repere 2d plan")case(c2daxi)   call print_info(10,"repere 2d axisymetrique")  ! DEV : lecture de la position de l'axecase(c3dgen)   call print_info(10,"repere 3d general")case default  call erreur("lecture de menu","type de repere inconnu")endselect! -- Determination du type d'evolution temporellecall rpmgetkeyvalstr(pcour, "TIME", str)prj%typ_temps = ' 'if (samestring(str, "STEADY" ))   prj%typ_temps = stationnaireif (samestring(str, "UNSTEADY" )) prj%typ_temps = instationnaireif (samestring(str, "PERIODIC"))  prj%typ_temps = periodiqueselect case(prj%typ_temps)case(stationnaire) ! Evolution pseudo-instationnaire  call print_info(10,"calcul stationnaire (convergence pseudo-instationnaire)")  if (.not.(rpm_existkey(pcour,"RESIDUALS").or.rpm_existkey(pcour,"NCYCLE"))) then    call erreur("lecture de menu","parametre RESIDUALS ou NCYCLE manquant")  endif  call rpmgetkeyvalreal(pcour, "RESIDUALS", prj%residumax)  call rpmgetkeyvalint (pcour, "NCYCLE",    prj%ncycle, 1)  ! DEV : TRAITER LES MOTS CLEFS INTERDITS  case(instationnaire) ! Evolution instationnaire  call print_info(10,"calcul instationnaire")  call rpmgetkeyvalreal(pcour, "DURATION", prj%duree)  call rpmgetkeyvalreal(pcour, "BASETIME", prj%dtbase)  prj%tpsbase = prj%dtbase  ! DEV : TRAITER LES MOTS CLEFS INTERDITScase(periodique) ! Evolution periodique  call print_info(10,"calcul cyclique")  call rpmgetkeyvalreal(pcour, "PERIOD", prj%duree)  call rpmgetkeyvalint (pcour, "NCYCLE", prj%ncycle)  prj%dtbase = prj%duree / prj%ncycle  ! DEV : TRAITER LES MOTS CLEFS INTERDITS  call erreur("Developpement","calcul periodique non implemente")case default  call erreur("lecture de menu","type d'integration temporelle inconnu")endselectendsubroutine def_project!------------------------------------------------------------------------------!! Historique des modifications!! nov  2002 : creation de la procedure! juin 2003 : ajout de la definition des couplages! sept 2003 : parametres pour le calcul stationnaire!------------------------------------------------------------------------------!

⌨️ 快捷键说明

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