📄 echange_kdif.f90
字号:
!------------------------------------------------------------------------------!! Procedure : echange_kdif Auteur : E. Radenac! Date : Mai 2003! Fonction Modif : Juin 2003! Echange de donnees entre zones de calcul, pour deux materiaux couples!! Defauts/Limitations/Divers :!!------------------------------------------------------------------------------!subroutine echange_kdif(echdata1, echdata2, normale, vecinter, d1, d2, nfacelim, & typecalcul, typemethode, bocokdif1, bocokdif2, connface2)use TYPHMAKEuse OUTPUTuse GEO3Duse DEFFIELDuse MENU_KDIFimplicit none! -- Declaration des entrees --type(st_genericfield) :: echdata1, echdata2integer :: nfacelim ! nombre de faces limites sur l'interfacetype(v3d), dimension(nfacelim) & :: vecinter ! vecteur unitaire "intercellules" type(v3d), dimension(nfacelim) & :: normale ! normales a l'interfacereal(krp), dimension(nfacelim) & :: d1, d2 ! distance entre les centres des cellules gauche, ! droite et l'interfaceinteger :: typecalcul, typemethodeinteger, dimension(nfacelim) & :: connface2! -- Declaration des entrees/sorties --type(st_boco_kdif) :: bocokdif1, bocokdif2! -- Declaration des variables internes --integer :: ifreal(krp) :: temp1, temp2 ! temperatures a echangertype(v3d) :: gradtemp1, gradtemp2 ! gradients de temperature a echangerreal(krp) :: conduct1, conduct2 ! conductivites a echangertype(v3d) :: flux1, flux2 ! densite de flux a echanger real(krp) :: temp_interreal(krp) :: flux_inter! -- Debut de la procedure --! boucle sur les faces de l'interface entre les deux zones.do if = 1, nfacelim ! Donnees instationnaires temp1 = echdata1%tabscal(1)%scal(if) temp2 = echdata2%tabscal(1)%scal(if) gradtemp1 = echdata1%tabvect(1)%vect(if) gradtemp2 = echdata2%tabvect(1)%vect(if) conduct1 = echdata1%tabscal(2)%scal(if) conduct2 = echdata2%tabscal(2)%scal(if) flux1 = - conduct1 * gradtemp1 flux2 = - conduct2 * gradtemp2 !Appel aux sous-routines de calcul de flux et temperature a l'interface. !flux_inter = 0 call calc_fluxinter_kdif(temp1, temp2, gradtemp1, gradtemp2, conduct1, conduct2,& d1(if), d2(if), vecinter(if), flux1, flux2, normale(if), & flux_inter, typecalcul, typemethode) call calc_tempinter_kdif(temp1, temp2, conduct1, conduct2, d1(if), d2(if), & temp_inter) !Conditions aux limites des deux zones call stock_kdif_cond_coupling(bocokdif1, temp_inter, flux_inter, if, temp2) call stock_kdif_cond_coupling(bocokdif2, temp_inter, -flux_inter, connface2(if), temp1) enddoendsubroutine echange_kdif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -