📄 ech_data_kdif.f90
字号:
!------------------------------------------------------------------------------!! Procedure : ech_data_kdif Auteur : E. Radenac! Date : Juin 2003! Fonction Modif : Juillet 2003! Ecrire les donnees variables dans le temps dans une structure ! donnees_echange_inst, pour la diffusion de la chaleur! Defauts/Limitations/Divers :! Limitation au cas un domaine unique par zone!------------------------------------------------------------------------------! subroutine ech_data_kdif(donnees_echange_inst1, zone1, nbc1, & donnees_echange_inst2, zone2, nbc2, ncoupl1, & ncoupl2, typcor )use TYPHMAKEuse OUTPUTuse GEO3Duse DEFZONEuse DEFFIELDuse MATER_LOIuse VARCOMimplicit none! -- Declaration des entrees --type(st_zone) :: zone1, zone2integer :: nbc1, nbc2 ! indice de la condition aux limitesinteger :: ncoupl1, ncoupl2integer :: typcor! -- Declaration donnees_echange type(st_genericfield) :: donnees_echange_inst1, donnees_echange_inst2! -- Declaration des variables internes --integer :: i, icl1, icl2, if1, if2real(krp) :: conduct! -- Debut de la procedure --do i=1, zone1%grid%umesh%boco(nbc1)%nface 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) conduct = 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 ! Affectation des donnees d'echange de la zone 1 if (typcor == bocoT) then!DEBUGprint*, "correction BOCO" donnees_echange_inst1%tabscal(1)%scal(i) = & (zone1%grid%field_loc%etatcons%tabscal(1)%scal(icl1) - & (zone1%coupling(ncoupl1)%zcoupling%etatcons%tabscal(2)%scal(i) / & zone1%grid%umesh%mesh%volume(icl1,1,1)) ) / & zone1%defsolver%defkdif%materiau%Cp ! reste de correction nul ! zone1%coupling(ncoupl1)%zcoupling%etatcons%tabscal(3)%scal(i) = 0 else !donnees_echange_inst1%tabscal(1)%scal(i) = & ! zone1%grid%field%etatprim%tabscal(1)%scal(icl1) donnees_echange_inst1%tabscal(1)%scal(i) = & zone1%grid%field_loc%etatcons%tabscal(1)%scal(icl1)/ & zone1%defsolver%defkdif%materiau%Cp endif donnees_echange_inst1%tabscal(2)%scal(i) = conduct !donnees_echange_inst1%tabvect(1)%vect(if) = zone1%grid%field%gradient%tabvect(1)%vect(icl) ! Calcul de conductivite de la zone 2 select case(zone2%defsolver%defkdif%materiau%type) case(mat_LIN, mat_KNL) conduct = 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 ! Affectation des donnees d'echange de la zone 2 if (typcor == bocoT) then donnees_echange_inst2%tabscal(1)%scal(i) = & (zone2%grid%field_loc%etatcons%tabscal(1)%scal(icl2) - & (zone2%coupling(ncoupl2)%zcoupling%etatcons%tabscal(2)%scal(i) / & zone2%grid%umesh%mesh%volume(icl2,1,1)) ) / & zone2%defsolver%defkdif%materiau%Cp ! reste de correction nul ! zone2%coupling(ncoupl2)%zcoupling%etatcons%tabscal(3)%scal(i) = 0 else !donnees_echange_inst2%tabscal(1)%scal(i) = & ! zone2%grid%field%etatprim%tabscal(1)%scal(icl2) donnees_echange_inst2%tabscal(1)%scal(i) = & zone2%grid%field_loc%etatcons%tabscal(1)%scal(icl2)/ & zone2%defsolver%defkdif%materiau%Cp endif donnees_echange_inst2%tabscal(2)%scal(i) = conduct !donnees_echange_inst2%tabvect(1)%vect(if) = zone2%grid%field%gradient%tabvect(1)%vect(icl) enddoendsubroutine ech_data_kdif!------------------------------------------------------------------------------!! Historique des modifications!! juin 2003 (v0.0.1b): creation de la procedure! juillet 2003 : conductivite non constante! oct 2004 : field chained list!------------------------------------------------------------------------------!
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -