📄 choixcorrection.f90
字号:
!------------------------------------------------------------------------------! Procedure : choixcorrection Auteur : E. Radenac! Date : Fevrier 2004! Fonction Modif : ! Choix de la correction de flux!! Defauts/Limitations/Divers : pour l'instant, une methode de calcul commune ! aux deux zones!------------------------------------------------------------------------------ subroutine choixcorrection(zone1, zone2, placement, corcoef, typ_cor, & nfacelim, nbc1, nbc2, ncoupl2)use OUTPUTuse VARCOMuse DEFZONEuse DEFFIELDuse GEO3Duse TYPHMAKEuse MATER_LOIimplicit none! -- Declaration des entrees --type(st_zone) :: zone1, zone2integer :: ncoupl2integer :: nfaceliminteger :: typ_corinteger :: nbc1, nbc2! -- Declaration des sorties --integer :: placement ! variable pour le ! placement des correctionsreal(krp), dimension(nfacelim) :: corcoef ! coefficient de correction! -- Declaration des variables internes --integer :: i, if1, if2, icl1, icl2real(krp) :: vol1, vol2, c1, c2, conduct1, conduct2, rapdifth! -- Debut de la procedure -- ! Calcul du nombre de Fourier de cycle (base sur la duree entre deux ! echanges ! et sur le pas de maillage) !call calc_fouriercycle(zone1, zone1%deftime%stabnb, dtexch, fcycle1) !call calc_fouriercycle(zone2, zone2%deftime%stabnb, dtexch, fcycle2) !DEBUG !print*, "Fourier de cycle : ", fcycle1, ", ", fcycle2! Type de correctionselect case(typ_cor)case (sans) placement = sanscase (bocoT) placement = avantcase (bocoT2) ! DEV1603 placement = aprescase (avant) placement = avantcase (apres) placement = aprescase (auto) ! Choix automatique selon parametres placement = aprescase (repart_reg) placement = aprescase (repart_geo) placement = aprescase (partiel) placement = avantendselect! Coefficient de correctiondo i=1, nfacelim if1 = zone1%grid%umesh%boco(nbc1)%iface(i) if2 = zone2%grid%umesh%boco(nbc2)%iface(zone2%coupling(ncoupl2)%zcoupling%connface(i)) icl1 = zone1%grid%umesh%facecell%fils(if1,1) icl2 = zone2%grid%umesh%facecell%fils(if2,1) ! Calcul de conductivite de la zone 1 select case(zone1%defsolver%defkdif%materiau%type) case(mat_LIN, mat_KNL) conduct1 = valeur_loi(zone1%defsolver%defkdif%materiau%Kd, & zone1%grid%field_loc%etatprim%tabscal(1)%scal(icl1)) case(mat_XMAT) call erreur("Calcul de materiau","Materiau non lineaire interdit") endselect ! Calcul de conductivite de la zone 2 select case(zone2%defsolver%defkdif%materiau%type) case(mat_LIN, mat_KNL) conduct2 = valeur_loi(zone2%defsolver%defkdif%materiau%Kd, & zone2%grid%field_loc%etatprim%tabscal(1)%scal(icl2)) case(mat_XMAT) call erreur("Calcul de materiau","Materiau non lineaire interdit") endselect ! Volumes des cellules limitrophes vol1 = zone1%grid%umesh%mesh%volume(icl1,1,1) vol2 = zone2%grid%umesh%mesh%volume(icl2,1,1) ! Capacites thermiques c1 = zone1%defsolver%defkdif%materiau%Cp c2 = zone2%defsolver%defkdif%materiau%Cp ! Rapport des diffusivites thermiques (avec prise en compte volumes cellules) rapdifth = (conduct2*c1*vol1) / (conduct1*c2*vol2) ! Orientation des valeurs de coefficient de correction if (rapdifth == 1) corcoef(i) = 0.5 if (rapdifth .gt. 1) corcoef(i) = 1 if (rapdifth .lt. 1) corcoef(i) = 0!print*, "DEBUG", rapdifth, corcoef(i)enddoendsubroutine choixcorrection!------------------------------------------------------------------------------! Historique des modifications!! fevrier 2003 : creation de la procedure! oct 2004 : field chained list!!------------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -