DISPATCH
amr_parameters.f90
1 module amr_parameters
2 
3  ! Define real types
4  integer,parameter::sp=kind(1.0e0)
5 #ifndef NPRE
6  integer,parameter::dp=kind(1.0e0) ! default
7 #else
8 #if NPRE==4
9  integer,parameter::dp=kind(1.0e0) ! real*4
10 #else
11  integer,parameter::dp=kind(1.0d0) ! real*8
12 #endif
13 #endif
14 #ifdef QUADHILBERT
15  integer,parameter::qdp=kind(1.0_16) ! real*16
16 #else
17  integer,parameter::qdp=kind(1.0_8) ! real*8
18 #endif
19  integer,parameter::maxout=100
20  integer,parameter::maxlevel=100
21  integer,parameter::mid=120
22 
23  ! Number of dimensions
24 #ifndef NDIM
25  integer,parameter::ndim=1
26 #else
27  integer,parameter::ndim=ndim
28 #endif
29  integer,parameter::twotondim=2**ndim
30  integer,parameter::threetondim=3**ndim
31  integer,parameter::twondim=2*ndim
32 
33  ! Vectorization parameter
34 #ifndef NVECTOR
35  integer,parameter::nvector=500 ! Size of vector sweeps
36 #else
37  integer,parameter::nvector=nvector
38 #endif
39 
40  integer, parameter :: nstride = 65536
41 
42  ! Run control
43  logical::hydro =.false. ! Hydro activated
44  logical::pic =.false. ! Particle In Cell activated
45  logical::poisson =.false. ! Poisson solver activated
46  logical::cosmo =.false. ! Cosmology activated
47  logical::star =.false. ! Star formation activated
48  logical::sink =.false. ! Sink particles activated
49  logical::debug =.false. ! Debug mode activated
50  logical::static =.false. ! Static mode activated
51  logical::tracer =.false. ! Tracer particles activated
52  logical::lightcone=.false. ! Enable lightcone generation
53  logical::clumpfind=.false. ! Enable clump finder
54  logical::aton=.false. ! Enable ATON coarse grid radiation transfer
55  logical::do_benchmark=.false. ! Disable IO for benchmarking runs
56  logical::do_particle_dump=.false. ! Start run and immedeately dump particles snapshot
57  logical::swap_domains=.false. ! If overload>1 swap domain to optimize load
58  logical::chemistry=.false. ! Is RAMSES coupled with an external chemistry solver ? (e.g. KROME)
59 
60  ! Mesh parameters
61  integer::evenout=0 ! Even out load on all levels (1)
62  integer::geom=1 ! 1: cartesian, 2: cylindrical, 3: spherical
63  integer::nx=1,ny=1,nz=1 ! Number of coarse cells in each dimension
64  integer::levelmin=1 ! Full refinement up to levelmin
65  integer::nlevelmax=1 ! Maximum number of level
66  integer::ngridmax=0 ! Maximum number of grids
67  integer,dimension(1:MAXLEVEL)::nexpand=1 ! Number of mesh expansion
68  integer::nexpand_bound=1 ! Number of mesh expansion for virtual boundaries
69  real(dp)::boxlen=1.0d0 ! Box length along x direction
70  character(len=128)::ordering='hilbert'
71  logical::cost_weighting=.true. ! Activate load balancing according to cpu time
72  integer::load_weighting=0 ! 0: subcycle product, 1: max grids, 2: level time
73  ! Recursive bisection tree parameters
74  integer::nbilevelmax=1 ! Max steps of bisection partitioning
75  integer::nbinodes=3 ! Max number of internal nodes
76  integer::nbileafnodes=2 ! Max number of leaf (terminal) nodes
77  real(dp)::bisec_tol=0.05d0 ! Tolerance for bisection load balancing
78  logical::subcycle_extrap=.false.
79  integer::a_verbose=0
80 
81  ! Step parameters
82  integer::nudge_bound_keys=0 ! Legacy load_balance
83  integer::nrestart=0 ! New run or backup file number
84  integer::nstepmax=1000000 ! Maximum number of time steps
85  integer::ncontrol=1 ! Write control variables
86  integer::fbackup=1000000 ! Backup data to disk
87  integer::nremap=0 ! Load balancing frequency (0: never)
88  integer::real_size=0 ! input/output real size
89  real(kind=dp)::fremap=0.0 ! fractional unbalance that triggers load balance
90  real,dimension(MAXLEVEL)::level_load=1.0 ! relative load for each level
91 
92  ! Output parameters
93  integer::iout=0 ! Increment for output times
94  integer::ifout=1 ! Increment for output files
95  integer::iback=1 ! Increment for backup files
96  integer::noutput=1 ! Total number of outputs
97  integer::foutput=1000000 ! Frequency of outputs
98  integer::fscratch=1000000 ! Frequency of scratch outputs
99  integer::output_mode=0 ! Output mode (for hires runs)
100  integer::trace_level=0 ! controls output from trace_mpi() calls
101  character(len=80)::datadir='.' ! data directory for output
102  integer::timer_type=0 ! type of timer measurement
103  integer::debug_level=0 ! debug verbosity
104 
105  ! Lightcone parameters
106  real(dp)::thetay_cone=12.5
107  real(dp)::thetaz_cone=12.5
108  real(dp)::zmax_cone=2.0
109 
110  ! Cosmology and physical parameters
111  real(dp)::boxlen_ini ! Box size in h-1 Mpc
112  real(dp)::omega_b=0.0d0 ! Omega Baryon
113  real(dp)::omega_m=1.0d0 ! Omega Matter
114  real(dp)::omega_l=0.0d0 ! Omega Lambda
115  real(dp)::omega_k=0.0d0 ! Omega Curvature
116  real(dp)::h0 =1.0d0 ! Hubble constant in km/s/Mpc
117  real(dp)::aexp =1.0d0 ! Current expansion factor
118  real(dp)::hexp =0.0d0 ! Current Hubble parameter
119  real(dp)::n_sink =1d30 ! Sink particle density threshold in H/cc
120  real(dp)::m_star =-1.0 ! Star particle mass in units of mass_sph
121  real(dp)::n_star =0.1d0 ! Star formation density threshold in H/cc
122  real(dp)::t_star =0.0d0 ! Star formation time scale in Gyr
123  real(dp)::eps_star=0.0d0 ! Star formation efficiency (0.02 at n_star=0.1 gives t_star=8 Gyr)
124  real(dp)::jeans_ncells=-1 ! Jeans polytropic EOS
125  real(dp)::t2_star=0.0d0 ! Typical ISM polytropic temperature
126  real(dp)::g_star =1.6d0 ! Typical ISM polytropic index
127  real(dp)::baro_exp=2.0d0 ! Barotropic exponent
128  real(dp)::baro_c=4.0d0 ! Barotropic coefficient
129  real(dp)::del_star=2.d2 ! Minimum overdensity to define ISM
130  real(dp)::eta_sn =0.0d0 ! Supernova mass fraction
131  real(dp)::yield =0.0d0 ! Supernova yield
132  real(dp)::f_ek =1.0d0 ! Supernovae kinetic energy fraction (only between 0 and 1)
133  real(dp)::rbubble=0.0d0 ! Supernovae superbubble radius in pc
134  real(dp)::f_w =0.0d0 ! Supernovae mass loading factor
135  integer ::ndebris=1 ! Supernovae debris particle number
136  real(dp)::mass_gmc=-1.0 ! Stochastic exploding GMC mass
137  real(dp)::z_ave =0.0d0 ! Average metal abundance
138  real(dp)::b_ave =0.0d0 ! Average magnetic field
139  real(dp)::z_reion=8.5d0 ! Reionization redshift
140  real(dp)::t2_start ! Starting gas temperature
141  real(dp)::t_delay=1.0d1 ! Feedback time delay in Myr
142  real(dp)::j21 =0.0d0 ! UV flux at threshold in 10^21 units
143  real(dp)::a_spec =1.0d0 ! Slope of the UV spectrum
144  real(dp)::beta_fix=0.0d0 ! Pressure fix parameter
145  real(dp)::rsink_max=10 ! Sink isolation criterion in kpc
146  real(dp)::msink_max=1d5 ! Maximum seed mass in solar masses
147  real(dp)::entropy_elimit=1. ! ratio below which entropy_fix is active
148  integer ::n_entropy(2)=0 ! number of test
149  logical ::self_shielding=.false.
150  logical ::pressure_fix=.false.
151  logical ::entropy_fix=.false.
152  real(dp)::temp_iso = 1.0_dp ! Temperature in case of isothermal
153  logical ::nordlund_fix=.true.
154  logical ::cooling=.false.
155  logical ::metal=.false.
156  logical ::bondi=.true. ! Activate Bondi accretion onto sink particle
157  logical ::haardt_madau=.false.
158  logical ::delayed_cooling=.false.
159  logical ::smbh=.false.
160  logical ::agn=.false.
161 
162  ! Output times
163  real(dp),dimension(1:MAXOUT)::aout=1.1 ! Output expansion factors
164  real(dp),dimension(1:MAXOUT)::tout=0.0 ! Output times
165  real(kind=8)::delta_tout=0,tend=100,delta_tscr=0
166  real(kind=8)::delta_aout=0,aend=100
167  real(dp)::tout_iout=0.0 ! Output time
168  real(dp)::aout_iout=0.0 ! Output time
169 
170  ! Refinement parameters for each level
171  real(dp),dimension(1:MAXLEVEL)::m_refine =-1.0 ! Lagrangian threshold
172  real(dp),dimension(1:MAXLEVEL)::r_refine =-1.0 ! Radius of refinement region
173  real(dp),dimension(1:MAXLEVEL)::x_refine = 0.0 ! Center of refinement region
174  real(dp),dimension(1:MAXLEVEL)::y_refine = 0.0 ! Center of refinement region
175  real(dp),dimension(1:MAXLEVEL)::z_refine = 0.0 ! Center of refinement region
176  real(dp),dimension(1:MAXLEVEL)::exp_refine = 2.0 ! Exponent for distance
177  real(dp),dimension(1:MAXLEVEL)::a_refine = 1.0 ! Ellipticity (Y/X)
178  real(dp),dimension(1:MAXLEVEL)::b_refine = 1.0 ! Ellipticity (Z/X)
179  real(dp)::var_cut_refine=-1.0 ! Threshold for variable-based refinement
180  real(dp)::mass_cut_refine=-1.0 ! Mass threshold for particle-based refinement
181  real(dp)::subcycle_factor=0.9 ! Controls automatic subcycle adjustment; set to 0.0 for no subcycling, 1.0 for optimum
182  integer::ivar_refine=-1 ! Variable index for refinement
183 
184  ! Initial condition files for each level
185  logical::multiple=.false.
186  integer,parameter::maxregion=100
187 #ifdef __GFORTRAN__
188  character(LEN=80),dimension(1:MAXREGION)::initfile
189 #else
190  character(LEN=80),allocatable,dimension(:)::initfile
191 #endif
192  character(LEN=20)::filetype='ascii'
193 
194  ! Initial condition regions parameters
195  integer ::nregion=0
196  character(LEN=10),dimension(1:MAXREGION)::region_type='square'
197  real(dp),dimension(1:MAXREGION) ::x_center=0.
198  real(dp),dimension(1:MAXREGION) ::y_center=0.
199  real(dp),dimension(1:MAXREGION) ::z_center=0.
200  real(dp),dimension(1:MAXREGION) ::length_x=1.e10
201  real(dp),dimension(1:MAXREGION) ::length_y=1.e10
202  real(dp),dimension(1:MAXREGION) ::length_z=1.e10
203  real(dp),dimension(1:MAXREGION) ::exp_region=2.0
204  real(dp),dimension(1:MAXREGION) ::rotation_z=0.0 ! rotation about the z-axis
205 
206  ! Boundary conditions parameters
207  integer,parameter::maxbound=100
208  logical ::simple_boundary=.false.
209  integer ::nboundary=0
210  integer ::icoarse_min=0
211  integer ::icoarse_max=0
212  integer ::jcoarse_min=0
213  integer ::jcoarse_max=0
214  integer ::kcoarse_min=0
215  integer ::kcoarse_max=0
216  integer ,dimension(1:MAXBOUND) ::boundary_type=0
217  integer ,dimension(1:MAXBOUND) ::ibound_min=0
218  integer ,dimension(1:MAXBOUND) ::ibound_max=0
219  integer ,dimension(1:MAXBOUND) ::jbound_min=0
220  integer ,dimension(1:MAXBOUND) ::jbound_max=0
221  integer ,dimension(1:MAXBOUND) ::kbound_min=0
222  integer ,dimension(1:MAXBOUND) ::kbound_max=0
223 
224  ! logical unit numbers
225  integer :: tmp_unit=60, courant_unit=61, bitwise_unit=62, dt_unit=63, header_unit=64
226 
227  ! Miscellaneous parameters
228  character(len=72) :: hl="------------------------------------------------------------------------"
229  character(LEN=80)::infile
230 end module amr_parameters