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 character(len=2), intent(in) :: supp
00018
00019 call alloc_array3d(vaphid, 0, nrg, 0, ntg, 0, npg)
00020
00021 vaphid(0:nrg,0:ntg,0:npg)=vayd(0:nrg,0:ntg,0:npg) &
00022 & *vec_phig(0:nrg,0:ntg,0:npg,2)
00023
00024
00025 ipg = 0
00026 do itg = 0, ntg
00027 do irg = 0, nrg
00028
00029 if (supp.eq.'ns'.and.rg(irg).gt.rs(itg,ipg)) cycle
00030
00031 alphgg = alph(irg,itg,ipg)
00032 bvxugg = bvxu(irg,itg,ipg)
00033 bvyugg = bvyu(irg,itg,ipg)
00034 bvzugg = bvzu(irg,itg,ipg)
00035 vaxdgg = vaxd(irg,itg,ipg)
00036 vaydgg = vayd(irg,itg,ipg)
00037 vazdgg = vazd(irg,itg,ipg)
00038 Aphi = vaphid(irg,itg,ipg)
00039 call calc_integrability_fnc_MHD(Aphi)
00040 va_mod(irg,itg,ipg) = 1.0/alphgg*(- MHDfnc_At &
00041 & + vaxdgg*bvxugg + vaydgg*bvyugg + vazdgg*bvzugg)
00042
00043 end do
00044 end do
00045
00046
00047
00048 do ipg = 1, npg
00049 if (supp.eq.'ns'.and.rg(irg).gt.rs(itg,ipg)) cycle
00050 va_mod(0:nrg,0:ntg,ipg) = va_mod(0:nrg,0:ntg,0)
00051 end do
00052
00053 deallocate(vaphid)
00054
00055 end subroutine calc_integrability_modify_At