00001 subroutine excurve_TrpBH_gridpoint
00002   use phys_constant,  only : long
00003   use grid_parameter, only : nrg, ntg, npg
00004   use def_metric_pBH,  only : aij_trpBH_grid, aijaij_trpBH_grid
00005   use def_bh_parameter, only : mass_pBH, mom_pBH, spin_pBH
00006   use coordinate_grav_r, only : rg
00007   use def_vector_x, only : vec_xg
00008   use make_array_4d
00009   implicit none
00010   integer :: info
00011   integer :: irg, itg, ipg, i, j, k, l, m
00012   real(long) :: gm(3,3), fac, fac_p, fac_s, nk_pk, n(3), p(3), s(3)
00013   real(long) :: epsi(3,3,3), eps_s(3)
00014 
00015 
00016 
00017 
00018   info = 0
00019 
00020   fac = 3.0d0*dsqrt(3.0d0)*mass_pBH**2.0d0/4.0d0
00021   fac_p = 3.0d0/2.0d0
00022   fac_s = 6.0d0
00023   epsi(1:3,1:3,1:3) = 0.0d0
00024   epsi(1,2,3) =  1.0d0 ; epsi(2,3,1) =  1.0d0 ; epsi(3,1,2) =  1.0d0
00025   epsi(2,1,3) = -1.0d0 ; epsi(1,3,2) = -1.0d0 ; epsi(3,2,1) = -1.0d0
00026   gm(1:3,1:3) = 0.0d0
00027   gm(1,1) = 1.0d0 ; gm(2,2) = 1.0d0 ; gm(3,3) = 1.0d0
00028   p(1) = mom_pBH(1) ; s(1) = spin_pBH(1) 
00029   p(2) = mom_pBH(2) ; s(2) = spin_pBH(2) 
00030   p(3) = mom_pBH(3) ; s(3) = spin_pBH(3)
00031   do ipg = 0, npg
00032     do itg = 0, ntg
00033       do irg = 1, nrg
00034         aijaij_trpBH_grid(irg,itg,ipg) = 0.0d0
00035         n(1) = vec_xg(irg,itg,ipg,1)/rg(irg)
00036         n(2) = vec_xg(irg,itg,ipg,2)/rg(irg)
00037         n(3) = vec_xg(irg,itg,ipg,3)/rg(irg)
00038         nk_pk = n(1)*p(1) + n(2)*p(2) + n(3)*p(3)
00039         do k = 1, 3
00040           eps_s(k) = 0.0d0
00041           do l = 1, 3
00042             do m = 1, 3
00043               eps_s(k) = eps_s(k) + epsi(k,l,m)*s(l)*n(m)
00044             end do
00045           end do
00046         end do
00047 
00048 
00049         do i = 1, 3
00050           do j = 1, 3
00051 
00052             aij_trpBH_grid(irg,itg,ipg,i,j) = fac/rg(irg)**3.0d0 &
00053             &                               * (gm(i,j) - 3.0d0*n(i)*n(j))&
00054             &                               + fac_p/rg(irg)**2.0d0 &
00055             &                               *(p(i)*n(j) + p(j)*n(i) &
00056             &                               - nk_pk*(gm(i,j) - n(i)*n(j))) &
00057             &                               + fac_s/rg(irg)**3.0d0 &
00058             &                               *0.5d0*(n(i)*eps_s(j) &
00059             &                                     + n(j)*eps_s(i))
00060 
00061             aijaij_trpBH_grid(irg,itg,ipg) = aijaij_trpBH_grid(irg,itg,ipg) &
00062             &                      + aij_trpBH_grid(irg,itg,ipg,i,j)**2.0d0
00063           end do
00064         end do
00065         if (aijaij_trpBH_grid(irg,itg,ipg) /= 0.0d0) info = 1
00066       end do
00067     end do
00068   end do
00069 
00070   aij_trpBH_grid(0,0:ntg,0:npg,1:3,1:3) = 1.0d+40
00071   aijaij_trpBH_grid(0,0:ntg,0:npg) = 1.0d+40
00072 
00073   if (info /= 1) write(6,*) ' ### Warning Aij_trpBH = 0 *** '
00074 
00075 end subroutine excurve_TrpBH_gridpoint