00001 subroutine calc_mass_BBH_CF_adm_vol
00002 use phys_constant, only : long, pi
00003 use grid_parameter, only : nrg, ntg, npg, rgin
00004 use make_array_2d
00005 use make_array_3d
00006 use def_quantities, only : admmass_thr
00007
00008 use interface_sourceterm_HaC_CF
00009 use interface_sourceterm_surface_int
00010 use interface_sourceterm_exsurf_eqm_binary
00011 use interface_bh_boundary_AH_n_psi
00012
00013 use def_metric, only : psi
00014 use grid_parameter_binary_excision, only : ex_nrg
00015 use interface_vol_int_grav_bhex
00016 use interface_surf_int_grav_rg
00017 implicit none
00018 real(long) :: fac2pi , fac4pi, val
00019 real(long) :: vol_int_adm, surf_int_bh, surf_int_ex
00020 real(long) :: adm_mass_vol, adm_mass_si_bh, adm_mass_si_ex
00021 real(long),pointer :: sou(:,:,:)
00022 real(long), pointer :: sou_exsurf(:,:), dsou_exsurf(:,:)
00023 real(long), pointer :: sou_bhsurf(:,:), dsou_bhsurf(:,:)
00024 integer :: mass_ir, irg, ipg, itg
00025
00026 call alloc_array3d(sou,0,nrg,0,ntg,0,npg)
00027 call alloc_array2d(sou_bhsurf,0,ntg,0,npg)
00028 call alloc_array2d(dsou_bhsurf,0,ntg,0,npg)
00029 call alloc_array2d(sou_exsurf,0,ntg,0,npg)
00030 call alloc_array2d(dsou_exsurf,0,ntg,0,npg)
00031
00032 fac2pi = 0.5d0/pi
00033 fac4pi = 0.25d0/pi
00034
00035 call calc_mass_ir(mass_ir)
00036
00037
00038
00039
00040 call sourceterm_HaC_CF(sou)
00041 call vol_int_grav_bhex(sou,vol_int_adm,mass_ir)
00042 adm_mass_vol = -fac2pi*vol_int_adm
00043
00044 call sourceterm_surface_int(psi,0,sou_bhsurf,dsou_bhsurf)
00045 call surf_int_grav_rg(dsou_bhsurf,surf_int_bh,0)
00046 adm_mass_si_bh = -fac2pi*surf_int_bh
00047
00048 call sourceterm_exsurf_eqm_binary(psi,sou_exsurf,dsou_exsurf)
00049 call surf_int_grav_rg(dsou_exsurf,surf_int_ex,ex_nrg)
00050 adm_mass_si_ex = -fac2pi*surf_int_ex
00051
00052
00053 admmass_thr = adm_mass_vol + adm_mass_si_bh + adm_mass_si_ex
00054
00055
00056
00057 dsou_bhsurf(0:ntg,0:npg) = 0.0d0
00058 call bh_boundary_AH_n_psi(dsou_bhsurf)
00059 call surf_int_grav_rg(dsou_bhsurf,surf_int_bh,0)
00060 adm_mass_si_bh = -fac2pi*surf_int_bh
00061
00062 write (6,'(a40,1p,e20.12)') 'ADM mass thr using Neumann bc for psi=', &
00063 & adm_mass_vol + adm_mass_si_bh + adm_mass_si_ex
00064
00065 deallocate(sou)
00066 deallocate(sou_exsurf)
00067 deallocate(dsou_exsurf)
00068 deallocate(sou_bhsurf)
00069 deallocate(dsou_bhsurf)
00070 end subroutine calc_mass_BBH_CF_adm_vol