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

📄 strmesh.f90

📁 国外大名顶顶的“台风”并行计算流体力学CFD软件的早期版本的源代码
💻 F90
字号:
!------------------------------------------------------------------------------!! MODULE : STRMESH                        Auteur : J. Gressier!                                         Date   : Mai 2002! Fonction                                Modif  : Octobre 2002!   Bibliotheque de procedures et fonctions pour la gestion de maillages!   structures!! Defauts/Limitations/Divers :! Historique :!!------------------------------------------------------------------------------!module STRMESHuse TYPHMAKE   ! Definition de la precisionuse OUTPUTuse GEO3D      ! use MESHBASE   ! basic geometrical elementsimplicit none! -- Variables globales du module -------------------------------------------integer, parameter :: nghostcell = 2! -- DECLARATIONS -----------------------------------------------------------!------------------------------------------------------------------------------!! Definition de la structure ST_PATCH : Definition de portions de bloc!------------------------------------------------------------------------------!type st_patch  character, dimension(3) :: dir   ! definition des directions 1 a 3 dans I,J,K  integer,   dimension(3) :: sens  ! +1 ou -1 pour la direction des indices                                   ! de min a max,                                   ! si invariant, precise le sens externe au bloc  integer,   dimension(3) :: min, max  ! indices de cellules debut et finendtype st_patch!------------------------------------------------------------------------------!! Definition de la structure ST_STRCONNECT : Definition des connections de blocs!------------------------------------------------------------------------------!type st_strconnect  character                    :: type       ! type de connection                                          !   (B)lock, (F)ace, (E)dge, (V)ertex  type(st_patch)               :: local      ! Patch local au bloc  type(st_block), pointer      :: linkedblk  ! Bloc associe  type(st_patch)               :: linkedpat  ! Patch associe  type(st_strconnect), pointer :: next       ! (liste) connection suivanteendtype st_strconnect!------------------------------------------------------------------------------!! Definition de la structure ST_STRBOUND : Definition des conditions aux limites!------------------------------------------------------------------------------!!type st_strbound!  type(st_patch)              :: local      ! Patch local au bloc  !type(st_solvbound), pointer :: bound      ! condition aux limites associee!  type(st_strbound),  pointer :: next       ! (liste) condition suivante!endtype st_strbound!------------------------------------------------------------------------------!! Definition de la structure ST_BLOCK : Bloc structure!------------------------------------------------------------------------------!type st_block  integer                    :: id                ! numero de domaine  integer                    :: level             ! niveau multigrille  integer                    :: nbdim             ! nombre de dimension du maillage  integer                    :: idim, jdim, kdim  ! indices max des cellules   type(st_mesh)              :: mesh              ! maillage associe  integer                    :: nconnect, nbound  ! nombre de connections et                                               !   conditions aux limites  type(st_strconnect), pointer &                             :: connect           ! liste des connections  !type(st_strbound), pointer :: bound             ! liste des conditions aux limites  type(st_block), pointer    :: next              ! (liste) bloc suivantendtype st_block!------------------------------------------------------------------------------!! Definition de la structure ST_STRMESH : ensemble de blocs structures!------------------------------------------------------------------------------!type st_strmesh  integer                 :: nblock   ! nombre de blocs dans la zone  integer                 :: nlevel   ! nombre de niveau multigrille (0 a nlevel)  type(st_block), pointer :: block    ! liste des blocs  !type(st_nsgen)          :: nsgen    ! donnees generales pour les equations NSendtype st_strmesh! -- INTERFACES -------------------------------------------------------------interface new  module procedure new_block, new_strmeshendinterfaceinterface delete  module procedure delete_block, delete_strmeshendinterface! -- Fonctions et Operateurs ------------------------------------------------integer nb_block       ! fonction definie dans count_struct.f90integer nb_connect     ! fonction definie dans count_struct.f90integer nb_bound       ! fonction definie dans count_struct.f90! -- IMPLEMENTATION ---------------------------------------------------------contains!------------------------------------------------------------------------------!! Procedure : allocation d'une structure BLOCK!------------------------------------------------------------------------------!subroutine new_block(block, idim, jdim, kdim, allocgrad)implicit nonetype(st_block) :: block             ! block a creerinteger        :: idim, jdim, kdim  ! dimension du maillage internelogical        :: allocgrad         ! allocation des gradients  block%idim = idim  block%jdim = idim  block%kdim = idim  stop  !call new(block%mesh,  idim, jdim, kdim)  block%nconnect = 0        ! Initialisation des listes de connections  !block%nbound   = 0        ! et de conditions aux limites  nullify(block%connect)  !nullify(block%bound)endsubroutine new_block!------------------------------------------------------------------------------!! Procedure : desallocation d'une structure BLOCK!------------------------------------------------------------------------------!subroutine delete_block(block)implicit nonetype(st_block)               :: blocktype(st_strconnect), pointer :: pc, pcd!type(st_strbound),   pointer :: pb, pbd  call delete(block%mesh)  pc => block%connect        ! Destruction de la liste de connections  do while (associated(pc))    pcd => pc    pc  => pc%next    deallocate(pcd)  enddo!  pb => block%bound         ! Destruction de la liste de cond. aux lim.!  do while (associated(pb))!    pbd => pb!    pb  => pb%next!    deallocate(pbd)!  enddoendsubroutine delete_block!------------------------------------------------------------------------------!! Procedure : allocation d'une structure STRMESH!------------------------------------------------------------------------------!subroutine new_strmesh(zone)implicit nonetype(st_strmesh) :: zone  zone%nblock = 0  nullify(zone%block)endsubroutine new_strmesh!------------------------------------------------------------------------------!! Procedure : desallocation d'une structure STRMESH!------------------------------------------------------------------------------!subroutine delete_strmesh(zone)implicit nonetype(st_strmesh)     :: zonetype(st_block), pointer :: pb, pbd  pb => zone%block          ! Destruction de la liste de blocs   do while (associated(pb))    pbd => pb    pb  => pb%next    !call delete(pbd)        ! destruction du contenu du bloc !!! A DEFINIR    deallocate(pbd)  enddoendsubroutine delete_strmeshendmodule STRMESH

⌨️ 快捷键说明

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