...  ...  @@ 24,8 +24,9 @@ Table of contents 


Basic operation mode



============================






The default running mode (without any of the flags active) is 3d with 6 particle types;



type 0 is always gas; types >0 are only gravitationally interacting.



The default running mode (without any of the flags active) is 3d with



6 particle types; type 0 is always gas; types >0 are only



gravitationally interacting.









**NTYPES=6**

...  ...  @@ 36,15 +37,15 @@ The number of particle types used. Minimum: 2. 





**TWODIMS**






Simulation in 2d. Z coordinates and velocities are set to zero after reading



in initial conditions.



Simulation in 2d. Z coordinates and velocities are set to zero after



reading in initial conditions.













**ONEDIMS**






Simulation in 1d. Y and Z coordinates and velocities are set to zero after



reading in initial conditions.



Simulation in 1d. Y and Z coordinates and velocities are set to zero



after reading in initial conditions.











...  ...  @@ 58,17 +59,17 @@ The first dimension is used as the radial coordinate. 


Computational box



================================






The default running mode (without any of the flags active) is a cubic box with



periodic boundary conditions



The default running mode (without any of the flags active) is a cubic



box with periodic boundary conditions






**LONG_X=10.0**






These options can be used to distort the simulation cube along the



given direction with the given factor into a parallelepiped of arbitrary aspect



ratio. The box size in the given direction increases from the value in the



parameter file by the factor given (e.g. if ``Boxsize`` is set to 100 and ``LONG_X=4``



is set the simulation domain extends from 0 to 400 along X and from 0 to 100



along Y and Z.)



These options can be used to distort the simulation cube along the



given direction with the given factor into a parallelepiped of



arbitrary aspect ratio. The box size in the given direction increases



by the factor given (e.g. if ``Boxsize`` is set to 100 and



``LONG_X=4`` is set the simulation domain extends from 0 to 400 along



X and from 0 to 100 along Y and Z.)











...  ...  @@ 86,19 +87,22 @@ Stretches the z extent of the computational box by a given factor. 





**REFLECTIVE_X=1**






Boundary conditions in x direction. 1: Reflective, 2: Inflow/Outflow; not set: periodic



Boundary conditions in the x direction. 1: Reflective, 2:



Inflow/Outflow; not set: periodic













**REFLECTIVE_Y=1**






Boundary conditions in y direction. 1: Reflective, 2: Inflow/Outflow; not set: periodic



Boundary conditions in y direction. 1: Reflective, 2: Inflow/Outflow;



not set: periodic













**REFLECTIVE_Z=1**






Boundary conditions in z direction. 1: Reflective, 2: Inflow/Outflow; not set: periodic



Boundary conditions in z direction. 1: Reflective, 2: Inflow/Outflow;



not set: periodic











...  ...  @@ 109,8 +113,8 @@ The default mode is: ``GAMMA=5/3`` ideal hydrodynamics 





**NOHYDRO**






No hydrodynamics calculation. Note that simply not including any type 0



particles has the same effect.



No hydrodynamics calculation. Note that simply not including any type



0 particles has the same effect.











...  ...  @@ 134,19 +138,19 @@ Number of passive scalar fields advected with fluid (default: 0). 





**NO_SCALAR_GRADIENTS**






Disables time and spatial extrapolation for passive scalar fields. Use only if



you know why you are doing this.



Disables time and spatial extrapolation for passive scalar fields. Use



only if you know why you are doing this.













Magnetohydrodynamics



====================






By default, code only computes hydrodynamics. Note that for comparison of



MHD and hydrodynamics runs, it is sometimes useful to keep the MHD settings



active and to initialize the magnetic field to zero everywhere. The equations



of ideal MHD ensure that the magnetic field stays exactly zero throughout



the calculation.



By default, code only computes hydrodynamics. Note that for comparison



of MHD and hydrodynamical runs, it is sometimes useful to keep the MHD



settings active and to initialize the magnetic field to zero



everywhere. The equations of ideal MHD ensure that the magnetic field



stays exactly zero throughout the calculation.






**MHD**




...  ...  @@ 168,15 +172,17 @@ Additional timestep constraint due to Powell cleaning scheme. 





**MHD_SEEDFIELD**






Uniform magnetic seed field of specified orientation and strength set up after reading in IC.



Uniform magnetic seed field of specified orientation and strength set



up after reading in IC.













Riemann solver



==============






By default, an iterative, exact (hydrodynamics) Riemann solver is used. If one of the



flags below is active, this is changed. Only one Riemann solver can be active.



By default, an iterative, exact (hydrodynamics) Riemann solver is



used. If one of the flags below is active, this is changed. Only one



Riemann solver can be active.






**RIEMANN_HLLC**




...  ...  @@ 197,34 +203,35 @@ The default mode is a moving mesh. 





**VORONOI_STATIC_MESH**






Assumes the mesh to be static, i.e. to not change with time. The vertex



velocities of all meshgenerating points is set to zero and domain



decomposition is disabled.



Assumes the mesh to be static, i.e. to not change with time. The



vertex velocities of all meshgenerating points is set to zero and



domain decomposition is disabled.













**VORONOI_STATIC_MESH_DO_DOMAIN_DECOMPOSITION**






Enables domain decomposition together with ``VORONOI_STATIC_MESH`` (which is



otherwise then disabled), in case nongas particle types exist and the use of



domain decompositions is desired. Note that on one hand it may be advantageous



in case the nongas particles mix well or cluster strongly, but on the other



