00001 module grid_parameter_binary_excision
00002 use phys_constant, only : long
00003 implicit none
00004 integer :: ex_nrg, ex_ndis
00005 real(long) :: ex_radius, ex_rgin, ex_rgmid, ex_rgout
00006 contains
00007 subroutine read_parameter_binary_excision
00008 use grid_parameter, only : nrf
00009 implicit none
00010 open(1,file='bin_ex_par.dat',status='old')
00011 read(1,'(2i5)') ex_nrg, ex_ndis
00012 close(1)
00013
00014 if (nrf.ge.ex_nrg) write(6,*) '** Warning ** nrf > ex_nrg '
00015 if (nrf.ge.ex_nrg) write(6,*) 'nrf = ', nrf, ' ex_nrg = ', ex_nrg
00016 if (ex_nrg.eq.0) write(6,*) ' No binary excision '
00017 end subroutine read_parameter_binary_excision
00018
00019 subroutine calc_parameter_binary_excision
00020 use grid_parameter, only : nrf, nrg
00021 use coordinate_grav_r, only : rg, drg
00022 use coordinate_grav_theta
00023 use coordinate_grav_phi
00024 use def_binary_parameter, only : sepa, dis
00025 implicit none
00026 integer :: irg
00027 sepa = 2.0d0*rg(ex_nrg + ex_ndis)
00028 dis = rg(ex_nrg + ex_ndis)
00029 ex_radius = rg(ex_nrg)
00030 ex_rgin = dis + dis - rg(ex_nrg)
00031 ex_rgmid = sepa
00032 ex_rgout = sepa + rg(ex_nrg)
00033 if (ex_nrg.eq.0) then
00034 sepa = 0.0d0
00035 dis = 0.0d0
00036 ex_radius = 0.0d0
00037 ex_rgin = 0.0d0
00038 ex_rgmid = 0.0d0
00039 ex_rgout = 0.0d0
00040 end if
00041
00042 end subroutine calc_parameter_binary_excision
00043
00044 subroutine IO_printout_grid_data
00045 use grid_parameter, only : nrf, nrg
00046 use coordinate_grav_r, only : rg, drg
00047 use coordinate_grav_theta
00048 use coordinate_grav_phi
00049 use def_binary_parameter, only : sepa, dis
00050 implicit none
00051 integer :: irg
00052 open(1,file='grid_data.dat',status='unknown')
00053
00054
00055
00056
00057
00058
00059
00060 write(1,'(a4,i3,a10,1p,e20.12)') 'ntg=', ntg, ' dthg=', dthg
00061 write(1,'(a4,i3,a10,1p,e20.12)') 'npg=', npg, ' dphg=', dphig
00062 write(1,'(a100)') ' ex_radius< dis< ex_rgin< sepa< ex_rgout'
00063 write(1,'(1p,6e20.12)') ex_radius,dis,ex_rgin,sepa,ex_rgout
00064
00065 write(1,'(a37,i3,a2,1p,e20.12)') '..................................rg(',0,')=', rg(0)
00066
00067 do irg=1,ex_nrg-1
00068 write(1,'(a4,i3,a2,1p,e20.12,a5,a3,i3,a2,1p,e20.12)') 'drg(',irg,')=',drg(irg),' ','rg(',irg,')=',rg(irg)
00069 end do
00070
00071 write(1,'(a4,i3,a2,1p,e20.12,a5,a3,i3,a2,1p,e20.12,a24)') 'drg(',ex_nrg,')=',drg(ex_nrg),' ','rg(',irg,')=',&
00072 & rg(ex_nrg), ' ex_radius=rg(ex_nrg)'
00073
00074 do irg=ex_nrg+1,(ex_nrg+ex_ndis-1)
00075 write(1,'(a4,i3,a2,1p,e20.12,a5,a3,i3,a2,1p,e20.12)') 'drg(',irg,')=',drg(irg),' ','rg(',irg,')=',rg(irg)
00076 end do
00077
00078 irg=ex_nrg+ex_ndis
00079
00080 write(1,'(a4,i3,a2,1p,e20.12,a5,a3,i3,a2,1p,e20.12,a24)') 'drg(',irg,')=',drg(irg),' ','rg(',irg,')=',rg(irg) &
00081 & , ' rg(ex_nrg+ex_ndis)=dis'
00082
00083 do irg=(ex_nrg+ex_ndis+1),nrg
00084 write(1,'(a4,i3,a2,1p,e20.12,a5,a3,i3,a2,1p,e20.12)') 'drg(',irg,')=',drg(irg),' ','rg(',irg,')=',rg(irg)
00085 end do
00086
00087 close(1)
00088
00089 end subroutine IO_printout_grid_data
00090 end module grid_parameter_binary_excision