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