Physics
The ‘physics’ parameter category contains parameters specifying various physical models and schemes to be used.
select_forces
Description |
Specifies which forces to enable |
||
Default |
{} # no forces enabled
|
||
Elaboration |
This is a
component selection
{force: method}
specifying which forces/interactions affect the given
component, as well as what method/implementation to use
for the given forces. Currently, the only forces in
CONCEPT are
For details on these methods, consult the paper on
‘The cosmological simulation code CO𝘕CEPT 1.0’.
As {
'particles': {
'gravity': 'p3m',
},
'fluid': {
'gravity': 'pm',
},
}
so that particle components will participate in the gravitational interaction using P³M, while fluid components will participate in the gravitational interaction using PM. Note All interactions for fluid components may only ever use the PM method Note With the gravitational force specified for particle and fluid components as above, gravity will really be applied to such components in the following manner:
Besides P³M being split up into a long-range and a short-range part, we see that the interactions between particle and fluid components make use of PM, even though PM is only selected for the fluid components. For more information on these
mesh-based methods, see the |
||
Example 0 |
Explicitly specify the component with a name/species of
select_forces = {
'matter': {
'gravity': 'p3m',
},
}
As P³M is the default gravitational method, we can shorten this to select_forces = {
'matter': 'gravity',
}
As mentioned above, this can be shortened further by
simply removing any mention of |
||
Example 1 |
Explicitly specify the component with a name/species of
select_forces = {
'matter': {
'gravity': 'pm',
},
}
|
select_species
Description |
Specifies the species of components read in from snapshots |
||
Default |
{
'default': 'matter',
}
|
||
Elaboration |
This is a
component selection
Note Though a species is explicitly defined for each
component within a |
||
Example 0 |
Explicitly map the GADGET particle type 1 ( select_species = {
'GADGET halo': 'matter',
}
Note The name |
||
Example 1 |
Map the GADGET particle type 2 ( select_species = {
'GADGET disk': 'neutrino',
'all' : 'matter',
}
|
realization_options
Description |
Specifies how to realise different components |
||
Default |
{
'gauge': {
'default': 'N-body',
},
'back-scale': {
'default': False,
},
'LPT': {
'default': 1,
},
'dealias': {
'default': False,
},
'non-Gaussianity': {
'default': 0.0,
},
'structure': {
'default': 'non-linear',
},
'compound': {
'default': 'linear',
},
}
|
||
Elaboration |
This is a Each sub-parameter is described below:
|
||
Example 0 |
Do all realisations in synchronous gauge. Also, use
back-scaling when realising components with a
name/species of realization_options = {
'gauge': {
'all': 'synchronous',
},
'back-scaling': {
'matter': True,
},
}
Note When using back-scaling, the \(\delta\) transfer function is used not only for the particle positions but also for the velocities. This is crucial when using the synchronous gauge, as the velocity transfer function in this gauge is not well suited for \(N\)-body initial conditions. |
||
Example 1 |
Make use of second-order Lagrangian perturbation theory (2LPT) when realising particle components: realization_options = {
'LPT': {
'particles': 2,
},
}
As the realization_options = {
'LPT': {
'all': 2,
},
}
which can be more succinctly expressed as realization_options = {
'LPT': 2,
}
|
||
Example 2 |
Make use of dealiased third-order Lagrangian perturbation theory (3LPT) when realising particle components: realization_options = {
'LPT': 3,
'dealias': True,
}
This is the most expensive but also most accurate particle realisation scheme implemented. |
||
Example 3 |
Always perform realisations using the primordial noise as the underlying source of structure, regardless of the time of realisation: realization_options = {
'structure': {
'all': 'primordial',
},
}
|
select_lives
Description |
Specifies life spans of components |
||
Default |
{
'default': (0, ထ),
}
|
||
Elaboration |
This is a
component selection
(a_activate, a_terminate)
specifying the values of the scale factor \(a\) at which components should be activated and terminated, respectively. Prior to its activation time, a given component will not take part in the simulation. At the activation time, it will then be realised and included in the simulation. At termination time, the component will be removed from the simulation, and it cannot be reintroduced. The default specifications of this parameter ensures that — by default — all components are active from the beginning to the end of the simulation. |
||
Example 0 |
Let the component with the name select_lives = {
'linear neutrino': (0, 0.1),
'non-linear neutrino': (0.1, ထ),
}
Assuming the two components both represent the
|
softening_kernel
Description |
The kernel to use for particle softening |
||
Default |
'spline'
|
||
Elaboration |
For direct particle-particle forces (PP gravity, short-range P³M gravity), the force needs to be softened at short distances in order to avoid numerical problems with insufficient time resolution for two-body encounters. See the paper on ‘The cosmological simulation code CO𝘕CEPT 1.0’ for details. This parameter sets the type of softening to use for all such forces and components. All softening kernels may be described as a transformation on \(|\boldsymbol{x}|^{-3}\) in the force
\[\boldsymbol{f} \propto |\boldsymbol{x}|^{-3}\boldsymbol{x}\, .\]
The implemented softening kernels are:
|
||
Example 0 |
Use simple Plummer softening: softening_kernel = 'plummer'
|
select_softening_length
Description |
Specifies particle softening lengths |
||
Default |
{
'default': '0.025*boxsize/cbrt(N)',
}
|
||
Elaboration |
Direct particle-particle forces are softened according
to the chosen
softening kernel. Regardless
of the chosen kernel, the associated length scale is
expressed in terms of the “Plummer-equivalent” softening
length \(\epsilon\). This parameter is a
component selection
The default value sets \(\epsilon\) to be
\(2.5\,\%\) of the mean inter-particle distance,
within each particle component separately. Here Note The specified softening lengths are always comoving |
||
Example 0 |
Use a softening length of \(10\,\mathrm{kpc}/h\) for all components: select_softening_length = {
'all': 10*kpc/h,
}
|
||
Example 1 |
Use a softening length of \(1/10\,000\) of the box
size for the component with a name/species of
select_softening_length = {
'cold dark matter': boxsize/10_000,
'all' : '0.02*boxsize/cbrt(N)',
}
Note Parameters like |