00001 subroutine excurve_TrpBH
00002   use phys_constant,  only : long
00003   use grid_parameter, only : nrg, ntg, npg
00004   use def_metric_pBH,  only : aij_trpBH, aijaij_trpBH
00005   use def_bh_parameter, only : mass_pBH, mom_pBH, spin_pBH
00006   use coordinate_grav_r, only : hrg
00007   use def_vector_x, only : hvec_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, hnk_pk, hn(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 = 1, npg
00032     do itg = 1, ntg
00033       do irg = 1, nrg
00034         aijaij_trpBH(irg,itg,ipg) = 0.0d0
00035         hn(1) =  hvec_xg(irg,itg,ipg,1)/hrg(irg)
00036         hn(2) =  hvec_xg(irg,itg,ipg,2)/hrg(irg)
00037         hn(3) =  hvec_xg(irg,itg,ipg,3)/hrg(irg)
00038         hnk_pk = hn(1)*p(1) + hn(2)*p(2) + hn(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)*hn(m)
00044             end do
00045           end do
00046         end do
00047 
00048         do i = 1, 3
00049           do j = 1, 3
00050 
00051             aij_trpBH(irg,itg,ipg,i,j) = fac/hrg(irg)**3.0d0 &
00052             &                          * (gm(i,j) - 3.0d0*hn(i)*hn(j))&
00053             &                          + fac_p/hrg(irg)**2.0d0 &
00054             &                          *(p(i)*hn(j) + p(j)*hn(i) &
00055             &                          - hnk_pk*(gm(i,j) - hn(i)*hn(j))) &
00056             &                          + fac_s/hrg(irg)**3.0d0 &
00057             &                          *0.5d0*(hn(i)*eps_s(j) &
00058             &                                + hn(j)*eps_s(i))
00059 
00060             aijaij_trpBH(irg,itg,ipg) = aijaij_trpBH(irg,itg,ipg) &
00061             &                         + aij_trpBH(irg,itg,ipg,i,j)**2.0d0
00062           end do
00063         end do
00064         if (aijaij_trpBH(irg,itg,ipg) /= 0.0d0) info = 1
00065       end do
00066     end do
00067   end do
00068 
00069   if (info /= 1) write(6,*) ' ### Warning Aij_trpBH = 0 *** '
00070 
00071 end subroutine excurve_TrpBH