00001 subroutine calc_integrability_modify_At(va_mod,supp)
00002 use phys_constant, only : long
00003 use grid_parameter
00004 use coordinate_grav_r, only : rg
00005 use def_matter, only : rs
00006 use def_metric, only : alph, psi, bvxu, bvyu, bvzu
00007 use def_emfield, only : va, vaxd, vayd, vazd
00008 use def_vector_phi, only : vec_phig
00009 use integrability_fnc_MHD
00010 use make_array_3d
00011 implicit none
00012 real(long), pointer :: va_mod(:,:,:)
00013 real(long), pointer :: vaphid(:,:,:)
00014 real(long) :: Aphi
00015 real(long) :: alphgg, bvxugg, bvyugg, bvzugg, vaxdgg, vaydgg, vazdgg
00016 integer :: irg, itg, ipg
00017 integer :: irg1
00018 character(len=2), intent(in) :: supp
00019
00020 call alloc_array3d(vaphid, 0, nrg, 0, ntg, 0, npg)
00021
00022 vaphid(0:nrg,0:ntg,0:npg)=vayd(0:nrg,0:ntg,0:npg) &
00023 & *vec_phig(0:nrg,0:ntg,0:npg,2)
00024
00025
00026
00027
00028 ipg = 0
00029 do itg = 0, ntg
00030 do irg = 0, nrg
00031
00032 if (supp.eq.'ns'.and.rg(irg).gt.rs(itg,ipg)) cycle
00033
00034 alphgg = alph(irg,itg,ipg)
00035 bvxugg = bvxu(irg,itg,ipg)
00036 bvyugg = bvyu(irg,itg,ipg)
00037 bvzugg = bvzu(irg,itg,ipg)
00038 vaxdgg = vaxd(irg,itg,ipg)
00039 vaydgg = vayd(irg,itg,ipg)
00040 vazdgg = vazd(irg,itg,ipg)
00041 Aphi = vaphid(irg,itg,ipg)
00042 call calc_integrability_fnc_MHD(Aphi)
00043 va_mod(irg,itg,ipg) = 1.0/alphgg*(- MHDfnc_At &
00044 & + vaxdgg*bvxugg + vaydgg*bvyugg + vazdgg*bvzugg)
00045
00046 end do
00047 end do
00048
00049
00050
00051 do ipg = 1, npg
00052 if (supp.eq.'ns'.and.rg(irg).gt.rs(itg,ipg)) cycle
00053 va_mod(0:nrg,0:ntg,ipg) = va_mod(0:nrg,0:ntg,0)
00054 end do
00055
00056 deallocate(vaphid)
00057
00058 end subroutine calc_integrability_modify_At