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

📄 meshbase.f90

📁 国外大名顶顶的“台风”并行计算流体力学CFD软件的早期版本的源代码
💻 F90
字号:
!------------------------------------------------------------------------------!! MODULE : MESHBASE                       Auteur : J. Gressier!                                         Date   : Octobre 2002! Fonction                                Modif  : (cf historique)!   Bibliotheque de procedures et fonctions pour la gestion des elements!   geometriques de base (face...)!! Defauts/Limitations/Divers :! Historique :!!------------------------------------------------------------------------------!module MESHBASEuse TYPHMAKE   ! Definition de la precisionuse GEO3D      ! elements geometriquesimplicit none! -- Variables globales du module -------------------------------------------! type de maillagecharacter, parameter :: msh_1Dcurv = '1'character, parameter :: msh_2Dplan = '2'character, parameter :: msh_2Dcurv = 'C'character, parameter :: msh_3D     = '3'! -- Definition des caracteres caracteristiques pour le type de maillage --!character, parameter :: mshSTR = 'S'   (defini dans VARCOM)!character, parameter :: mshUST = 'U'! -- DECLARATIONS -----------------------------------------------------------!------------------------------------------------------------------------------!! Definition de la structure INFO_MESH!------------------------------------------------------------------------------!type info_mesh  character :: geom                ! type de maillage (cf constantes)  type(v3d) :: min, max            ! coordonnees min et max des vertex  real(krp) :: minscale, maxscale  ! echelle de longueur (min et max)endtype!------------------------------------------------------------------------------!! Definition de la structure ST_FACE : face de cellule!------------------------------------------------------------------------------!type st_face  type(v3d)   :: normale        ! normale a la face, orientee indice croissant  type(v3d)   :: centre         ! centre de face  real(krp)   :: surface        ! valeur de la surface de la faceendtype st_face!------------------------------------------------------------------------------!! Definition de la structure ST_MESH : liste de vertex, faces, centres, volumes!------------------------------------------------------------------------------!type st_mesh  type(info_mesh) :: info  integer         :: idim, jdim, kdim      ! indices max des cellules   integer         :: nvtex                 ! nombre de sommets  integer         :: nface  integer         :: ncell                 ! nombre de faces et cellules totales  type(v3d), dimension(:,:,:), pointer &  ! coordonnees des sommets et centres                  :: vertex, centre        ! de cellules (i,j,k)  type(st_face), dimension(:,:,:), pointer &                  :: iface !, jface, kface   ! tableaux de faces  real(krp), dimension(:,:,:), pointer &                  :: volume                ! volume des cellulesendtype st_mesh! -- INTERFACES -------------------------------------------------------------interface new  module procedure new_meshendinterfaceinterface delete  module procedure delete_meshendinterface! -- Fonctions et Operateurs ------------------------------------------------! -- IMPLEMENTATION ---------------------------------------------------------contains!------------------------------------------------------------------------------!! Procedure : allocation d'une structure MESH!------------------------------------------------------------------------------!subroutine new_mesh(mesh, ncell, nface, nvtex)implicit nonetype(st_mesh) :: meshinteger       :: ncell, nface, nvtex  mesh%ncell = ncell  mesh%nface = nface  mesh%nvtex = nvtex  if (ncell /= 0) then    allocate(mesh%centre(1:ncell, 1,1))    allocate(mesh%volume(1:ncell, 1,1))  endif  if (nface /= 0) allocate(mesh% iface(1:nface, 1,1))  if (nvtex /= 0) allocate(mesh%vertex(1:nvtex, 1,1))endsubroutine new_mesh!------------------------------------------------------------------------------!! Procedure : desallocation d'une structure MESH!------------------------------------------------------------------------------!subroutine delete_mesh(mesh)implicit nonetype(st_mesh) :: mesh  if (mesh%ncell /= 0) deallocate(mesh%centre, mesh%volume)  if (mesh%nface /= 0) deallocate(mesh%iface)  if (mesh%nvtex /= 0) deallocate(mesh%vertex)  endsubroutine delete_meshendmodule MESHBASE!------------------------------------------------------------------------------!! Historique des modifications!! oct  2002 : creation du module! fev  2004 : suppression de certains elements propres au structure!             structure information de MESH!             redefintion de new_mesh (allocation de non structure)!------------------------------------------------------------------------------!

⌨️ 快捷键说明

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