hand the mesh construction that follows the domain decomposition is slow for a



static mesh, so whether or not using this new flag is overall advantageous



depends on the problem.



Enables domain decomposition together with ``VORONOI_STATIC_MESH``



(which is otherwise then disabled), in case nongas particle types



exist and the use of domain decompositions is desired. Note that on



one hand it may be advantageous in case the nongas particles mix well



or cluster strongly, but on the other hand the mesh construction that



follows the domain decomposition is slow for a static mesh, so whether



or not using this new flag is overall advantageous depends on the



problem.













**REGULARIZE_MESH_CM_DRIFT**






Mesh regularization. Move mesh generating point towards center of mass to make



cells rounder.



Mesh regularization. Move mesh generating point towards center of mass



to make cells rounder.













**REGULARIZE_MESH_CM_DRIFT_USE_SOUNDSPEED**






Limits Mesh regularization speed by local sound speed.



Limits mesh regularization speed by local sound speed.











...  ...  @@ 237,8 +244,9 @@ Uses maximum face angle as roundness criterion in mesh regularization. 


Refinement



===========================






By default, there is no refinement and derefinement and unless set otherwise,



the criterion for refinement/derefinement is a target mass.



By default, there is no refinement and derefinement. But if enabled,



and unless set otherwise, the criterion for refinement/derefinement is



to maintain a cell target mass.






**REFINEMENT_SPLIT_CELLS**




...  ...  @@ 254,8 +262,8 @@ Allows derefinement. 





**REFINEMENT_VOLUME_LIMIT**






Limits the volume of cells and the maximum volume difference between



neighboring cels.



Limits the volume of cells and the maximum volume difference between



neighboring cells.











...  ...  @@ 267,32 +275,34 @@ Refinement criterion to ensure resolving the Jeans length of cells. 





**REFINEMENT_HIGH_RES_GAS**






Limits the dynamical (de)refinements of cells to cells which are either



already present in the ICs or are created with ``GENERATE_GAS_IN_ICS`` from



type 1 particles. This adds an additional integer quantity ``AllowRefinement``



to PartType0 in the snapshots indicating if a gas cell is allowed to be



refined and if it is, how often this cell has already been split: if 0, no



splitting allowed. If odd (starting at 1), the cell was already present in the



ICs. If even (starting at 2), the cell was generated from a type 1 particle.



For values of 3 or more, ``floor((AllowRefinement1)/2.0)`` gives the number



of times the cell was split.



Limits the dynamical (de)refinements of cells to cells which are



either already present in the ICs or are created with



``GENERATE_GAS_IN_ICS`` from type 1 particles. This adds an additional



integer quantity ``AllowRefinement`` to PartType0 in the snapshots



indicating if a gas cell is allowed to be refined and if it is, how



often this cell has already been split: if 0, no splitting allowed. If



odd (starting at 1), the cell was already present in the ICs. If even



(starting at 2), the cell was generated from a type 1 particle. For



values of 3 or more, ``floor((AllowRefinement1)/2.0)`` gives the



number of times the cell was split.













**NODEREFINE_BACKGROUND_GRID**






The background grid will be prevented from derefining, when refinement is



used. In practice, when enabled this option requires an input parameter



``MeanVolume``. Derefinement is then disallowed during the



run for all cells with ``Volume > 0.1 * MeanVolume``.



The background grid will be prevented from derefining, when refinement



is used. In practice, enabling this option requires an input parameter



``MeanVolume``. Derefinement is then disallowed during the run for all



cells with ``Volume > 0.1 * MeanVolume``.













**OPTIMIZE_MESH_MEMORY_FOR_REFINEMENT**






If activated some grid structures not needed for mesh refinement/derefinement



are freed before the function for refinement and derefinement is called. The



remaining mesh structures are freed after this step as usual.



If activated some grid structures not needed for mesh refinement or



derefinement are freed before the function for refinement and



derefinement is called. The remaining mesh structures are freed after



this step as usual.











...  ...  @@ 313,8 +323,8 @@ This imposes an adaptive floor for the temperature. 





**USE_SFR**






Star formation model, turning dense gas into collisionless particles. See



Springel&Hernquist, (2003, MNRAS, 339, 289)



Star formation model, turning dense gas into collisionless



particles. See Springel & Hernquist, (2003, MNRAS, 339, 289)











...  ...  @@ 327,11 +337,12 @@ Do not destroy cell out of which a star has formed. 


Gravity



=================






If nothing is active, no gravity included.



If nothing is actived in this section, gravity is not included.






**SELFGRAVITY**






Gravitational interaction between simulation particles/cells.



Computes gravitational interactions between simulation particles and



cells.











...  ...  @@ 343,8 +354,9 @@ Uses hierarchical splitting of the time integration of the gravity. 





**CELL_CENTER_GRAVITY**






Uses geometric centers (instead of meshgenerating points) to calculate



gravity of cells, only possible with ``HIERARCHICAL_GRAVITY``.



Uses geometric centers (instead of meshgenerating points) to



calculate gravity of cells, only possible with



``HIERARCHICAL_GRAVITY``.











...  ...  @@ 362,29 +374,31 @@ Gravity is not treated periodically. 





**ALLOW_DIRECT_SUMMATION**






Performs direct summation instead of treebased gravity if number of active



particles < ``DIRECT_SUMMATION_THRESHOLD`` (= 3000 unless specified differently)



Performs direct summation instead of treebased gravity if number of



active particles < ``DIRECT_SUMMATION_THRESHOLD`` (= 3000 unless



specified differently)













