00001 subroutine source_angmom_asympto(sousf,irg)
00002   use phys_constant, only : long
00003   use grid_parameter, only : ntg, npg
00004   use def_metric_excurve_grid, only : tfkij_grid
00005   use coordinate_grav_r, only : rg
00006   use def_vector_x, only   : vec_xg
00007   use def_vector_phi, only : vec_phig
00008   use make_array_2d
00009   use interface_interpo_linear_type0_2Dsurf
00010   implicit none
00011   real(long), pointer :: sousf(:,:)
00012   integer    :: irg
00013   real(long), pointer :: fnc(:,:)
00014   real(long) :: na, vphi_cm, Aij, val
00015   integer    :: itg, ipg, ia, ib
00016 
00017   call alloc_array2d(fnc, 0,ntg, 0,npg)
00018 
00019   do ipg = 0, npg
00020     do itg = 0, ntg
00021       fnc(itg,ipg) = 0.0d0
00022       do ib = 1, 3
00023         do ia = 1, 3
00024           Aij = tfkij_grid(irg,itg,ipg,ia,ib)
00025           vphi_cm = vec_phig(irg,itg,ipg,ib)
00026           na = vec_xg(irg,itg,ipg,ia)/rg(irg)
00027           fnc(itg,ipg) = fnc(itg,ipg) + Aij*vphi_cm*na
00028         end do
00029       end do
00030     end do
00031   end do
00032 
00033   do ipg = 1, npg
00034     do itg = 1, ntg
00035       call interpo_linear_type0_2Dsurf(val,fnc,itg,ipg)
00036       sousf(itg,ipg) = val
00037     end do
00038   end do
00039 
00040   deallocate(fnc)
00041 
00042 end subroutine source_angmom_asympto