00001 subroutine sourceterm_trfreeG_WL_EMF(souten)
00002 use phys_constant, only : pi
00003 use grid_parameter, only : nrg, ntg, npg
00004 use coordinate_grav_r, only : hrg
00005 use def_metric, only : psi
00006 use def_metric_hij, only : hxxd, hxyd, hxzd, hyyd, hyzd, hzzd
00007 use def_SEM_tensor_EMF, only : smijd_EMF, trsm_EMF
00008 use interface_interpo_linear_type0
00009 implicit none
00010 real(8), pointer :: souten(:,:,:,:)
00011 real(8) :: gamd(1:3,1:3), sab(1:3,1:3)
00012 real(8) :: psigc, hhxxd, hhxyd, hhxzd, hhyyd, hhyzd, hhzzd,
00013 san = 1.0d0/3.0d0, sgam, tfsab, trsab
00014 integer :: ipg, irg, itg, ia, ib, ic
00015
00016
00017
00018
00019
00020
00021
00022
00023 do ipg = 1, npg
00024 do itg = 1, ntg
00025 do irg = 1, nrg
00026
00027 call interpo_linear_type0(psigc,psi ,irg,itg,ipg)
00028 call interpo_linear_type0(hhxxd,hxxd,irg,itg,ipg)
00029 call interpo_linear_type0(hhxyd,hxyd,irg,itg,ipg)
00030 call interpo_linear_type0(hhxzd,hxzd,irg,itg,ipg)
00031 call interpo_linear_type0(hhyyd,hyyd,irg,itg,ipg)
00032 call interpo_linear_type0(hhyzd,hyzd,irg,itg,ipg)
00033 call interpo_linear_type0(hhzzd,hzzd,irg,itg,ipg)
00034 gamd(1,1) = hhxxd + 1.0d0
00035 gamd(1,2) = hhxyd
00036 gamd(1,3) = hhxzd
00037 gamd(2,2) = hhyyd + 1.0d0
00038 gamd(2,3) = hhyzd
00039 gamd(3,3) = hhzzd + 1.0d0
00040 gamd(2,1) = gamd(1,2)
00041 gamd(3,1) = gamd(1,3)
00042 gamd(3,2) = gamd(2,3)
00043
00044
00045 do ib = 1, 3
00046 do ia = 1, 3
00047 sab(ia,ib) = smijd_EMF(irg,itg,ipg,ia,ib)
00048 end do
00049 end do
00050
00051 trsab = trsm_EMF(irg,itg,ipg)
00052
00053 do ic = 1, 6
00054 ia = 1 + ic/4 + ic/6
00055 ib = ic - (ic/4)*2 - ic/6
00056 sgam = san*gamd(ia,ib)
00057 tfsab = sab(ia,ib) - psigc**4*sgam*trsab
00058 souten(irg,itg,ipg,ic) = 2.0d0*(-8.0d0*pi*tfsab)
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077 end do
00078
00079 end do
00080 end do
00081 end do
00082
00083
00084
00085
00086 end subroutine sourceterm_trfreeG_WL_EMF