reset_bh_boundary_AH.f90

Go to the documentation of this file.
00001 subroutine reset_bh_boundary_AH
00002   use phys_constant, only  : long
00003   use grid_parameter, only : nrg, ntg, npg, rgin
00004   use def_metric
00005   use def_bh_parameter, only : ome_bh, spin_bh, alph_bh
00006   use def_binary_parameter,    only : sepa
00007   use def_metric_excurve_grid, only : tfkij_grid
00008   use def_vector_bh, only : vec_bh_cbh_xg, vec_bh_cm_phig, vec_bh_cbh_phig
00009   use make_array_2d
00010   use make_array_3d
00011   use interface_grdr_gridpoint_type0_nosym
00012   use interface_interpo_linear_type0_2Dsurf
00013   implicit none
00014   real(long), pointer :: sou_surf(:,:), dsou_surf(:,:)
00015   real(long), pointer :: psi_bhsurf(:,:), dpsi_bhsurf(:,:)
00016   real(long), pointer :: bvxyzd(:,:,:)
00017   real(long) :: work(2,2), deriv, dpsidr
00018   real(long) :: Aij_surf, Aij_sisj, si, sj
00019   real(long) :: psigc, psigc3, psigcinv2
00020   real(long) :: vphi_cm, vphi_cbh
00021   integer    :: itg, ipg, ii, jj
00022 !
00023   call alloc_array2d(psi_bhsurf, 0, ntg, 0, npg)
00024   call alloc_array2d(dpsi_bhsurf, 0, ntg, 0, npg)
00025   call alloc_array3d(bvxyzd,0,ntg,0,npg,1,3)
00026 !
00027   psi_bhsurf(0:ntg,0:npg) = psi(0,0:ntg,0:npg)
00028 !
00029   do ipg = 0, npg
00030     do itg = 0, ntg
00031       call grdr_gridpoint_type0_nosym(psi,deriv,0,itg,ipg)
00032       dpsi_bhsurf(itg,ipg) = deriv
00033     end do
00034   end do
00035 !
00036   do ipg = 0, npg
00037     do itg = 0, ntg
00038       psigc = psi(0,itg,ipg)
00039       psigc3 = psigc**3
00040       Aij_sisj = 0.0d0
00041       do ii = 1, 3
00042         do jj = 1, 3
00043           Aij_surf = tfkij_grid(0,itg,ipg,ii,jj)
00044           si = vec_bh_cbh_xg(itg,ipg,ii)/rgin
00045           sj = vec_bh_cbh_xg(itg,ipg,jj)/rgin
00046           Aij_sisj = Aij_sisj + Aij_surf*si*sj
00047         end do
00048       end do
00049       psi(0,itg,ipg) = 2.0d0*rgin*(-dpsi_bhsurf(itg,ipg) - 0.25d0*psigc3*Aij_sisj)
00050 !      dsou_surf(itg,ipg)= - 0.5d0*psigc/rgin  - 0.25d0*psigc3*Aij_sisj
00051     end do
00052   end do
00053   alps(0,0:ntg,0:npg) = alph_bh*psi(0,0:ntg,0:npg)
00054 !  dsou_surf(1:ntg,1:npg)= alph_bh*dsou_surf(1:ntg,1:npg)
00055 !
00056   do ii = 1,3
00057     do ipg = 0, npg
00058       do itg = 0, ntg
00059         psigc = psi(0,itg,ipg)
00060         psigcinv2 = 1.0d0/psigc**2
00061         si = vec_bh_cbh_xg(itg,ipg,ii)/rgin
00062         vphi_cm  = vec_bh_cm_phig(itg,ipg,ii)
00063         vphi_cbh = vec_bh_cbh_phig(itg,ipg,ii)
00064         bvxyzd(itg,ipg,ii) = alph_bh*psigcinv2*si - ome_bh*vphi_cm - spin_bh*vphi_cbh
00065       end do
00066     end do
00067   end do
00068 !
00069   bvxd(0,0:ntg,0:npg) = bvxyzd(0:ntg,0:npg,1)
00070   bvyd(0,0:ntg,0:npg) = bvxyzd(0:ntg,0:npg,2)
00071   bvzd(0,0:ntg,0:npg) = bvxyzd(0:ntg,0:npg,3)
00072 !
00073   deallocate(bvxyzd)
00074   deallocate(psi_bhsurf)
00075   deallocate(dpsi_bhsurf)
00076 end subroutine reset_bh_boundary_AH

Generated on 27 Oct 2011 for Cocal by  doxygen 1.6.1