**DIRECT_SUMMATION_THRESHOLD=1000**






Overrides maximum number of active particles for which direct summation is



performed instead of tree based calculation.



Overrides maximum number of active particles for which direct



summation is performed instead of a tree based calculation.













**EXACT_GRAVITY_FOR_PARTICLE_TYPE=4**






Nsquared fashion gravity for a small number of particles of the given type.



Enables direct summation gravity calculation for the given particle



type.













**EVALPOTENTIAL**






When this option is set, the code will compute the gravitational potential



energy each time a global statistics is computed. This can be useful for



testing global energy conservation.



When this option is set, the code will compute the gravitational



potential energy each time a global statistics is computed. This can



be useful for testing global energy conservation.











...  ...  @@ 392,202 +406,217 @@ testing global energy conservation. 


TreePM



==============






If no switch is active: no ParticleMesh calculation.



If no option is actived here: no ParticleMesh calculation is done.






**PMGRID=512**






Dimension of particlemesh grid covering the domain.



This enables the TreePM method, i.e. the longrange force is computed with a



PMalgorithm, and the short range force with the tree. The parameter has to be



set to the size of the mesh that should be used, e.g. 256, 512, 1024 etc. The



mesh dimensions need not necessarily be a power of two, but the FFT is fastest



for such a choice. Note: If the simulation is not in a periodic box, then



a FFT method for vacuum boundaries is employed, using a mesh with dimension



twice that specified by ``PMGRID``. Should not be used with ``PMGRID<256``



because if this is active, the treeforce will be calculated assuming



nonperiodic boundary conditions. This approximation is only valid if the



range of the tree calculation is small compared to the box size.



Dimension of particlemesh grid covering the domain. This enables the



TreePM method, i.e. the longrange force is computed with a



PMalgorithm, and the short range force with the tree. The parameter



has to be set to the size of the mesh that should be used, e.g. 256,



512, 1024 etc. The mesh dimensions need not necessarily be a power of



two, but the FFT is fastest for such a choice. Note: If the



simulation is not in a periodic box, then a FFT method for vacuum



boundaries is employed, using a mesh with dimension twice that



specified by ``PMGRID``. Should not be used with a mesh much smaller



than 256, because the TreePM approximation is only valid if the range



of the tree calculation is small compared to the box size.













**ASMTH=1.25**






This factor expressed the adopted force split scale in the TreePM approach in



units of the grid cell size. Setting this value overrides the default value of



1.25, in meshcells, which defines the longrange/shortrange force split.



This factor expressed the adopted force split scale in the TreePM



approach in units of the grid cell size. Setting this value overrides



the default value of 1.25, in meshcells, which defines the



longrange/shortrange force split.













**RCUT=6.0**






This determines the maximum radius, in units of the force split scale, out to



which the tree calculation in TreePM mode considers tree nodes. If a tree node



is more distant, the corresponding branch is discarded. The default value is



This determines the maximum radius, in units of the force split scale,



out to which the tree calculation in TreePM mode considers tree



nodes. If a tree node is more distant, the corresponding branch is



discarded. The default value is



4.5, given in meshcells.













**PM_ZOOM_OPTIMIZED**






This option enables a different communication algorithm in the PM calculations



which works well independent of the data layout, in particular it can cope



well with highly clustered particle distributions that occupy only a small



subset of the total simulated volume. However, this method is a bit slower



than the default approach (used when the option is disabled), which is best



matched for homogeneously sampled periodic boxes.



This option enables a different communication algorithm in the PM



calculations which works well independent of the data layout, in



particular it can cope well with highly clustered particle



distributions that occupy only a small subset of the total simulated



volume. However, this method is a bit slower than the default approach



(used when the option is disabled), which is best matched for



homogeneously sampled periodic boxes.













**PLACEHIGHRESREGION=2**






If this option is set (will only work together with ``PMGRID``), then the long



range force is computed in two stages: One Fouriergrid is used to cover the



whole simulation volume, allowing the computation of the largescale force.



A second Fourier mesh is placed on the region occupied by "highresolution"



particles, allowing the computation of an intermediatescale force. Finally,



the force on very small scales is computed by the tree. This procedure can be



useful for "zoomsimulations", where the majority of particles (the highres



particles) are occupying only a small fraction of the volume. To activate this



option, the parameter needs to be set to an integer that encodes the particle



types that make up the highres particles in the form of a bit mask. For



example, if types 0, 1, and 4 are the highres particles, then the parameter



should be set to ``PLACEHIGHRESREGION=1+2+16``, i.e. to the



sum 2^0+2^1+2^4. The spatial region covered by the highres grid is



determined automatically from the initial conditions. The region is



recalculated if one of the selected particles is falling outside of the



highresolution region. Note: If a periodic box is used, the highres zone is



not allowed to intersect the box boundaries.



If this option is set (will only work together with ``PMGRID``), then



the long range force is computed in two stages: One Fouriergrid is



used to cover the whole simulation volume, allowing the computation of



the largescale force. A second Fourier mesh is placed on the region



occupied by "highresolution" particles, allowing the computation of



an intermediatescale force. Finally, the force on very small scales



is computed by the tree. This procedure can be useful for



"zoomsimulations", where the majority of particles (the highres



particles) are occupying only a small fraction of the volume. To



activate this option, the parameter needs to be set to an integer that



encodes the particle type(s) that make up the highres particles in



the form of a bit mask. For example, if types 0, 1, and 4 are the



