00001 subroutine sourceterm_trfreeG_WL_SEM(souten)
00002 use phys_constant, only : pi
00003 use def_matter_parameter, only : radi
00004 use grid_parameter, only : nrf, ntf, npf
00005 use def_metric_on_SFC_CF, only : psif
00006 use def_metric_on_SFC_WL, only : hxxdf, hxydf, hxzdf, hyydf, hyzdf, hzzdf
00007 use def_SEM_tensor, only : smijd, trsm
00008 implicit none
00009 real(8), pointer :: souten(:,:,:,:)
00010 real(8) :: gamd(1:3,1:3), sab(1:3,1:3)
00011 real(8) :: psifc, san, sgam, tfsab, trsab
00012 integer :: ipf, irf, itf, ia, ib, ic
00013
00014
00015
00016 san = 1.0d0/3.0d0
00017
00018 do ipf = 0, npf
00019 do itf = 0, ntf
00020 do irf = 0, nrf
00021
00022 psifc = psif(irf,itf,ipf)
00023 gamd(1,1) = hxxdf(irf,itf,ipf) + 1.0d0
00024 gamd(1,2) = hxydf(irf,itf,ipf)
00025 gamd(1,3) = hxzdf(irf,itf,ipf)
00026 gamd(2,2) = hyydf(irf,itf,ipf) + 1.0d0
00027 gamd(2,3) = hyzdf(irf,itf,ipf)
00028 gamd(3,3) = hzzdf(irf,itf,ipf) + 1.0d0
00029 gamd(2,1) = gamd(1,2)
00030 gamd(3,1) = gamd(1,3)
00031 gamd(3,2) = gamd(2,3)
00032
00033
00034 do ib = 1, 3
00035 do ia = 1, 3
00036 sab(ia,ib) = smijd(irf,itf,ipf,ia,ib)
00037 end do
00038 end do
00039
00040 trsab = trsm(irf,itf,ipf)
00041
00042 do ic = 1, 6
00043 ia = 1 + ic/4 + ic/6
00044 ib = ic - (ic/4)*2 - ic/6
00045 sgam = san*gamd(ia,ib)
00046 tfsab = sab(ia,ib) - psifc**4*sgam*trsab
00047 souten(irf,itf,ipf,ic) = 2.0d0*(- radi**2*8.0d0*pi*tfsab)
00048 end do
00049 end do
00050 end do
00051 end do
00052
00053 end subroutine sourceterm_trfreeG_WL_SEM