00001 subroutine calc_admmom_asympto(cobj)
00002   use phys_constant, only  : long, pi
00003   use grid_parameter, only : nrg, ntg, npg, rgout
00004   use coordinate_grav_r, only : rg
00005   use def_matter_parameter, only : radi
00006   use make_array_2d
00007   use make_array_3d
00008   use def_quantities, only : admmom_asymp
00009   use interface_source_admmom_asympto
00010   use interface_surf_int_grav_rg
00011   implicit none
00012   real(long) :: fac8pi
00013   real(long) :: surf, rg_asympt
00014   real(long), pointer :: sousf(:,:), sousfv(:,:,:)
00015   integer    :: irg, ir, ii
00016   character(len=2), intent(in) :: cobj
00017 
00018   call alloc_array2d(sousf , 0, ntg, 0, npg)
00019   call alloc_array3d(sousfv, 0, ntg, 0, npg, 1, 3)
00020 
00021   rg_asympt = 10.0**(dlog10(rgout)*2.0/3.0)
00022   do ir = 0, nrg
00023     irg = ir
00024     if (rg(ir).ge.rg_asympt) exit
00025   end do
00026 
00027   call source_admmom_asympto(sousfv,irg)
00028   do ii = 1, 3
00029     sousf(0:ntg,0:npg) = sousfv(0:ntg,0:npg,ii)
00030     call surf_int_grav_rg(sousf,surf,irg)
00031     fac8pi = 1.0d0/(8.0d0*pi)
00032     admmom_asymp(ii) = fac8pi*radi**2*surf
00033     if (cobj.eq.'bh') admmom_asymp(ii) = fac8pi*surf
00034   end do
00035 
00036 
00037 
00038   deallocate(sousf)
00039   deallocate(sousfv)
00040 end subroutine calc_admmom_asympto