00001 subroutine calc_integrability_modify_Aphi(vaxd_mod,vayd_mod,supp)
00002 use phys_constant, only : long
00003 use grid_parameter
00004 use coordinate_grav_r, only : rg
00005 use trigonometry_grav_phi, only : sinphig, cosphig
00006 use def_matter, only : rs
00007 use def_matter_parameter, only : ome
00008 use def_metric, only : alph, psi, bvxu, bvyu, bvzu
00009 use def_emfield, only : alva, vaxd, vayd, vazd
00010 use def_vector_phi, only : vec_phig
00011 use integrability_fnc_MHD
00012 use make_array_2d
00013 use make_array_3d
00014 implicit none
00015 real(long), pointer :: vaxd_mod(:,:,:), vayd_mod(:,:,:)
00016 real(long), pointer :: vaxd_0(:,:), vayd_0(:,:)
00017 real(long) :: alvagg, bvxugg, bvyugg, bvzugg, vaxdgg, vazdgg, vphigg
00018 integer :: irg, itg, ipg
00019 character(len=2), intent(in) :: supp
00020
00021 if (MHDidx_q.ne.0.0d0) stop ' stop MHDidx_q '
00022
00023 call alloc_array2d(vaxd_0, 0, nrg, 0, ntg)
00024 call alloc_array2d(vayd_0, 0, nrg, 0, ntg)
00025
00026 vaxd_0(0:nrg,0:ntg) = vaxd(0:nrg,0:ntg,0)
00027 vayd_0(0:nrg,0:ntg) = vayd(0:nrg,0:ntg,0)
00028
00029
00030
00031 ipg = 0
00032 do itg = 0, ntg
00033 do irg = 1, nrg
00034
00035 if (supp.eq.'ns'.and.rg(irg).gt.rs(itg,ipg)) cycle
00036
00037 alvagg = alva(irg,itg,ipg)
00038 bvxugg = bvxu(irg,itg,ipg)
00039 bvyugg = bvyu(irg,itg,ipg)
00040 bvzugg = bvzu(irg,itg,ipg)
00041 vaxdgg = vaxd(irg,itg,ipg)
00042 vazdgg = vazd(irg,itg,ipg)
00043 vphigg = vec_phig(irg,itg,ipg,2)
00044 vayd_0(irg,itg) = (alvagg - vaxdgg*bvxugg - vazdgg*bvzugg &
00045 & + MHDpar_charge)/(ome*vphigg + bvyugg)
00046
00047 end do
00048 end do
00049
00050
00051
00052 do ipg = 0, npg
00053
00054 vaxd_mod(0:nrg,0:ntg,ipg) = cosphig(ipg)*vaxd_0(0:nrg,0:ntg) &
00055 & - sinphig(ipg)*vayd_0(0:nrg,0:ntg)
00056 vayd_mod(0:nrg,0:ntg,ipg) = sinphig(ipg)*vaxd_0(0:nrg,0:ntg) &
00057 & + cosphig(ipg)*vayd_0(0:nrg,0:ntg)
00058 end do
00059
00060 deallocate(vaxd_0)
00061 deallocate(vayd_0)
00062 end subroutine calc_integrability_modify_Aphi