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

📄 calc_ust_elemvol.f90

📁 国外大名顶顶的“台风”并行计算流体力学CFD软件的早期版本的源代码
💻 F90
字号:
!------------------------------------------------------------------------------!! Procedure : calc_ust_elemvol            Auteur : J. Gressier!                                         Date   : Janvier 2003! Fonction                                Modif  : (cf historique)!   Calcul des volumes elementaires d'une cellule, definis comme des coniques!   de base, chacune des faces et de sommet, le centre approximatif de cellule.!   En sortie, on obtient le volume et le centre de gravite des volumes !   elementaires!! Defauts/Limitations/Divers :!   En terme d'organisation memoire, on a choisi d'organiser les volumes!   elementaires par face (2 volumes par face) plutot que de les rattacher!   aux cellules (nombre de volumes indetermine par cellule)!!------------------------------------------------------------------------------!subroutine calc_ust_elemvol(geom, ncell, nface, midcell, facecell, cgface, face, &                            cg_elem, vol_elem)use TYPHMAKEuse OUTPUTuse USTMESHuse MESHBASEimplicit none! -- Declaration des entrees --character                   :: geom       ! type de geometrieinteger                     :: ncell      ! nombre de cellulesinteger                     :: nface      ! nombre de facestype(v3d), dimension(ncell) :: midcell    ! centres de cellule approches ( /= barycentre )type(st_connect)         :: facecell   ! connectivite face->cellulestype(v3d), dimension(nface) :: cgface     ! barycentre de facetype(st_face), dimension(nface) &                            :: face       ! faces (surfaces et normales)! -- Declaration des sorties --type(v3d), dimension(nface,2) :: cg_elem    ! centres de volume elementairereal(krp), dimension(nface,2) :: vol_elem   ! volumes de volume elementaire! -- Declaration des variables internes --integer         :: if           ! indice  de faceinteger         :: ic           ! indice  de cellulereal(krp)       :: kcg, kvol    ! coefficients pour le calcul du centre et du volume! -- Debut de la procedure --! le volume elementaire est defini par une base (la face) de centre H! et un sommet K (centre approche (midcell) de la cellule adjacente). ! On en deduit le volume et le centre de gravite du volume elementaire.select case(geom)case(msh_2dplan)  kcg  = 1./3._krp  kvol = 1./2._krpcase(msh_3d)  kcg  = 1./4._krp  kvol = 1./3._krpcase default  call erreur("Traitement du maillage (Bug)","Type de geometrie inattendu")endselectdo if = 1, facecell%nbnodes  ic = facecell%fils(if,1)  call subcalc_elemvol(midcell(ic), cgface(if), face(if), &                       cg_elem(if,1), vol_elem(if,1))  ic = facecell%fils(if,2)  if (ic /= 0) then    call subcalc_elemvol(midcell(ic), cgface(if), face(if), &                         cg_elem(if,2), vol_elem(if,2))  else    cg_elem (if,2) = v3d(0._krp, 0._krp, 0._krp)    vol_elem(if,2) = 0._krp  endif  !! write(*,"(a,i3,8f8.1)")"elem_vol",if, cg_elem(if,1), vol_elem(if,1), cg_elem(if,2), vol_elem(if,2) !! DEBUGenddocontains  !---------------------------------------------------------------------------------  subroutine subcalc_elemvol(vK, vH, face, cg, vol)    implicit none    ! --- entrees ---    type(v3d)       :: vK, vH      ! coord. K (sommet) et H (centre de face)     type(st_face)   :: face        ! face    ! --- sorties ---    type(v3d)       :: cg          ! centre de volume elementaire    real(krp)       :: vol         ! volume du volume elementaire    ! --- interne ---    type(v3d)       :: vKH         ! vecteur KH (sommet-centre de face)    real(krp)       :: hauteur     ! volume du volume elementaire      vKH     = vH - vK      hauteur = abs(vKH.scal.face%normale)      cg      = vH - kcg*vKH      vol     = kvol*hauteur*face%surface  endsubroutine subcalc_elemvolendsubroutine calc_ust_elemvol!------------------------------------------------------------------------------!! Historique des modifications!! jan  2002 : creation de la procedure!------------------------------------------------------------------------------!

⌨️ 快捷键说明

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