-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsettings.py
41 lines (33 loc) · 1.26 KB
/
settings.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
"""
Default settings and initial parameters
All the values set here can be overwritten via a config input file: settings.yml
"""
default = {
'imf': "kroupa", # Initial mass function
'binary_star_rates': 0.40, # Fraction of binary systems
'dtd_sn': "rlp",
'integrator': {
'initial_time_Gyr': 0.0,
'final_time_Gyr': 13.7,
'relative_accuracy': 1e-6,
'minimum_timestep_Gyr': 1e-6
},
'phases': {},
'processes': {}
}
valid_values = {
'imf': ['salpeter', 'starburst', 'chabrier', 'ferrini', 'kroupa', 'miller_scalo', 'maschberger'],
'dtd_sn': ['rlp', 'mdvp'], # rlp = Ruiz-Lapuente, mdvp = Mannucci, Della Valle, Panagia (2006)
}
def validate(params):
for key, value in default.items():
if isinstance(value,dict) and key in params:
params[key] = {**value, **params[key]}
params = {**default, **params}
for param in valid_values.keys():
if params[param] not in valid_values[param]:
print(f'Provided value for {param} is incorrect.')
print(f' Valid values for {param} are: {valid_values[param]}')
print(f' Using default value: {default[param]}')
params[param] = default[param]
return params