highres particles, then the parameter should be set to



``PLACEHIGHRESREGION=1+2+16``, i.e. to the sum 2^0 + 2^1 + 2^4. The



spatial region covered by the highres grid is determined



automatically from the initial conditions. The region is recalculated



if one of the selected particles is falling outside of the



highresolution region. Note: If a periodic box is used, the highres



zone is not allowed to intersect the box boundaries.













**ENLARGEREGION=1.1**






This is only relevant when ``PLACEHIGHRESREGION`` is activated. The size of



the high resolution box will be automatically determined as the minimum size



required to contain the selected particle type(s), in a "shrinkwrap" fashion.



This region is be expanded on the fly, as needed. However, in order to prevent



a situation where this size needs to be enlarged frequently, such as when the



particle set is (slowly) expanding, the minimum size is multiplied by the



factor ``ENLARGEREGION`` (if defined). Then even if the set is expanding, this



will only rarely trigger a recalculation of the high resolution mesh geometry,



which is in general also associated with a change of the force split scale.



This is only relevant when ``PLACEHIGHRESREGION`` is activated. The



size of the high resolution box will be automatically determined as



the minimum size required to contain the selected particle type(s), in



a "shrinkwrap" fashion. This region is expanded on the fly, if



needed (see above). However, in order to prevent a situation where



this size needs to be enlarged frequently, such as when the particle



set is (slowly) expanding, the minimum size is multiplied by the



factor ``ENLARGEREGION`` (if defined). Then even if the set is



expanding, this will only rarely trigger a recalculation of the high



resolution mesh geometry, which is in general also associated with a



change of the force split scale.













**GRIDBOOST=2**






Normally, if ``PLACEHIGHRESREGION`` is enabled, the code will try to offer an



effective grid size for the highresolution patch that is equivalent to



``PMGRID``. Because zeropadding has to be used for the highres inset, this



gives a total mesh twice as large, which corresponds to ``GRIDBOOST=2``. This



value can here be increased by hand, to e.g. 4 or 8, to increase the



resolution of the highres PM grid. The total mesh size used for the



highresolution FFTs is given by ``GRIDBOOST*PMGRID``.



Normally, if ``PLACEHIGHRESREGION`` is enabled, the code will try to



employ an effective grid size for the highresolution patch that is



equivalent to ``PMGRID``. Because zeropadding has to be used for the



highres inset, this gives a total mesh twice as large, which



corresponds to ``GRIDBOOST=2``. This value can here be modified by



hand, to e.g. 1, 3, 4, etc., to decrease or increase the size of



the highres PM grid relative to that covering the full box. The total



mesh size used for the highresolution FFTs is given by



``GRIDBOOST*PMGRID``.
















**FFT_COLUMN_BASED**






When this is enabled, the FFT calculations are not parallelized in terms of a



slabdecomposition but rather through a column based approach. This scales to



larger number of MPI ranks but is slower in absolute terms as twice as many



transpose operations need to be performed. It is hence only worthwhile to use



this option for very large number of MPI ranks that exceed the 1D mesh



dimension.



When this is enabled, the FFT calculations are not parallelized in



terms of a slabdecomposition but rather through a column based



approach. This scales to larger number of MPI ranks but is slower in



absolute terms as twice as many transpose operations need to be



performed. It is hence only worthwhile to use this option for a very



large number of MPI ranks that exceeds the 1D mesh dimension.













Gravity softening



=================






In the default configuration, the code uses a small table of possible



gravitational softening lengths, which are specified in the parameter file



through the ``SofteningComovingTypeX`` and ``SofteningMaxPhysTypeX`` options,



where X is an integer that gives the "softening type". Each particle type is



mapped to one of these softening types through the



``SofteningTypeOfPartTypeY`` parameters, where ``Y`` gives the particle type.



The number of particle types and the number of softening types do not



necessarily have to be equal. Several particle types can be mapped to the same



softening if desired.



In the default configuration, the code uses a small table of possible



gravitational softening lengths, which are specified in the parameter



file through the ``SofteningComovingTypeX`` and



``SofteningMaxPhysTypeX`` options, where X is an integer that gives



the "softening type". Each particle type is mapped to one of these



softening types through the ``SofteningTypeOfPartTypeY`` parameters,



where ``Y`` gives the particle type. The number of particle types and



the number of softening types do not necessarily have to be



equal. Several particle types can be mapped to the same softening if



desired.






**NSOFTTYPES=4**






This can be changed to modify the number of available softening types. These



must be explicitly input as SofteningComovingTypeX parameters, and so the



value of ``NSOFTTYPES`` must match the number of these entries in the



parameter file.



This can be changed to modify the number of available softening



types. These must be explicitly input as SofteningComovingTypeX



parameters, and so the value of ``NSOFTTYPES`` must match the number



of these entries in the parameter file.













**MULTIPLE_NODE_SOFTENING**






