00001 subroutine calc_scalar_wave_moment
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 make_array_2d
00006   use make_array_3d
00007   use def_quantities, only : admmom_asymp
00008   use interface_source_scalar_wave_moment_asympto
00009   use interface_surf_int_grav_rg
00010   implicit none
00011   real(long) :: fac8pi
00012   real(long) :: surf, rg_asympt
00013   real(long), pointer :: sousf(:,:), sousfv(:,:,:)
00014   integer    :: irg, ir, ii
00015 
00016   call alloc_array2d(sousf , 0, ntg, 0, npg)
00017   call alloc_array3d(sousfv, 0, ntg, 0, npg, 1, 3)
00018 
00019   rg_asympt = rgout*3.0/4.0
00020   do ir = 0, nrg
00021     irg = ir
00022     if (rg(ir).ge.rg_asympt) exit
00023   end do
00024 
00025   call source_scalar_wave_moment_asympto(sousfv,irg)
00026   do ii = 1, 3
00027     sousf(0:ntg,0:npg) = sousfv(0:ntg,0:npg,ii)
00028     call surf_int_grav_rg(sousf,surf,irg)
00029     fac8pi = 1.0d0/(8.0d0*pi)
00030     admmom_asymp(ii) = fac8pi*surf
00031   end do
00032 
00033 
00034 
00035   deallocate(sousf)
00036   deallocate(sousfv)
00037 end subroutine calc_scalar_wave_moment