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 end subroutine IO_printout_grid_data
00089
00090 subroutine IO_printout_grid_data_mpt(impt)
00091 use grid_parameter
00092 use coordinate_grav_r
00093 use coordinate_grav_theta
00094 use coordinate_grav_phi
00095 use def_binary_parameter
00096 implicit none
00097 integer :: irg, impt
00098 character(len=1) :: np(5) = (/'1', '2', '3', '4', '5'/)
00099
00100 open(1,file='grid_data_mpt'//np(impt)//'.dat',status='unknown')
00101 if(impt==1 .or. impt==2) then
00102 write(1,'(a4,i3,a10,1p,e20.12)') 'ntg=', ntg, ' dthg=', dthg
00103 write(1,'(a4,i3,a10,1p,e20.12)') 'npg=', npg, ' dphg=', dphig
00104 write(1,'(a100)') ' ex_radius< dis< ex_rgin< sepa< ex_rgout'
00105 write(1,'(1p,6e20.12)') ex_radius,dis,ex_rgin,sepa,ex_rgout
00106 write(1,'(a35,e20.12)') " sin(half angle of excised sphere)=", ex_radius/sepa
00107 write(1,'(a35,2p,e20.12,a9)') "...or half angle of excised sphere=", DASIN(ex_radius/sepa)*180.0d0/pi, " degrees"
00108 write(1,*) " "
00109 write(1,*) " "
00110 write(1,*) 'REGION S ----------------------------------------------------------------'
00111 write(1,'(a41,1p,e20.12)') 'nrf interval : drg(nrf ) =', drg(nrf)
00112 write(1,*) " "
00113 write(1,*) 'REGION I ----------------------------------------------------------------'
00114 write(1,'(a41,1p,e20.12)') 'nrf+1 interval : drg(nrf+1) =', drg(nrf+1)
00115 write(1,'(a41,1p,e20.12)') 'nrf+2 interval : drg(nrf+2) =', drg(nrf+2)
00116 write(1,*) '........................................................'
00117 write(1,'(a41,1p,e20.12)') 'nrg_1-1 interval : drg(nrg_1-1) =', drg(nrg_1-1)
00118 write(1,'(a41,1p,e20.12)') 'nrg_1 interval : drg(nrg_1 ) =', drg(nrg_1)
00119 write(1,*) " "
00120 write(1,*) 'REGION II----------------------------------------------------------------'
00121 write(1,'(a41,1p,e20.12)') 'nrg_1+1 interval : drg(nrg_1+1) =', drg(nrg_1+1)
00122 write(1,*) '........................................................'
00123 write(1,'(a41,1p,e20.12)') 'nrgin interval : drg(nrgin) =', drg(nrgin)
00124 write(1,*) 'REGION III----------------------------------------------------------------'
00125 write(1,'(a41,1p,e20.12)') 'nrgin+1 interval : drg(nrgin+1) =', drg(nrgin+1)
00126 write(1,'(a41,1p,e20.12)') 'nrgin+2 interval : drg(nrgin+2) =', drg(nrgin+2)
00127 write(1,*) '........................................................'
00128 write(1,'(a41,1p,e20.12)') 'nrgin+nrf-1 interval : drg(nrgin+nrf-1)=', drg(nrgin+nrf-1)
00129 write(1,'(a41,1p,e20.12)') 'nrgin+nrf interval : drg(nrgin+nrf )=', drg(nrgin+nrf)
00130 write(1,*) " "
00131 write(1,*) 'REGION IV ----------------------------------------------------------------'
00132 write(1,'(a41,1p,e20.12)') 'nrgin+nrf+1 interval : drg(nrgin+nrf+1)=', drg(nrgin+nrf+1)
00133 write(1,'(a41,1p,e20.12)') 'nrgin+nrf+2 interval : drg(nrgin+nrf+2)=', drg(nrgin+nrf+2)
00134 write(1,*) '........................................................'
00135 write(1,'(a41,1p,e20.12)') 'nrg-1 interval : drg(nrg-1) =', drg(nrg-1)
00136 write(1,'(a41,1p,e20.12)') 'nrg interval : drg(nrg) =', drg(nrg)
00137 write(1,*) "--------------------------------------------------------------------------"
00138
00139 write(1,'(a37,i3,a2,1p,e20.12)') '..................................rg(',0,')=', rg(0)
00140
00141 do irg=1,ex_nrg-1
00142 write(1,'(a4,i3,a2,1p,e20.12,a5,a3,i3,a2,1p,e20.12)') 'drg(',irg,')=',drg(irg),' ','rg(',irg,')=',rg(irg)
00143 end do
00144
00145 write(1,'(a4,i3,a2,1p,e20.12,a5,a3,i3,a2,1p,e20.12,a24)') 'drg(',ex_nrg,')=',drg(ex_nrg),' ','rg(',irg,')=',&
00146 & rg(ex_nrg), ' ex_radius=rg(ex_nrg)'
00147
00148 do irg=ex_nrg+1,(ex_nrg+ex_ndis-1)
00149 write(1,'(a4,i3,a2,1p,e20.12,a5,a3,i3,a2,1p,e20.12)') 'drg(',irg,')=',drg(irg),' ','rg(',irg,')=',rg(irg)
00150 end do
00151
00152 irg=ex_nrg+ex_ndis
00153
00154 write(1,'(a4,i3,a2,1p,e20.12,a5,a3,i3,a2,1p,e20.12,a24)') 'drg(',irg,')=',drg(irg),' ','rg(',irg,')=',rg(irg) &
00155 & , ' rg(ex_nrg+ex_ndis)=dis'
00156
00157 do irg=(ex_nrg+ex_ndis+1),nrg
00158 write(1,'(a4,i3,a2,1p,e20.12,a5,a3,i3,a2,1p,e20.12)') 'drg(',irg,')=',drg(irg),' ','rg(',irg,')=',rg(irg)
00159 end do
00160 else
00161 write(1,'(a4,i3,a10,1p,e20.12)') 'ntg=', ntg, ' dthg=', dthg
00162 write(1,'(a4,i3,a10,1p,e20.12)') 'npg=', npg, ' dphg=', dphig
00163 write(1,'(a100)') ' ex_radius< dis< ex_rgin< sepa< ex_rgout'
00164 write(1,'(1p,6e20.12)') ex_radius,dis,ex_rgin,sepa,ex_rgout
00165
00166 write(1,'(i5,1p,3e20.12)') 0, rg(0)
00167 do irg=1,nrg
00168 write(1,'(i5,1p,3e20.12)') irg, rg(irg), drg(irg), drg(irg)*drginv(irg)
00169 end do
00170 end if
00171 close(1)
00172
00173 end subroutine IO_printout_grid_data_mpt
00174
00175 end module grid_parameter_binary_excision