00001 subroutine sourceterm_MWspatial_current_WL(souvec)
00002 use phys_constant, only : long, pi
00003 use grid_parameter, only : nrg, ntg, npg
00004 use coordinate_grav_r, only : hrg
00005 use trigonometry_grav_theta, only : hsinthg, hcosthg
00006 use trigonometry_grav_phi, only : hsinphig, hcosphig
00007 use def_metric, only : psi, alph, bvxd, bvyd, bvzd
00008 use def_metric_hij, only : hxxd, hxyd, hxzd, hyyd, hyzd, hzzd
00009 use def_matter, only : emdg
00010 use def_matter_parameter, only : radi
00011 use def_emfield, only : jtu, jxu, jyu, jzu
00012 use def_matter_parameter, only : ome, ber, radi
00013 use def_vector_phi, only : hvec_phig
00014 use make_array_3d
00015 use interface_grgrad_midpoint
00016 use interface_interpo_linear_type0
00017 implicit none
00018 real(long), pointer :: souvec(:,:,:,:)
00019 real(long) :: hijd(3,3)
00020 real(long) :: emdgc, jterm, jxugc, jyugc, jzugc,
00021 hhxxd, hhxyd, hhxzd, hhyyd, hhyzd, hhzzd, &
00022 hhyxd, hhzxd, hhzyd
00023 real(long) :: psigc, alpgc, bvadgc
00024 integer :: ii, irg, itg, ipg
00025
00026
00027
00028
00029 do ii = 1, 3
00030 do ipg = 1, npg
00031 do itg = 1, ntg
00032 do irg = 1, nrg
00033 call interpo_linear_type0(emdgc,emdg,irg,itg,ipg)
00034 call interpo_linear_type0(psigc,psi,irg,itg,ipg)
00035
00036 = 1.0d0
00037 if (emdgc <= 1.0d-15) then
00038 emdgc = 1.0d-15
00039 = 0.0d0
00040 end if
00041
00042 hijd(1:3,1:3) = 0.0d0
00043 if (ii == 1) then
00044 call interpo_linear_type0(hhxxd,hxxd,irg,itg,ipg)
00045 call interpo_linear_type0(hhxyd,hxyd,irg,itg,ipg)
00046 call interpo_linear_type0(hhxzd,hxzd,irg,itg,ipg)
00047 end if
00048 if (ii == 2) then
00049 call interpo_linear_type0(hhxyd,hxyd,irg,itg,ipg)
00050 call interpo_linear_type0(hhyyd,hyyd,irg,itg,ipg)
00051 call interpo_linear_type0(hhyzd,hyzd,irg,itg,ipg)
00052 end if
00053 if (ii == 3) then
00054 call interpo_linear_type0(hhxzd,hxzd,irg,itg,ipg)
00055 call interpo_linear_type0(hhyzd,hyzd,irg,itg,ipg)
00056 call interpo_linear_type0(hhzzd,hzzd,irg,itg,ipg)
00057 end if
00058 hijd(1,1) = hhxxd ; hijd(1,2) = hhxyd ; hijd(1,3) = hhxzd
00059 hijd(2,1) = hhxyd ; hijd(2,2) = hhyyd ; hijd(2,3) = hhyzd
00060 hijd(3,1) = hhxzd ; hijd(3,2) = hhyzd ; hijd(3,3) = hhzzd
00061 call interpo_linear_type0(jxugc,jxu,irg,itg,ipg)
00062 call interpo_linear_type0(jyugc,jyu,irg,itg,ipg)
00063 call interpo_linear_type0(jzugc,jzu,irg,itg,ipg)
00064
00065 jterm = hijd(ii,1)*jxugc + hijd(ii,2)*jyugc + hijd(ii,3)*jzugc
00066
00067 souvec(irg,itg,ipg,ii) = - radi**2*4.0d0*pi*psigc**8*jterm
00068
00069 end do
00070 end do
00071 end do
00072 end do
00073
00074 end subroutine sourceterm_MWspatial_current_WL