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