aboutsummaryrefslogtreecommitdiffstats
path: root/fg21sim/configs/20-extragalactic.conf.spec
blob: a6f5eb73d515b0bc200e9ba79b8e9ba7e734ffd4 (plain)
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
# Configurations for "fg21sim"
# -*- mode: conf -*-
#
# Syntax: `ConfigObj`, https://github.com/DiffSK/configobj
#
# This file contains the options corresponding the extragalactic emission
# components, which currently includes the following components:
# - clusters: halos
# - pointsources


[extragalactic]

  # Press-Schechter formalism to determine the dark matter halos
  # distribution with respect to masses and redshifts, from which
  # to further determine the total number of halos within a sky
  # patch and to sample the masses and redshifts for each halo.
  # NOTE: only consider the *dark matter* mass within the halo!
  [[psformalism]]
  # The model of the fitting function for halo mass distribution
  # For all models and more details:
  # https://hmf.readthedocs.io/en/latest/_autosummary/hmf.fitting_functions.html
  model = option("smt", "jenkins", "ps", default="smt")

  # The minimum (inclusive) and maximum (exclusive!) halo mass (dark
  # matter only) within which to calculate the halo mass distribution.
  # Unit: [Msun]
  M_min = float(default=1e12, min=1e10, max=1e14)
  M_max = float(default=1e16, min=1e14, max=1e18)
  # The logarithmic (base 10) step size for the halo masses; therefore
  # the number of intervals is: (log10(M_max) - log10(M_min)) / M_step
  M_step = float(default=0.01, min=0.001, max=0.1)

  # The minimum and maximum redshift within which to calculate the
  # halo mass distribution; as well as the step size.
  z_min = float(default=0.01, min=0.001, max=1.0)
  z_max = float(default=4.0, min=1.0, max=100)
  z_step = float(default=0.01, min=0.001, max=1.0)

  # Output file (NumPy ".npz" format) to save the calculated halo mass
  # distributions at every redshift.
  #
  # This file packs the following 3 NumPy arrays:
  # * ``dndlnm``:
  #   Shape: (len(z), len(mass))
  #   Differential mass function in terms of natural log of M.
  #   Unit: [Mpc^-3] (the little "h" is folded into the values)
  # * ``z``:
  #   Redshifts where the halo mass distribution is calculated.
  # * ``mass``:
  #   (Logarithmic-distributed) masses points.
  #   Unit: [Msun] (the little "h" is folded into the values)
  dndlnm_outfile = string(default=None)

  # Extended emissions from the clusters of galaxies
  # The configurations in this ``[[clusters]]`` section may also be
  # used by the following ``[[halos]]`` section.
  [[clusters]]
  # Output CSV file of the clusters catalog containing the simulated
  # mass, redshift, position, shape, and the recent major merger info.
  catalog_outfile = string(default=None)

  # Whether to directly use the (previously simulated) catalog file
  # specified as the above "catalog_outfile" option?
  # NOTE:
  # By using an existing catalog, the steps to derive these data are
  # simply skipped.
  # Due to the small number density of the galaxy clusters, the simulated
  # results within a small patch of sky (e.g., 100 [deg^2]) show
  # significant fluctuations (several or even several tens of times
  # of differences between simulations).  Therefore, one may run many
  # tests and only create images at some frequencies necessary for
  # testing, then select the satisfying one to continue the simulation
  # to generate images at all frequencies.
  use_output_catalog = boolean(default=False)

  # Output CSV file of the halos catalog containing the calculated
  # properties of the simulated halos.
  halos_catalog_outfile = string(default=None)

  # Whether to dump the whole data of the simulated halos in Python
  # native pickle format (i.e., ".pkl") to a file with the same basename
  # as the above ``halos_catalog_outfile``?
  # The dumped data also includes the derived electron spectrum for
  # each halo, therefore this file can be reloaded back in order to
  # calculate the emissions at other frequencies.
  dump_halos_data = boolean(default=True)

  # Whether to directly use the (previously dumped) halos data (".pkl")
  # as specified by the above ``halos_catalog_outfile`` and
  # ``dump_halos_data`` options?
  # In this way, the radio emissions at additional frequencies can be
  # easily (and consistently) calculated.
  use_dump_halos_data = boolean(default=False)

  # The minimum mass for clusters when to determine the galaxy clusters
  # total counts and their distributions.
  # Unit: [Msun]
  mass_min = float(default=1e14, min=1e12)

  # Boost the number of expected cluster number within the sky coverage
  # by the specified times.
  # (NOTE: mainly for testing purpose.)
  boost = float(default=1.0, min=0.1, max=1e4)

  # Minimum mass change of the main cluster to be regarded as a merger
  # event instead of an accretion event.
  # Unit: [Msun]
  merger_mass_min = float(default=1e12, min=1e10, max=1e14)

  # The merger timescale, which roughly describes the duration of the
  # merger-induced disturbance (~2-3 Gyr).  This timescale is much longer
  # the merger crossing time (~1 Gyr), and is also longer than the lifetime
  # of radio halos.
  # Unit: [Gyr]
  tau_merger = float(default=2.0, min=1.0, max=5.0)

  # Mass ratio of the main and sub clusters, below which is regarded as
  # a major merger event.
  ratio_major = float(default=3.0, min=1.0, max=10.0)

  # Whether to use the maximum merger event (i.e., biggest mass of the
  # sub cluster) within the above ``tau_merger`` timescale to simulate the
  # subsequent radio halo simulation?  Otherwise only the most recent major
  # merger event will be used.
  use_max_merger = boolean(default=False)

  # The fraction of the magnetic field energy density w.r.t. the ICM
  # thermal energy density, which is used to determine the mean magnetic
  # field strength within the ICM and is also assumed to be uniform.
  eta_b = float(default=0.001, min=1e-5, max=0.1)

  # The temperature of the outer gas surrounding the cluster.  Accretion
  # shocks form near the cluster virial radius during the cluster formation,
  # which can heat the cluster ICM to have a higher temperature than the
  # virial temperature:
  #     kT_icm ~ kT_vir + 1.5 * kT_out
  # Reference: Fujita et al. 2003, ApJ, 584, 190; Eq.(49)
  # Unit: [keV]
  kT_out = float(default=0.5, min=0, max=1)

  # Filename prefix for this component
  prefix = string(default="cluster")
  # Output directory to save the simulated results
  output_dir = string(default=None)


  # Giant radio halos for clusters with recent major mergers
  [[halos]]
  # The turbulence is generally injected at the cluster center during
  # a merger.  This option parameterize the turbulence injection scale
  # to be a fraction of the virial radius of the (main) cluster.
  f_lturb = float(default=0.5, min=0.1, max=1.0)

  # The custom option to tune the turbulent acceleration timescale, which
  # controls the relativistic particle acceleration efficiencies.
  f_acc = float(default=1.5, min=0.1, max=10)

  # The fraction of cluster thermal energy originating from turbulent
  # dissipation, which describes the turbulence intensity in the ICM,
  # and determines its Mach number.
  eta_turb = float(default=0.2, min=0.1, max=1.0)

  # Ratio of the total energy injected into cosmic-ray electrons during
  # the cluster life to its total thermal energy.
  eta_e = float(default=0.003, min=0.001, max=0.1)

  # Electron injection, which is assumed to have a constant injection
  # rate and a power-law spectrum.
  injection_index = float(default=2.4, min=2.1, max=3.5)

  # Minimum and maximum Lorentz factor (i.e., energy) of the relativistic
  # electron spectrum.
  gamma_min = float(default=1)
  gamma_max = float(default=1e5)
  # Number of cells on the logarithmic momentum grid used to solve the
  # Fokker-Planck equation.
  gamma_np = integer(default=200, min=100)

  # Number of cells used as the buffer regions near both the lower
  # and upper boundaries, within which the values will be replaced by
  # extrapolating from the inner-region data, in order to avoid the
  # unphysical particle pile-ups.
  # It is suggested to be about 5%-10% of the above ``gamma_np``.
  # NOTE: * set to 0 to disable boundary fixes;
  #       * otherwise, set to a number >= 2.
  buffer_np = integer(default=10, min=0)

  # Time step for solving the Fokker-Planck equation
  # Unit: [Gyr]
  time_step = float(default=0.01, min=1e-4, max=0.1)

  # How long the period before the merger begins, which is used to derive
  # an approximately steady initial electron spectrum.  During this period,
  # the acceleration is turned off and only leaves energy loss mechanisms.
  # Unit: [Gyr]
  time_init = float(default=0.6, min=0)


  # Extragalactic point sources
  [[pointsources]]
  # Output directory to save the simulated catalog
  output_dir = string(default="PS_tables")
  # PS components to be simulated
  pscomponents = string_list(default=list())
  # Resolution [arcmin]
  resolution = float(default=0.6, min=0.0)

    [[[starforming]]]
    # Number of samples
    numps = integer(default=1000)
    # Prefix
    prefix = string(default="SF")

    [[[starbursting]]]
    # Number of samples
    numps = integer(default=1000)
    # Prefix
    prefix = string(default="SB")

    [[[radioquiet]]]
    # Number of samples
    numps = integer(default=1000)
    # Prefix
    prefix = string(default="RQ")

    [[[FRI]]]
    # Number of samples
    numps = integer(default=1000)
    # Prefix
    prefix = string(default="FRI")

    [[[FRII]]]
    # Number of samples
    numps = integer(default=1000)
    # Prefix
    prefix = string(default="FRII")