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