00001 subroutine calc_vector_bh(sb)
00002 use phys_constant, only : long
00003 use grid_parameter, only : nrf, ntf, npf, nrg, ntg, npg
00004 use coordinate_grav_r, only : rg, hrg
00005 use trigonometry_grav_theta, only : sinthg, hsinthg, costhg, hcosthg
00006 use trigonometry_grav_phi, only : sinphig, cosphig, hsinphig, hcosphig
00007 use def_binary_parameter, only : dis
00008 use def_bh_parameter, only : th_spin_bh, phi_spin_bh
00009 use def_vector_bh
00010 use interface_interpo_linear_type0_2Dsurf
00011 implicit none
00012 real(long) :: rrgg, sth, cth, sphi, cphi, dis_bin
00013 real(long) :: spin_matrix(3,3), spin_axis(3), spin_z(3)
00014 integer :: irg, itg, ipg, sb, ii
00015
00016 dis_bin = dis
00017 if(sb.eq.1) dis_bin = 0.0d0
00018
00019 spin_matrix(1,1) = dcos(th_spin_bh)*dcos(phi_spin_bh)
00020 spin_matrix(1,2) = -dsin(phi_spin_bh)
00021 spin_matrix(1,3) = dsin(th_spin_bh)*dcos(phi_spin_bh)
00022 spin_matrix(2,1) = dcos(th_spin_bh)*dsin(phi_spin_bh)
00023 spin_matrix(2,2) = dcos(phi_spin_bh)
00024 spin_matrix(2,3) = dsin(th_spin_bh)*dsin(phi_spin_bh)
00025 spin_matrix(3,1) = -dsin(th_spin_bh)
00026 spin_matrix(3,2) = 0.0d0
00027 spin_matrix(3,3) = dcos(th_spin_bh)
00028 spin_z(1) = 0.0d0
00029 spin_z(2) = 0.0d0
00030 spin_z(3) = 1.0d0
00031 do ii = 1, 3
00032 spin_axis(ii) = spin_matrix(ii,1)*spin_z(1) &
00033 & + spin_matrix(ii,2)*spin_z(2) &
00034 & + spin_matrix(ii,3)*spin_z(3)
00035 end do
00036
00037 do ipg = 0, npg
00038 do itg = 0, ntg
00039 irg = 0
00040 rrgg = rg(irg)
00041 sth = sinthg(itg)
00042 cth = costhg(itg)
00043 sphi = sinphig(ipg)
00044 cphi = cosphig(ipg)
00045 vec_bh_cm_xg(itg,ipg,1) = - dis_bin + rrgg*sth*cphi
00046 vec_bh_cm_xg(itg,ipg,2) = rrgg*sth*sphi
00047 vec_bh_cm_xg(itg,ipg,3) = rrgg*cth
00048 vec_bh_cm_phig(itg,ipg,1) = - rrgg*sth*sphi
00049 vec_bh_cm_phig(itg,ipg,2) = - dis_bin + rrgg*sth*cphi
00050 vec_bh_cm_phig(itg,ipg,3) = 0.0d0
00051 vec_bh_cbh_xg(itg,ipg,1) = rrgg*sth*cphi
00052 vec_bh_cbh_xg(itg,ipg,2) = rrgg*sth*sphi
00053 vec_bh_cbh_xg(itg,ipg,3) = rrgg*cth
00054 vec_bh_cbh_phig(itg,ipg,1) = - rrgg*sth*sphi
00055 vec_bh_cbh_phig(itg,ipg,2) = rrgg*sth*cphi
00056 vec_bh_cbh_phig(itg,ipg,3) = 0.0d0
00057 vec_bh_cbh_spin(itg,ipg,1) = spin_axis(2)*vec_bh_cbh_xg(itg,ipg,3)&
00058 & - spin_axis(3)*vec_bh_cbh_xg(itg,ipg,2)
00059 vec_bh_cbh_spin(itg,ipg,2) = spin_axis(3)*vec_bh_cbh_xg(itg,ipg,1)&
00060 & - spin_axis(1)*vec_bh_cbh_xg(itg,ipg,3)
00061 vec_bh_cbh_spin(itg,ipg,3) = spin_axis(1)*vec_bh_cbh_xg(itg,ipg,2)&
00062 & - spin_axis(2)*vec_bh_cbh_xg(itg,ipg,1)
00063 if (itg.eq.0.or.ipg.eq.0) cycle
00064 rrgg = rg(irg)
00065 sth = hsinthg(itg)
00066 cth = hcosthg(itg)
00067 sphi = hsinphig(ipg)
00068 cphi = hcosphig(ipg)
00069 hvec_bh_cm_xg(itg,ipg,1) = - dis_bin + rrgg*sth*cphi
00070 hvec_bh_cm_xg(itg,ipg,2) = rrgg*sth*sphi
00071 hvec_bh_cm_xg(itg,ipg,3) = rrgg*cth
00072 hvec_bh_cm_phig(itg,ipg,1) = - rrgg*sth*sphi
00073 hvec_bh_cm_phig(itg,ipg,2) = - dis_bin + rrgg*sth*cphi
00074 hvec_bh_cm_phig(itg,ipg,3) = 0.0d0
00075 hvec_bh_cbh_xg(itg,ipg,1) = rrgg*sth*cphi
00076 hvec_bh_cbh_xg(itg,ipg,2) = rrgg*sth*sphi
00077 hvec_bh_cbh_xg(itg,ipg,3) = rrgg*cth
00078 hvec_bh_cbh_phig(itg,ipg,1) = - rrgg*sth*sphi
00079 hvec_bh_cbh_phig(itg,ipg,2) = rrgg*sth*cphi
00080 hvec_bh_cbh_phig(itg,ipg,3) = 0.0d0
00081 hvec_bh_cbh_spin(itg,ipg,1) = spin_axis(2)*hvec_bh_cbh_xg(itg,ipg,3)&
00082 & - spin_axis(3)*hvec_bh_cbh_xg(itg,ipg,2)
00083 hvec_bh_cbh_spin(itg,ipg,2) = spin_axis(3)*hvec_bh_cbh_xg(itg,ipg,1)&
00084 & - spin_axis(1)*hvec_bh_cbh_xg(itg,ipg,3)
00085 hvec_bh_cbh_spin(itg,ipg,3) = spin_axis(1)*hvec_bh_cbh_xg(itg,ipg,2)&
00086 & - spin_axis(2)*hvec_bh_cbh_xg(itg,ipg,1)
00087 end do
00088 end do
00089 end subroutine calc_vector_bh