00001 subroutine calc_charge_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 def_quantities, only : charge_asymp
00008 use interface_source_charge_asympto
00009 use interface_surf_int_grav_rg
00010 implicit none
00011 real(long) :: fac2pi, fac4pi
00012 real(long) :: surf, rg_asympt
00013 real(long), pointer :: sousf(:,:)
00014 integer :: irg, ir
00015 character(len=2), intent(in) :: cobj
00016
00017 call alloc_array2d(sousf, 0, ntg, 0, npg)
00018
00019 rg_asympt = 10.0**(dlog10(rgout)*2.0/3.0)
00020 do ir = 0, nrg
00021 irg = ir
00022 if (rg(ir).ge.rg_asympt) exit
00023 end do
00024
00025 call source_charge_asympto(sousf,irg)
00026 call surf_int_grav_rg(sousf,surf,irg)
00027 fac4pi = 0.25d0/pi
00028 charge_asymp = fac4pi*radi*surf
00029 if (cobj.eq.'bh') charge_asymp = fac4pi*surf
00030
00031 write (6,'(a20,1p,e14.6)') ' Charge asympt = ', charge_asymp
00032
00033 deallocate(sousf)
00034 end subroutine calc_charge_asympto