00001 subroutine calc_integrability_At
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 :: vaphid(:,:,:)
00013   real(long) :: Aphi
00014   real(long) :: alphgg, bvxugg, bvyugg, bvzugg, vaxdgg, vaydgg, vazdgg
00015   integer    :: irg, itg, ipg
00016 
00017   call alloc_array3d(vaphid, 0, nrg, 0, ntg, 0, npg)
00018 
00019   vaphid(0:nrg,0:ntg,0:npg)=vayd(0:nrg,0:ntg,0:npg) &
00020   &                    *vec_phig(0:nrg,0:ntg,0:npg,2)
00021 
00022 
00023   ipg = 0
00024   do itg = 0, ntg
00025     do irg = 0, nrg
00026 
00027       if (rg(irg).gt.rs(itg,ipg)) cycle
00028 
00029       alphgg = alph(irg,itg,ipg)
00030       bvxugg = bvxu(irg,itg,ipg)
00031       bvyugg = bvyu(irg,itg,ipg)
00032       bvzugg = bvzu(irg,itg,ipg)
00033       vaxdgg = vaxd(irg,itg,ipg)
00034       vaydgg = vayd(irg,itg,ipg)
00035       vazdgg = vazd(irg,itg,ipg)
00036       Aphi = vaphid(irg,itg,ipg)
00037       call calc_integrability_fnc_MHD(Aphi)
00038       va(irg,itg,ipg) = 1.0/alphgg*(- MHDfnc_At &
00039       &               + vaxdgg*bvxugg + vaydgg*bvyugg + vazdgg*bvzugg)
00040 
00041     end do
00042   end do
00043 
00044 
00045 
00046   do ipg = 1, npg
00047     if (rg(irg).gt.rs(itg,ipg)) cycle
00048     va(0:nrg,0:ntg,ipg) = va(0:nrg,0:ntg,0)
00049   end do
00050 
00051   deallocate(vaphid)
00052 
00053 end subroutine calc_integrability_At