00001 subroutine source_ang_mom_thr(sous)
00002 use phys_constant, only : long
00003 use grid_parameter, only : nrg, ntg, npg
00004 use make_array_2d
00005 use def_metric, only : psi, tfkij
00006 use def_metric_excurve_grid, only : tfkij_grid
00007 use coordinate_grav_r, only : rg
00008 use def_vector_bh, only : hvec_bh_cm_phig, hvec_bh_cbh_xg
00009 use interface_interpo_linear_type0_2Dsurf
00010 implicit none
00011 real(long), external :: lagint_2nd
00012 real(long), pointer :: sous(:,:), psi_bh(:,:)
00013 real(long) :: ni, vphi_bh, vphi_cm, Aij_surf, val, psi6, work(2,2)
00014 real(long) :: x(2),y(2), v
00015 integer :: irg, itg, ipg, ia, ib
00016
00017 call alloc_array2d(psi_bh,0,ntg,0,npg)
00018 call calc_vector_bh(2)
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035 psi_bh(0:ntg,0:npg) = psi(0,0:ntg,0:npg)
00036 do ipg = 1, npg
00037 do itg = 1, ntg
00038 call interpo_linear_type0_2Dsurf(val,psi_bh,itg,ipg)
00039 psi6 = val**6
00040 sous(itg,ipg)=0.0d0
00041 do ib = 1, 3
00042 do ia = 1, 3
00043 work(1:2,1:2) = tfkij_grid(0,itg-1:itg,ipg-1:ipg,ia,ib)
00044 call interpo_linear1p_type0_2Dsurf(Aij_surf,work)
00045
00046
00047 ni = -hvec_bh_cbh_xg(itg,ipg,ib)/rg(0)
00048 vphi_cm = hvec_bh_cm_phig(itg,ipg,ia)
00049
00050 sous(itg,ipg) = sous(itg,ipg) + Aij_surf*vphi_cm*ni
00051 end do
00052 end do
00053 sous(itg,ipg) = sous(itg,ipg)*psi6
00054 end do
00055 end do
00056
00057 deallocate(psi_bh)
00058 end subroutine source_ang_mom_thr
00059