setboco_kdif_flux.f90

来自「国外大名顶顶的“台风”并行计算流体力学CFD软件的早期版本的源代码」· F90 代码 · 共 112 行

F90
112
字号
!------------------------------------------------------------------------------!! Procedure : setboco_kdif_flux           Auteur : J. Gressier/E. Radenac!                                         Date   : Juin 2004! Fonction                                Modif  : (cf Historique)!   Calcul des conditions aux limites non uniformes pour la conduction de la !   chaleur! Defauts/Limitations/Divers :!!------------------------------------------------------------------------------!subroutine setboco_kdif_flux(unif, ustboco, ustdom, champ, flux, defsolver, bckdif)use TYPHMAKEuse OUTPUTuse VARCOMuse MENU_SOLVERuse MENU_BOCOuse USTMESHuse DEFFIELD implicit none! -- Declaration des entrees --integer            :: unif             ! uniform or nottype(st_ustboco)   :: ustboco          ! lieu d'application des conditions aux limitestype(st_ustmesh)   :: ustdom           ! maillage non structuretype(mnu_solver)   :: defsolver        ! type d'equation a resoudretype(st_boco_kdif) :: bckdif           ! parameters and fluxes (field or constant)! -- Declaration des sorties --type(st_field)   :: champ            ! champ des etatsreal(krp), dimension(ustboco%nface) &                 :: flux             ! flux! -- Declaration des variables internes --integer          :: ifb, if, ip      ! index de liste, index de face limite et parametresinteger          :: ic, ighost    ! index de cellule interieure, et de cellule fictivetype(v3d)        :: cgface, cg, normale ! centre de face, de cellule, normale facereal(krp)        :: d             ! distance cellule - face limitereal(krp)        :: conduct       ! conductivite! -- Debut de la procedure --if (unif == uniform) then!-----------------------------------------! cas uniforme!-----------------------------------------do ifb = 1, ustboco%nface  if     = ustboco%iface(ifb)  ic     = ustdom%facecell%fils(if,1)  ighost = ustdom%facecell%fils(if,2)  ! Calcul "distance ponderee" centre de cellule - centre face  cgface = ustdom%mesh%iface(if,1,1)%centre  cg     = ustdom%mesh%centre(ic,1,1)  normale= ustdom%mesh%iface(if,1,1)%normale  d    = (cgface - cg) .scal. (cgface - cg) / (abs((cgface - cg).scal.normale))  ! Calcul conductivite  conduct = valeur_loi(defsolver%defkdif%materiau%Kd, champ%etatprim%tabscal(1)%scal(ic))  ! Flux limite  flux(ifb) = bckdif%flux  ! Calcul approche de la temperature du point fictif pour calcul des gradients  do ip = 1, champ%nscal    champ%etatprim%tabscal(ip)%scal(ighost) = champ%etatprim%tabscal(ip)%scal(ic) &                                              - bckdif%flux*d/conduct  enddoenddoelse!-----------------------------------------! cas non uniforme!-----------------------------------------do ifb = 1, ustboco%nface  if     = ustboco%iface(ifb)  ic     = ustdom%facecell%fils(if,1)  ighost = ustdom%facecell%fils(if,2)  ! Calcul "distance ponderee" centre de cellule - centre face  cgface = ustdom%mesh%iface(if,1,1)%centre  cg     = ustdom%mesh%centre(ic,1,1)  normale= ustdom%mesh%iface(if,1,1)%normale  d    = (cgface - cg) .scal. (cgface - cg) / (abs((cgface - cg).scal.normale))  ! Calcul conductivite  conduct = valeur_loi(defsolver%defkdif%materiau%Kd, champ%etatprim%tabscal(1)%scal(ic))  ! Flux limite  flux(ifb) = bckdif%flux_nunif(ifb)  ! Calcul approche de la temperature du point fictif pour calcul des gradients  do ip = 1, champ%nscal    champ%etatprim%tabscal(ip)%scal(ighost) = champ%etatprim%tabscal(ip)%scal(ic) &                                              - bckdif%flux_nunif(ifb)*d/conduct  enddoenddoendifendsubroutine setboco_kdif_flux!------------------------------------------------------------------------------!! Historique des modifications!! juin 2004 : creation de la procedure! july 2004 : merge of uniform and non-uniform boco settings!------------------------------------------------------------------------------!

⌨️ 快捷键说明

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