00001 subroutine calc_dx_vec(cline,ir,it,ip,dxv)
00002 use phys_constant, only : long
00003 use coordinate_grav_r, only : rg
00004 use def_matter, only : rs
00005 use trigonometry_grav_theta, only : hsinthg, hcosthg, sinthg, costhg
00006 use trigonometry_grav_phi, only : hsinphig, hcosphig, sinphig, cosphig
00007 use coordinate_grav_theta, only : dthginv
00008 use coordinate_grav_phi, only : dphiginv
00009 implicit none
00010 character(len=2), intent(in) :: cline
00011 integer, intent(in) :: ir,it,ip
00012 real(long), pointer :: dxv(:)
00013 real(long) :: dprs, hprs, dtrs, htrs
00014
00015 if (cline=="ph") then
00016 dprs = rg(ir)*(rs(it,ip) - rs(it,ip-1))*dphiginv
00017 hprs = rg(ir)*(rs(it,ip) + rs(it,ip-1))*0.5d0
00018
00019 dxv(1) = dprs*sinthg(it)*hcosphig(ip) - hprs*sinthg(it)*hsinphig(ip)
00020 dxv(2) = dprs*sinthg(it)*hsinphig(ip) + hprs*sinthg(it)*hcosphig(ip)
00021 dxv(3) = dprs*costhg(it)
00022 end if
00023
00024 if (cline=="th") then
00025 dtrs = rg(ir)*(rs(it,ip) - rs(it-1,ip))*dthginv
00026 htrs = rg(ir)*(rs(it,ip) + rs(it-1,ip))*0.5d0
00027
00028 dxv(1) = dtrs*hsinthg(it)*cosphig(ip) + htrs*hcosthg(it)*cosphig(ip)
00029 dxv(2) = dtrs*hsinthg(it)*sinphig(ip) + htrs*hcosthg(it)*sinphig(ip)
00030 dxv(3) = dtrs*hcosthg(it) - htrs*hsinthg(it)
00031 end if
00032
00033 end subroutine calc_dx_vec