If the tree walk wants to use a 'softened node' (i.e. where the maximum



gravitational softening of some particles in the node is larger than the node



distance and larger than the target particle's softening), the node is opened



by default (because there could be mass components with a still smaller



softening hidden in the node). This can cause a substantial performance penalty



in some cases. By setting this option, this can be avoided. The code will then



be allowed to use softened nodes, but it does that by evaluating the



nodeparticle interaction for each mass component with different softening



type separately (but by neglecting possible shifts in their centers of masses).



This also requires that each tree node computes and stores a vector with these



different masses. It is therefore desirable to not make the table of softening



types excessively large. This option can be combined with adaptive hydro



softening. In this case, particle type 0 needs to be mapped to softening type



0 in the parameter file, and no other particle type may be mapped to softening



type 0 (the code will issue an error message if one doesn't obey to this).



If the tree walk wants to use a 'softened node' (i.e. where the



maximum gravitational softening of some particles in the node is



larger than the node distance and larger than the target particle's



softening), the node is opened by default (because there could be mass



components with a still smaller softening hidden in the node). This



can cause a substantial performance penalty in some cases. By setting



this option, this can be avoided. The code will then be allowed to use



softened nodes, but it does that by evaluating the nodeparticle



interaction for each mass component with different softening type



separately (but by neglecting possible shifts in their centers of



masses). This also requires that each tree node computes and stores a



vector with these different masses. It is therefore desirable to not



make the table of softening types excessively large. This option can



be combined with adaptive hydro softening. In this case, particle type



0 needs to be mapped to softening type 0 in the parameter file, and no



other particle type may be mapped to softening type 0 (the code will



issue an error message if one doesn't obey to this).













**INDIVIDUAL_GRAVITY_SOFTENING=2+4**






The code can also be asked to set the softening types of some of the particle



types automatically based on particle mass. The particle types to which this



is applied are set by this compile time option through a bitmask encoding the



types. The code by default assumes that the softening of particle type 1



should be the reference. To this end, the code determines the average mass of



type 1 particles, and the types selected through this option then compute a



desired softening length by scaling the type1 softening with the cube root of



the mass ratio. Then, the softening type that is closest to this desired



softening is assigned to the particle (*choosing only from those softening



values explicitly input as a SofteningComovingTypeX parameter*). This option



is primarily useful for zoom simulations, where one may for example lump all



boundary dark matter particles together into type 2 or 3, but yet provide a



set of softening types over which they are automatically distributed according



to their mass. If both ``ADAPTIVE_HYDRO_SOFTENING`` and



``MULTIPLE_NODE_SOFTENING`` are set, the softening types considered for



assignment exclude softening type 0. Note: particles that accrete matter



(black holes or sinks) get their softening updated if needed.



The code can also be asked to set the softening types of some of the



particle types automatically based on particle mass. The particle



types to which this is applied are set by this compile time option



through a bitmask encoding the types. The code by default assumes that



the softening of particle type 1 should be the reference. To this end,



the code determines the average mass of type 1 particles, and the



types selected through this option then compute a desired softening



length by scaling the type1 softening with the cube root of the mass



ratio. Then, the softening type that is closest to this desired



softening is assigned to the particle (*choosing only from those



softening values explicitly input as a SofteningComovingTypeX



parameter*). This option is primarily useful for zoom simulations,



where one may for example lump all boundary dark matter particles



together into type 2 or 3, but yet provide a set of softening types



over which they are automatically distributed according to their



mass. If both ``ADAPTIVE_HYDRO_SOFTENING`` and



``MULTIPLE_NODE_SOFTENING`` are set, the softening types considered



for assignment exclude softening type 0. Note: particles that accrete



matter (black holes or sinks) get their softening updated if needed.













**ADAPTIVE_HYDRO_SOFTENING**






When this is enabled, the gravitational softening lengths of hydro cells are



varied according to their radius. To this end, the radius of a cell is



multiplied by the parameter ``GasSoftFactor``. Then, the closest softening



from a logarithmically spaced table of possible softenings is adopted for the



cell. The minimum softening in the table is specified by the parameter



``MinimumComovingHydroSoftening``, and the larger ones are spaced a factor



``AdaptiveHydroSofteningSpacing`` apart. The resulting minimum and maximum



softening values are reported in the stdout log file.



When this is enabled, the gravitational softening lengths of hydro



cells are varied along with their radius. To this end, the radius of a



cell is multiplied by the parameter ``GasSoftFactor``. Then, the



closest softening from a logarithmically spaced table of possible



softenings is adopted for the cell. The minimum softening in the table



is specified by the parameter ``MinimumComovingHydroSoftening``, and



the larger ones are spaced a factor ``AdaptiveHydroSofteningSpacing``



apart. The resulting minimum and maximum softening values are reported



in the stdout log file.













**NSOFTTYPES_HYDRO=64**






This is only relevant if ``ADAPTIVE_HYDRO_SOFTENING`` is enabled and can be



set to override the default value of 64 for the length of the logarithmically



spaced softening table. The sum of ``NSOFTTYPES`` and ``NSOFTTYPES_HYDRO`` may



not exceed 254 (this is checked).



This is only relevant if ``ADAPTIVE_HYDRO_SOFTENING`` is enabled and



can be set to override the default value of 64 for the length of the



logarithmically spaced softening table. The sum of ``NSOFTTYPES`` and



``NSOFTTYPES_HYDRO`` may not exceed 254 (this is checked).













External gravity



================






By default, there is no external potential.



By default, there is no external gravitational potential.






**EXTERNALGRAVITY**




...  ...  @@ 597,7 +626,7 @@ Master switch for external potential. 





**EXTERNALGY=0.0**






Constant external gravity in y direction



Constant external gravity in the ydirection











...  ...  @@ 630,8 +659,9 @@ Softening of NFW potential. 





**NFW_DARKFRACTION=0.87**






Fraction in dark matter in NFW potential. Potential will be reduced by this



factor.



Fraction of dark matter in NFW potential. The potential will be



reduced by this factor (with the idea being that the complement is



respresented by gas mass included explicitly in the simulation).











...  ...  @@ 664,8 +694,8 @@ Softening of isothermal sphere potential. 





**ISO_FRACTION=0.9**






Fraction in dark matter in isothermal sphere potential. Potential will be



reduced by this factor.



Fraction in dark matter in isothermal sphere potential. Potential will



be reduced by this factor.











...  ...  @@ 692,8 +722,8 @@ Concentration parameter of Hernquist potential. 





**HQ_DARKFRACTION=0.9**






Fraction in dark matter in Hernquist potential. Potential will be reduced by



this factor.



Fraction in dark matter in Hernquist potential. Potential will be



reduced by this factor.











...  ...  @@ 702,13 +732,16 @@ Time integration 





**FORCE_EQUAL_TIMESTEPS**






Variable but global timestep.



Variable but global timestep. Here the tightest timestep criterion



evaluated for any of the particles determines the timestep of all



particles.













**TREE_BASED_TIMESTEPS**






Nonlocal timestep criterion (take 'signal speed' into account).



Nonlocal timestep criterion (which takes the 'signal speed' of



hydrodynamical waves arriving from any point into account).











...  ...  @@ 726,7 +759,8 @@ PM force is not included in shortrange timestep criterion. 





**ENLARGE_DYNAMIC_RANGE_IN_TIME**






This extends the dynamic range of the integer timeline from 32 to 64 bit



This extends the dynamic range of the integer timeline from 32 to 64



bits.











...  ...  @@ 750,8 +784,9 @@ Single/Double Precision 





**DOUBLEPRECISION=1**






Mode of double precision: not set: single; 1: full double precision



2: mixed, 3: mixed, fewer single precisions; unless short of memory, use 1.



Mode of numerical precision: not set: single; 1: full double precision



2: mixed, 3: mixed, fewer single precisions; unless extremely short of



memory, we recommend to always use 1.











...  ...  @@ 781,7 +816,9 @@ Will always output coordinates in double precision. 





**NGB_TREE_DOUBLEPRECISION**






If this is enabled, double precision is used for the neighbor node extension.



If this is enabled, double precision is aslo used for storing the



spatial neighbor node extension (the precision requirements for this



are less demanding than for other quantities).











...  ...  @@ 790,70 +827,68 @@ Groupfinder 





**FOF**






Master switch to enable the friendsoffriends group finder code. This will



then usually be applied automatically before snapshot files are written



(unless disabled selectively for certain output dumps).



Master switch to enable the friendsoffriends group finder in the



code. This will then usually be applied automatically before snapshot



files are written (unless disabled selectively for certain output



dumps).













**FOF_PRIMARY_LINK_TYPES=2**






This option selects the particle types that are processed by the



friendsoffriends linking algorithm. A default linking length of 0.2 is



assumed for this particle type unless specified otherwise.



Sum(2^type) for the primary dark matter type.



This option selects the particle types that are processed by the



friendsoffriends linking algorithm. A default linking length of 0.2



is assumed for this particle type unless specified otherwise. The



specified value corresponds to Sum(2^type) for the primary dark matter



type(s).













**FOF_SECONDARY_LINK_TYPES=1+16+32**






With this option, FOF groups can be augmented by particles/cells of other



particle types that they "enclose". To this end, for each particle among the



types selected by the bit mask specified with ``FOF_SECONDARY_LINK_TYPES``, the



nearest among ``FOF_PRIMARY_LINK_TYPES`` is found and then the particle is



attached to whatever group this particle is in. sum(2^type) for the types



linked to nearest primaries.



With this option, FOF groups can be augmented by particles/cells of



other particle types that they "enclose". To this end, for each



particle among the types selected by the bit mask specified with



``FOF_SECONDARY_LINK_TYPES``, the nearest among



``FOF_PRIMARY_LINK_TYPES`` is found and then the particle is attached



to whatever group this particle is in. The specified values



corresponds to sum(2^type) for the types linked to nearest primaries.













**FOF_SECONDARY_LINK_TARGET_TYPES= 2**






An option to make the secondary linking work better in zoom runs (after the



FOF groups have been found, the tree is newly constructed for all the



secondary link targets). This should normally be set to all dark matter



particle types. If not set, it defaults to ``FOF_PRIMARY_LINK_TYPES``, which



reproduces the old behavior.



An option to make the secondary linking work better in zoom runs



(after the FOF groups have been found, the tree is newly constructed



for all the secondary link targets). This should normally be set to



all dark matter particle types. If not set, it defaults to



``FOF_PRIMARY_LINK_TYPES``, which reproduces the old behavior.













**FOF_GROUP_MIN_LEN=32**






Minimum number of particles (primary+secondary) in one group (default is 32).



Minimum number of particles (primary+secondary) in one group (default



is 32).













**FOF_LINKLENGTH=0.16**






Linking length for FoF in units of the mean interparticle separation.



(default=0.2)













**FOF_FUZZ_SORT_BY_NEAREST_GROUP=0**






Sort fuzz particles by nearest group and generate offset table in catalog



(=1 writes nearest group number to snapshot).



Linking length for FoF in units of the mean interparticle separation



(default=0.2).













**FOF_STOREIDS**






Normally, the snapshots produced with a FOF group catalogue are stored in



group order, such that the particle set making up a group can be inferred as a



contiguous block of particles in the snapshot file, making it redundant to



separately store the IDs of the particles making up a group in the group



catalogue. By activating this option, one can nevertheless force to create the



corresponding lists of IDs as part of the group catalogue output.



Normally, the snapshots produced with a FOF group catalogue are stored



in group order, such that the particle set making up a group can be



inferred as a contiguous block of particles in the snapshot file,



making it redundant to separately store the IDs of the particles



forming a group in the group catalogue. By activating this option, one



can nevertheless enforce the creation of the corresponding lists of



IDs as part of the group catalogue output.











...  ...  @@ 862,35 +897,39 @@ Subfind 





**SUBFIND**






When enabled, this automatically runs the Subfind analysis of all FOF groups



after they have been found. This snapshot files are brought into subhalo order



within each group.



When enabled, this automatically applies the Subfind subtructure



finder to all FOF groups after they have been found. Also, the



snapshot files are brought into subhalo order within each group.













**SAVE_HSML_IN_SNAPSHOT**






When activated, this will store the hsmlvalues used for estimating total



matter density around every point and the corresponding densities in the



snapshot files associated with a run of Subfind.



When activated, this will store the smoothing kernel lengths used for



estimating the total matter density around every point, and the



corresponding densities, in the snapshot files associated with a run



of Subfind.













**SUBFIND_CALC_MORE**






Additional calculations are carried out in the Subfind algorithm, which may be



expensive.



(i) The velocity dispersion in the local density estimate.



(ii) The DM density around every particle is stored in the snapshot if this is



set together with ``SAVE_HSML_IN_SNAPSHOT``.



Additional calculations are carried out in the Subfind algorithm,



which are not always needed.



(i) The velocity dispersion in the kernel volume used for estimating



the local density.



(ii) The DM density around every particle is stored in the snapshot if



this is set together with ``SAVE_HSML_IN_SNAPSHOT``.













**SUBFIND_EXTENDED_PROPERTIES**






Additional calculations are carried out, which may be expensive.



(i) Further quantities related to the angular momentum in different components.



(ii) The kinetic, thermal and potential binding energies for spherical



Additional calculations are carried out in the Subfind algorithm,



which are not always needed and may be expensive.



(i) Further quantities related to the angular momentum in different



components.



(ii) The kinetic, thermal and potential binding energies for spherical



overdensity halos.







...  ...  @@ 901,58 +940,72 @@ Special behavior 





**RUNNING_SAFETY_FILE**






If file './running' exists, do not start the run.



If file './running' exists, do not start the run. Can be used to



prevent that a simulation is executed twice at the same time.













**MULTIPLE_RESTARTS**






Keep restart files instead of just last two copies.



Keep several restart files instead of just last two copies.













**EXTENDED_GHOST_SEARCH**






This extends the ghost search to the full 3x3 domain instead of the principal



domain.



This extends the ghost search to the full 3x3 domain instead of the



principal domain. This can be needed for a successful mesh



construction if the box is sampled only with a couple of cells per



dimension.













**DOUBLE_STENCIL**






This will ensure that the boundary region of the local mesh is deep enough to



have a valid double stencil for all local cells.



This will ensure that the boundary region of the local mesh is deep



enough to have a valid double stencil for all local cells. This is not



needed for the default algorithms but can be useful for code



extensions.













**TETRA_INDEX_IN_FACE**






Adds an index to each entry of VF[] and DC[] to one of the tetrahedra that



share this edge.



Adds an extra index to each entry of VF[] and DC[] to one of the



tetrahedra that share this edge. This may be useful for code



extensions.













**NOSTOP_WHEN_BELOW_MINTIMESTEP**






Simulation does not terminate when timestep drops below minimum timestep.



Simulation does not terminate when timestep drops below the specified



minimum timestep size, instead it continues with this timestep



floor.













**TIMESTEP_OUTPUT_LIMIT**






Limits timesteps to write snaps on time for frequent outputs.



Limits timesteps such that the requested output times are honored even



if their spacing is finer than the smallest timestep the code makes,



i.e. the code uses the output spacing as an additional timestep



criterion.













**ALLOWEXTRAPARAMS**






Tolerate extra parameters that are not used.



Tolerate extra parameters in the parameter file that are not



used. Normally, the code aborts with a complaint if such parameters



are encountered.













**FIX_SPH_PARTICLES_AT_IDENTICAL_COORDINATES**






This can be used to load SPH ICs that contain identical particle coordinates.



This can be used to load SPH ICs that contain particles at identical



coordinates.











...  ...  @@ 965,34 +1018,35 @@ values for a snapshot. 





**ACTIVATE_MINIMUM_OPENING_ANGLE**






This does not open tree nodes under the relative opening criterion any more



if their opening angle has dropped below a minimum angle.



This does not open tree nodes under the relative opening criterion any



more if their opening angle has dropped below a minimum angle.













**USE_DIRECT_IO_FOR_RESTARTS**






Try to use O_DIRECT for lowlevel read/write operations of restart files to



circumvent the linux kernel page caching.



Try to use O_DIRECT for lowlevel read/write operations of restart



files to circumvent linux kernel page caching.













**HUGEPAGES**






Use huge pages for memory allocation, through hugetlbfs library.



Use huge pages for memory allocation, through hugetlbfs library. Only



possible if the machine supports this.













**DETAILEDTIMINGS**






Creates individual timings entries for primary/secondary kernels to diagnose



workload balancing.



Creates individual timing entries for primary/secondary kernels to



help in diagnosing workload balancing.













**BITS_PER_DIMENSION=42**






Bits per dimension used in PeanoHilbert key. (default: 42)



Bits per dimension used for computing PeanoHilbert keys. (default: 42)











...  ...  @@ 1020,9 +1074,9 @@ Read coordinates in double precision. 





**LONGIDS**






If this is set, the code assumes that particleIDs are stored as 64bit long



integers. This is only really needed if you want to go beyond ~2 billion



particles.



If this is set, the code stores particleIDs as 64bit long



integers. This is only really needed if you want to go beyond ~2



billion particles.











...  ...  @@ 1067,7 +1121,8 @@ Special input options 





**IDS_OFFSET=1**






Override offset for gas particles if created from DM.



Override offset for gas cell IDs if created from dark matter



particles.











...  ...  @@ 1091,13 +1146,13 @@ Default output fields are: ``position``, ``velocity``, ``ID``, ``mass``, 





**OUTPUT_TASK**






Output of MPI task.



Output of MPI rank on which a certainl cell or particle resides.













**OUTPUT_TIMEBIN_HYDRO**






Output of hydrodynamics timebin.



Output of hydrodynamical timebin.











...  ...  @@ 1133,20 +1188,21 @@ Output of maximum face angle of cells. 





**OUTPUT_VERTEX_VELOCITY**






Output of velocity of meshgenerating point.



Output of velocity of meshgenerating points.













**OUTPUT_VOLUME**






Output of volume of cells; note that this can always be computed as both, density



and mass of cells are by default in output.



Output of volume of cells; note that this can always be computed from density



and mass of cells, which are included by default in the output.













**OUTPUT_CENTER_OF_MASS**






Output of center of mass of cells (``Pos`` is position of meshgenerating point).



Output of center of mass of cells (``Pos`` is the position of the



meshgenerating point).











...  ...  @@ 1164,10 +1220,10 @@ Output of pressure of gas. 





**OUTPUTPOTENTIAL**






This will force the code to compute gravitational potentials for all particles



each time a snapshot file is generated. These values are then included in the



snapshot files. Note that the computation of the values of the potential costs



additional time.



This will force the code to compute gravitational potential values for



all particles and cells each time a snapshot file is generated. These



values are then included in the snapshot files. Note that the



computation of the values of the potential costs additional time.











...  ...  @@ 1191,7 +1247,9 @@ Output of particle softenings. 





**OUTPUTGRAVINTERACTIONS**






Output of gravitational interactions (from the gravitational tree) of particles.



Output of gravitational interaction count (from the gravitational



tree) of particles, which is used in the workload balancing



algorithm.











...  ...  @@ 1227,7 +1285,7 @@ Output of vorticity of gas. 





**OUTPUT_CSND**






Output of sound speed. This field is only used for treebased timesteps!



Output of sound speed. This field is only used for treebased timesteps.



Calculate from hydro quantities in postprocessing if required for science



applications.




...  ...  @@ 1238,24 +1296,25 @@ Output options 





**PROCESS_TIMES_OF_OUTPUTLIST**






Goes through times of output list prior to starting the simulation to ensure



that outputs are written as close to the desired time as possible (as opposed



to at next possible time if this flag is not active).



Goes through times of output list prior to starting the simulation to



ensure that outputs are written as close to the desired time as



possible (i.e. also up to half a timestep size before it, as opposed



to always after at the next possible time if this flag is not active).













**REDUCE_FLUSH**






If enabled files and stdout are only flushed after a certain time defined in



the parameter file (standard behavior: everything is flushed most times



something is written to it).



If enabled, files and stdout are only flushed after a certain time



defined in the parameter file (standard behavior: everything is



flushed whenever something is written to it).













**OUTPUT_EVERY_STEP**






Create snapshot on every (global) synchronization point, independent of



parameters chosen or output list.



parameters chosen or output list.











...  ...  @@ 1267,10 +1326,10 @@ Output of a cpu.csv file on top of cpu.txt. 





**HAVE_HDF5**






If this is set, the code will be compiled with support for input and output in



the HDF5 format. You need to have the HDF5 libraries and headers installed on



your computer for this option to work. The HDF5 format can then be selected as



format "3" in Arepo's parameterfile.



If this is set, the code will be compiled with support for input and



output in the HDF5 format. You need to have the HDF5 libraries and



headers installed on your computer for this option to work. The HDF5



format can then be selected as format "3" in Arepo's parameterfile.











...  ...  @@ 1282,9 +1341,9 @@ Activate snapshot compression and checksum for HDF5 output. 





**OUTPUT_XDMF**






Writes an ``.xmf`` file for each snapshot, which can be read by visit



(with the hdf5 snapshot). Note: so far only working if the snapshot



is stored in one file.



Writes an ``.xmf`` file for each snapshot, which can be read by the



visualization toolkit Visit (with the hdf5 snapshot). Note: so far



only working if the snapshot is stored in one file.











...  ...  @@ 1306,8 +1365,8 @@ Reports readjustments of buffer sizes. 


Regridding



============================






These options are auxiliary modes to prepare/convert/relax initial conditions



and will not carry out a simulation.



These options are auxiliary modes to prepare/convert/relax initial



conditions and will not carry out a simulation.






**MESHRELAX**




...  ...  @@ 1317,6 +1376,7 @@ This keeps the mass constant and only regularizes the mesh. 





**ADDBACKGROUNDGRID=16**






Regrid hydrodynamics quantities on a Octtree AMR grid. This does not perform



a simulation. This "converts" an SPH initial condition into a (moving) mesh



initial condition. 


Regrid hydrodynamical quantities on an octtree AMR grid. This does



not perform a simulation. This "converts" an SPH initial condition



into a (moving) mesh initial condition.



