00001 subroutine source_qua_loc_spin_peos(soug,irs)
00002 use phys_constant, only : long
00003 use grid_parameter, only : nrg, ntg, npg, nrf
00004 use make_array_2d
00005 use def_metric, only : psi, tfkij
00006
00007 use coordinate_grav_r, only : hrg
00008 use def_vector_x, only : hvec_xg
00009 use def_vector_phi, only : hvec_phig
00010 use interface_interpo_linear_type0_2Dsurf
00011 implicit none
00012 real(long), pointer :: soug(:,:), psi_irs(:,:)
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, irs, ii
00016
00017 call alloc_array2d(psi_irs,0,ntg,0,npg)
00018
00019 psi_irs(0:ntg,0:npg) = psi(irs,0:ntg,0:npg)
00020 do ipg = 1, npg
00021 do itg = 1, ntg
00022 call interpo_linear_type0_2Dsurf(val,psi_irs,itg,ipg)
00023 psi6 = val**6
00024 soug(itg,ipg)=0.0d0
00025 do ib = 1, 3
00026 do ia = 1, 3
00027 Aij_surf = tfkij(irs,itg,ipg,ia,ib)
00028 ni = +hvec_xg(irs,itg,ipg,ib)/hrg(irs)
00029 vphi_cm = hvec_phig(irs,itg,ipg,ia)
00030 soug(itg,ipg) = soug(itg,ipg) + Aij_surf*vphi_cm*ni
00031 end do
00032 end do
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042 soug(itg,ipg) = soug(itg,ipg)*psi6
00043 end do
00044 end do
00045
00046 deallocate(psi_irs)
00047 end subroutine source_qua_loc_spin_peos
00048