00001 subroutine sourceterm_MoC_CF_drot(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_matter, only : emdg, omeg, jomeg_int
00009 use def_matter_parameter, only : ome, ber, radi
00010 use def_vector_phi, only : hvec_phig
00011 use make_array_3d
00012 use interface_grgrad_midpoint
00013 use interface_interpo_linear_type0
00014 implicit none
00015 real(long), pointer :: souvec(:,:,:,:)
00016 real(long) :: vphig(3)
00017 real(long) :: emdgc, rhogc, pregc, hhgc, ene, utgc, oterm, zfac, rjj
00018 real(long) :: psigc, alpgc
00019 real(long) :: bvxdgc, bvydgc, bvzdgc
00020 real(long) :: omegc, jomeg_intgc
00021 integer :: ii, irg, itg, ipg
00022
00023
00024
00025
00026 do ii = 1, 3
00027 do ipg = 1, npg
00028 do itg = 1, ntg
00029 do irg = 1, nrg
00030 call interpo_linear_type0(emdgc,emdg,irg,itg,ipg)
00031 call interpo_linear_type0(omegc,omeg,irg,itg,ipg)
00032 call interpo_linear_type0(jomeg_intgc,jomeg_int,irg,itg,ipg)
00033 call interpo_linear_type0(psigc,psi,irg,itg,ipg)
00034 call interpo_linear_type0(alpgc,alph,irg,itg,ipg)
00035 call interpo_linear_type0(bvxdgc,bvxd,irg,itg,ipg)
00036 call interpo_linear_type0(bvydgc,bvyd,irg,itg,ipg)
00037 call interpo_linear_type0(bvzdgc,bvzd,irg,itg,ipg)
00038
00039 zfac = 1.0d0
00040 if (emdgc <= 1.0d-15) then
00041 emdgc = 1.0d-15
00042 zfac = 0.0d0
00043 end if
00044 call peos_q2hprho(emdgc, hhgc, pregc, rhogc, ene)
00045 utgc = hhgc/ber*exp(jomeg_intgc)
00046 vphig(1) = hvec_phig(irg,itg,ipg,1)
00047 vphig(2) = hvec_phig(irg,itg,ipg,2)
00048 vphig(3) = hvec_phig(irg,itg,ipg,3)
00049 oterm = 0.0d0
00050 if (ii == 1) oterm = bvxdgc + omegc*vphig(1)
00051 if (ii == 2) oterm = bvydgc + omegc*vphig(2)
00052 if (ii == 3) oterm = bvzdgc + omegc*vphig(3)
00053 rjj = hhgc*rhogc*alpgc*utgc**2*psigc**4*oterm
00054
00055 souvec(irg,itg,ipg,ii) = radi**2*16.0d0*pi*alpgc*rjj*zfac
00056 end do
00057 end do
00058 end do
00059 end do
00060
00061 end subroutine sourceterm_MoC_CF_drot