00001 subroutine current_jt_MHD(cobj)
00002 use phys_constant, only : long, pi
00003 use grid_parameter
00004 use coordinate_grav_r, only : rg
00005 use trigonometry_grav_phi, only : sinphig, cosphig
00006 use def_metric, only : alph, psi
00007 use def_metric_hij, only : hxxu, hxyu, hxzu, hyyu, hyzu, hzzu
00008 use def_matter, only : rs
00009 use def_matter_parameter, only : radi, ome
00010 use def_emfield, only : va, vaxd, vayd, vazd, jtu, jtuf
00011 use def_emfield_derivatives, only : Lie_bAxd_grid, Lie_bAyd_grid, &
00012 & Lie_bAzd_grid
00013 use def_vector_phi, only : vec_phig
00014 use integrability_fnc_MHD
00015 use make_array_3d
00016 use interface_interpo_gr2fl
00017 use interface_grgrad_gridpoint_4th_type0
00018 use interface_calc_integrability_modify_At
00019 use interface_calc_integrability_modify_Aphi
00020 implicit none
00021 real(long), pointer :: vaphid_mod(:,:,:), va_mod(:,:,:), alva_mod(:,:,:)
00022 real(long), pointer :: vaxd_mod(:,:,:), vayd_mod(:,:,:)
00023 real(long), pointer :: fxd_grid_mod(:,:,:), p2fxu(:,:,:)
00024 real(long), pointer :: fyd_grid_mod(:,:,:), p2fyu(:,:,:)
00025 real(long), pointer :: fzd_grid_mod(:,:,:), p2fzu(:,:,:)
00026 real(long) :: vecphi(3)
00027 real(long) :: dfxudx, dfxudy, dfxudz
00028 real(long) :: dfyudx, dfyudy, dfyudz
00029 real(long) :: dfzudx, dfzudy, dfzudz
00030 real(long) :: alps6inv, pi4invR2, jphiu, Aphi, jtu_eq
00031 real(long) :: dalvadxgp, dalvadygp, dalvadzgp
00032 real(long) :: lie_bAx, lie_bAy, lie_bAz, ainvh
00033 integer :: irg, itg, ipg
00034 character(len=2), intent(in) :: cobj
00035
00036 call alloc_array3d(vaphid_mod, 0, nrg, 0, ntg, 0, npg)
00037 call alloc_array3d(va_mod, 0, nrg, 0, ntg, 0, npg)
00038 call alloc_array3d(vaxd_mod, 0, nrg, 0, ntg, 0, npg)
00039 call alloc_array3d(vayd_mod, 0, nrg, 0, ntg, 0, npg)
00040 call alloc_array3d(alva_mod, 0, nrg, 0, ntg, 0, npg)
00041 call alloc_array3d(fxd_grid_mod, 0, nrg, 0, ntg, 0, npg)
00042 call alloc_array3d(fyd_grid_mod, 0, nrg, 0, ntg, 0, npg)
00043 call alloc_array3d(fzd_grid_mod, 0, nrg, 0, ntg, 0, npg)
00044 call alloc_array3d(p2fxu, 0, nrg, 0, ntg, 0, npg)
00045 call alloc_array3d(p2fyu, 0, nrg, 0, ntg, 0, npg)
00046 call alloc_array3d(p2fzu, 0, nrg, 0, ntg, 0, npg)
00047
00048 va_mod( 0:nrg,0:ntg,0:npg)=va( 0:nrg,0:ntg,0:npg)
00049 vaxd_mod(0:nrg,0:ntg,0:npg)=vaxd(0:nrg,0:ntg,0:npg)
00050 vayd_mod(0:nrg,0:ntg,0:npg)=vayd(0:nrg,0:ntg,0:npg)
00051
00052
00053
00054
00055 call calc_integrability_modify_At(va_mod,'gr')
00056 vaphid_mod(0:nrg,0:ntg,0:npg)= vayd_mod(0:nrg,0:ntg,0:npg) &
00057 & * vec_phig(0:nrg,0:ntg,0:npg,2)
00058 alva_mod(0:nrg,0:ntg,0:npg) = alph(0:nrg,0:ntg,0:npg) &
00059 & *va_mod(0:nrg,0:ntg,0:npg)
00060
00061 do ipg = 0, npg
00062 do itg = 0, ntg
00063 do irg = 0, nrg
00064
00065 call grgrad_gridpoint_4th_type0(alva_mod, &
00066 & dalvadxgp,dalvadygp,dalvadzgp,irg,itg,ipg,cobj)
00067 ainvh = 1.0d0/alph(irg,itg,ipg)
00068 lie_bAx = Lie_bAxd_grid(irg,itg,ipg)
00069 lie_bAy = Lie_bAyd_grid(irg,itg,ipg)
00070 lie_bAz = Lie_bAzd_grid(irg,itg,ipg)
00071 fxd_grid_mod(irg,itg,ipg) = ainvh*(lie_bAx - dalvadxgp)
00072 fyd_grid_mod(irg,itg,ipg) = ainvh*(lie_bAy - dalvadygp)
00073 fzd_grid_mod(irg,itg,ipg) = ainvh*(lie_bAz - dalvadzgp)
00074
00075 end do
00076 end do
00077 end do
00078
00079 p2fxu(0:nrg,0:ntg,0:npg) = psi(0:nrg,0:ntg,0:npg)**2 &
00080 & *((1.0d0 + hxxu(0:nrg,0:ntg,0:npg))*fxd_grid_mod(0:nrg,0:ntg,0:npg) &
00081 & + hxyu(0:nrg,0:ntg,0:npg) *fyd_grid_mod(0:nrg,0:ntg,0:npg) &
00082 & + hxzu(0:nrg,0:ntg,0:npg) *fzd_grid_mod(0:nrg,0:ntg,0:npg))
00083 p2fyu(0:nrg,0:ntg,0:npg) = psi(0:nrg,0:ntg,0:npg)**2 &
00084 & *(hxyu(0:nrg,0:ntg,0:npg) *fxd_grid_mod(0:nrg,0:ntg,0:npg) &
00085 & + (1.0d0 + hyyu(0:nrg,0:ntg,0:npg))*fyd_grid_mod(0:nrg,0:ntg,0:npg) &
00086 & + hyzu(0:nrg,0:ntg,0:npg) *fzd_grid_mod(0:nrg,0:ntg,0:npg))
00087 p2fzu(0:nrg,0:ntg,0:npg) = psi(0:nrg,0:ntg,0:npg)**2 &
00088 & *(hxzu(0:nrg,0:ntg,0:npg) *fxd_grid_mod(0:nrg,0:ntg,0:npg) &
00089 & + hyzu(0:nrg,0:ntg,0:npg) *fyd_grid_mod(0:nrg,0:ntg,0:npg) &
00090 & + (1.0d0 + hzzu(0:nrg,0:ntg,0:npg))*fzd_grid_mod(0:nrg,0:ntg,0:npg))
00091
00092
00093 pi4invR2 = 1.0d0/(4.0d0*pi*radi**2)
00094 ipg = 0
00095 do itg = 0, ntg
00096 do irg = 0, nrg
00097
00098 vecphi(1)= vec_phig(irg,itg,ipg,1)
00099 vecphi(2)= vec_phig(irg,itg,ipg,2)
00100 vecphi(3)= vec_phig(irg,itg,ipg,3)
00101 alps6inv = 1.0d0/(alph(irg,itg,ipg)*psi(irg,itg,ipg)**6)
00102 Aphi = vaphid_mod(irg,itg,ipg)
00103 call calc_integrability_fnc_MHD(Aphi)
00104 call grgrad_gridpoint_4th_type0(p2fxu,dfxudx,dfxudy,dfxudz,&
00105 & irg,itg,ipg,cobj)
00106 call grgrad_gridpoint_4th_type0(p2fyu,dfyudx,dfyudy,dfyudz,&
00107 & irg,itg,ipg,cobj)
00108 call grgrad_gridpoint_4th_type0(p2fzu,dfzudx,dfzudy,dfzudz,&
00109 & irg,itg,ipg,cobj)
00110
00111 jtu(irg,itg,ipg) = pi4invR2*alps6inv*(dfxudx + dfyudy +dfzudz)
00112
00113 end do
00114 end do
00115
00116
00117
00118 do ipg = 1, npg
00119 do itg = 0, ntg
00120 do irg = 0, nrg
00121 jtu(irg,itg,ipg) = jtu(irg,itg,0)
00122 end do
00123 end do
00124 end do
00125
00126 call interpo_gr2fl(jtu,jtuf)
00127
00128
00129
00130
00131
00132
00133
00134
00135
00136 itg = ntgeq-2; ipg = 2
00137 call calc_integrability_modify_At(va_mod,'gr')
00138
00139 open(15,file='test_vec_va_mod',status='unknown')
00140 do irg = 0, nrg
00141 write(15,'(1p,9e20.12)') rg(irg), va_mod(irg,itg,ipg) &
00142 & , vaxd_mod(irg,itg,ipg) &
00143 & , vayd_mod(irg,itg,ipg) &
00144 & , jtu(irg,itg,ipg)
00145 end do
00146 close(15)
00147
00148 deallocate(vaphid_mod)
00149 deallocate(va_mod)
00150 deallocate(alva_mod)
00151 deallocate(vaxd_mod)
00152 deallocate(vayd_mod)
00153 deallocate(fxd_grid_mod)
00154 deallocate(fyd_grid_mod)
00155 deallocate(fzd_grid_mod)
00156 deallocate(p2fxu)
00157 deallocate(p2fyu)
00158 deallocate(p2fzu)
00159
00160 end subroutine current_jt_MHD