Commit b1f3f617 authored by Rainer Weinberger's avatar Rainer Weinberger

Arepo source code

parent 06181e37
This diff is collapsed.
# AREPO Makefile
#
# If you add a new system below, also add that systype to Template-Makefile.systype
EXEC = Arepo
LIBRARY = arepo
CONFIG = Config.sh
BUILD_DIR = build
SRC_DIR = src
###################
#determine SYSTYPE#
###################
ifdef SYSTYPE
SYSTYPE := "$(SYSTYPE)"
-include Makefile.systype
else
include Makefile.systype
endif
MAKEFILES = Makefile config-makefile
ifeq ($(wildcard Makefile.systype), Makefile.systype)
MAKEFILES += Makefile.systype
endif
$(info Build configuration:)
$(info SYSTYPE: $(SYSTYPE))
$(info CONFIG: $(CONFIG))
$(info EXEC: $(EXEC))
$(info )
PYTHON = python
PERL = /usr/bin/perl
RESULT := $(shell CONFIG=$(CONFIG) PERL=$(PERL) BUILD_DIR=$(BUILD_DIR) make -f config-makefile)
CONFIGVARS := $(shell cat $(BUILD_DIR)/arepoconfig.h)
RESULT := $(shell SRC_DIR=$(SRC_DIR) BUILD_DIR=$(BUILD_DIR) ./git_version.sh)
MPICHLIB = -lmpich
GMPLIB = -lgmp
GSLLIB = -lgsl -lgslcblas
MATHLIB = -lm -lstdc++
HWLOC_LIB = -lhwloc
# e.g. Mac OS using MacPorts modules for openmpi, fftw, gsl, hdf5 and hwloc
ifeq ($(SYSTYPE),"Darwin")
CC = mpicc # sets the C-compiler
OPTIMIZE = -std=c11 -ggdb -O3 -Wall -Wno-format-security -Wno-unknown-pragmas -Wno-unused-function
GSL_INCL = -I/opt/local/include
GSL_LIBS = -L/opt/local/lib
FFTW_INCL= -I/opt/local/include -I/usr/local/include
FFTW_LIBS= -L/opt/local/lib -I/usr/local/lib
HDF5INCL = -I/opt/local/include -DH5_USE_16_API
HDF5LIB = -L/opt/local/lib -lhdf5 -lz
HWLOC_INCL= -I/opt/local/include
HWLOC_LIB = -L/opt/local/lib -lhwloc
HYPRE_INCL =
HYPRE_LIB =
MPICHLIB = -lmpi
endif
# insert the library paths for your system here, similar to SYSTYPE "Darwin" above
ifndef LINKER
LINKER = $(CC)
endif
##########################################
#determine the needed object/header files#
##########################################
SUBDIRS = . \
debug_md5 \
domain \
gitversion \
gravity \
gravity/pm \
hydro \
init \
io \
main \
mesh \
mesh/voronoi \
mpi_utils \
ngbtree \
pm \
star_formation \
time_integration \
utils
OBJS = debug_md5/calc_checksum.o \
debug_md5/Md5.o \
domain/domain.o \
domain/domain_balance.o \
domain/domain_box.o \
domain/domain_counttogo.o \
domain/domain_DC_update.o \
domain/domain_exchange.o \
domain/domain_rearrange.o \
domain/domain_sort_kernels.o \
domain/domain_toplevel.o \
domain/domain_vars.o \
domain/peano.o \
gravity/accel.o \
gravity/forcetree.o \
gravity/forcetree_ewald.o \
gravity/forcetree_optimizebalance.o \
gravity/forcetree_walk.o \
gravity/grav_external.o \
gravity/grav_softening.o \
gravity/gravdirect.o \
gravity/gravtree.o \
gravity/gravtree_forcetest.o \
gravity/longrange.o \
gravity/pm/pm_periodic2d.o \
gravity/pm/pm_periodic.o \
gravity/pm/pm_mpi_fft.o \
gravity/pm/pm_nonperiodic.o \
hydro/finite_volume_solver.o \
hydro/gradients.o \
hydro/riemann.o \
hydro/riemann_hllc.o \
hydro/riemann_hlld.o \
hydro/scalars.o \
hydro/update_primitive_variables.o \
init/begrun.o \
init/density.o \
init/init.o \
io/global.o \
io/hdf5_util.o \
io/io.o \
io/io_fields.o \
io/logs.o \
io/parameters.o \
io/read_ic.o \
io/restart.o \
main/allvars.o \
main/main.o \
main/run.o \
mesh/criterion_derefinement.o \
mesh/criterion_refinement.o \
mesh/refinement.o \
mesh/set_vertex_velocities.o \
mesh/voronoi/voronoi.o \
mesh/voronoi/voronoi_1d.o \
mesh/voronoi/voronoi_1d_spherical.o \
mesh/voronoi/voronoi_3d.o \
mesh/voronoi/voronoi_check.o \
mesh/voronoi/voronoi_derefinement.o \
mesh/voronoi/voronoi_dynamic_update.o \
mesh/voronoi/voronoi_exchange.o \
mesh/voronoi/voronoi_ghost_search.o \
mesh/voronoi/voronoi_gradients_lsf.o \
mesh/voronoi/voronoi_gradients_onedims.o \
mesh/voronoi/voronoi_refinement.o \
mesh/voronoi/voronoi_utils.o \
mpi_utils/checksummed_sendrecv.o \
mpi_utils/hypercube_allgatherv.o \
mpi_utils/mpi_util.o \
mpi_utils/myalltoall.o \
mpi_utils/sizelimited_sendrecv.o \
mpi_utils/pinning.o \
ngbtree/ngbtree.o \
ngbtree/ngbtree_search.o \
ngbtree/ngbtree_walk.o \
star_formation/sfr_eEOS.o \
star_formation/starformation.o \
time_integration/darkenergy.o \
time_integration/do_gravity_hydro.o \
time_integration/driftfac.o \
time_integration/predict.o \
time_integration/timestep.o \
time_integration/timestep_treebased.o \
utils/allocate.o \
utils/debug.o \
utils/mpz_extension.o \
utils/mymalloc.o \
utils/parallel_sort.o \
utils/system.o
INCL += debug_md5/Md5.h \
domain/bsd_tree.h \
domain/domain.h \
gitversion/version.h\
gravity/forcetree.h \
main/allvars.h \
main/proto.h \
mesh/mesh.h \
mesh/voronoi/voronoi.h \
time_integration/timestep.h \
utils/dtypes.h \
utils/generic_comm_helpers2.h \
utils/timer.h
ifeq (TWODIMS,$(findstring TWODIMS,$(CONFIGVARS)))
OBJS += mesh/voronoi/voronoi_2d.o
endif
ifeq (MYIBARRIER,$(findstring MYIBARRIER,$(CONFIGVARS)))
OBJS += mpi_utils/myIBarrier.o
INCL += mpi_utils/myIBarrier.h
endif
ifeq (MHD,$(findstring MHD,$(CONFIGVARS)))
OBJS += hydro/mhd.o
endif
ifeq (ADDBACKGROUNDGRID,$(findstring ADDBACKGROUNDGRID,$(CONFIGVARS)))
OBJS += add_backgroundgrid/add_bggrid.o \
add_backgroundgrid/calc_weights.o \
add_backgroundgrid/distribute.o
INCL += add_backgroundgrid/add_bggrid.h
SUBDIRS += add_backgroundgrid
endif
ifeq (COOLING,$(findstring COOLING,$(CONFIGVARS)))
OBJS += cooling/cooling.o
INCL += cooling/cooling_vars.h \
cooling/cooling_proto.h
SUBDIRS += cooling
endif
ifeq (FOF,$(findstring FOF,$(CONFIGVARS)))
OBJS += fof/fof.o \
fof/fof_distribute.o \
fof/fof_findgroups.o \
fof/fof_fuzz.o \
fof/fof_io.o \
fof/fof_nearest.o \
fof/fof_sort_kernels.o \
fof/fof_vars.o
INCL += fof/fof.h
SUBDIRS += fof
endif
ifeq (SUBFIND,$(findstring SUBFIND,$(CONFIGVARS)))
OBJS += subfind/subfind.o \
subfind/subfind_vars.o \
subfind/subfind_serial.o \
subfind/subfind_coll_tree.o \
subfind/subfind_properties.o \
subfind/subfind_so.o \
subfind/subfind_distribute.o \
subfind/subfind_collective.o \
subfind/subfind_findlinkngb.o \
subfind/subfind_nearesttwo.o \
subfind/subfind_loctree.o \
subfind/subfind_coll_domain.o \
subfind/subfind_coll_treewalk.o \
subfind/subfind_density.o \
subfind/subfind_io.o \
subfind/subfind_sort_kernels.o \
subfind/subfind_reprocess.o \
subfind/subfind_so_potegy.o
INCL += subfind/subfind.h
SUBDIRS += subfind
endif
################################
#determine the needed libraries#
################################
# we only need fftw if PMGRID is turned on
ifeq (PMGRID, $(findstring PMGRID, $(CONFIGVARS)))
ifeq (DOUBLEPRECISION_FFTW,$(findstring DOUBLEPRECISION_FFTW,$(CONFIGVARS))) # test for double precision libraries
FFTW_LIB = $(FFTW_LIBS) -lfftw3
else
FFTW_LIB = $(FFTW_LIBS) -lfftw3f
endif
endif
ifneq (HAVE_HDF5,$(findstring HAVE_HDF5,$(CONFIGVARS)))
HDF5LIB =
endif
ifneq (IMPOSE_PINNING,$(findstring IMPOSE_PINNING,$(CONFIGVARS)))
HWLOC_INCL =
HWLOC_LIB =
endif
##########################
#combine compiler options#
##########################
CFLAGS = $(OPTIMIZE) $(OPT) $(HDF5INCL) $(GSL_INCL) $(EIGEN_INCL) $(FFTW_INCL) $(CVODE_INCL) $(CFITSIO_INCL) $(HEALPIX_INCL) $(GMP_INCL) $(MKL_INCL) $(HWLOC_INCL) -I$(BUILD_DIR) $(NBC_INCL) $(HYPRE_INCL) $(VTUNE_INCL) $(GRACKLE_INCL)
LIBS = $(MATHLIB) $(HDF5LIB) $(MPICHLIB) $(GSL_LIBS) $(GSLLIB) $(FFTW_LIB) $(GMP_LIBS) $(GMPLIB) $(CVODE_LIB) $(CFITSIO_LIB) $(HEALPIX_LIB) $(MKL_LIBS) $(THREAD_LIB) $(HWLOC_LIB) $(NBC_LIB) $(HYPRE_LIB) $(VTUNE_LIBS) $(GRACKLE_LIBS) $(LAPACK_LIB)
FOPTIONS = $(OPTIMIZE)
FFLAGS = $(FOPTIONS)
SUBDIRS := $(addprefix $(BUILD_DIR)/,$(SUBDIRS))
OBJS := $(addprefix $(BUILD_DIR)/,$(OBJS)) $(BUILD_DIR)/compile_time_info.o $(BUILD_DIR)/compile_time_info_hdf5.o $(BUILD_DIR)/version.o
INCL := $(addprefix $(SRC_DIR)/,$(INCL)) $(BUILD_DIR)/arepoconfig.h
TO_CHECK := $(addsuffix .check, $(OBJS) $(patsubst $(SRC_DIR)%, $(BUILD_DIR)%, $(INCL)) )
TO_CHECK += $(BUILD_DIR)/Makefile.check
CONFIG_CHECK = $(BUILD_DIR)/$(notdir $(CONFIG)).check
DOCS_CHECK = $(BUILD_DIR)/README.check
################
#create subdirs#
################
RESULT := $(shell mkdir -p $(SUBDIRS) )
#############
#build rules#
#############
all: check build
build: $(EXEC)
$(EXEC): $(OBJS)
$(LINKER) $(OPTIMIZE) $(OBJS) $(LIBS) -o $(EXEC)
lib$(LIBRARY).a: $(filter-out $(BUILD_DIR)/main.o,$(OBJS))
$(AR) -rcs lib$(LIBRARY).a $(OBJS)
clean:
@echo Cleaning all build files...
@rm -f $(OBJS) $(EXEC) lib$(LIBRARY).a
@rm -f $(BUILD_DIR)/compile_time_info.c $(BUILD_DIR)/compile_time_info_hdf5.c $(BUILD_DIR)/arepoconfig.h
@rm -f $(BUILD_DIR)/version.c
@rm -f $(TO_CHECK) $(CONFIG_CHECK)
@rm -rf $(BUILD_DIR)
@rm -rf user_guide/
@rm -rf developer_guide/
$(BUILD_DIR)/%.o: $(SRC_DIR)/%.c $(INCL) $(MAKEFILES)
$(CC) $(CFLAGS) -c $< -o $@
$(BUILD_DIR)/compile_time_info.o: $(BUILD_DIR)/compile_time_info.c $(MAKEFILES)
$(CC) $(CFLAGS) -c $< -o $@
$(BUILD_DIR)/compile_time_info_hdf5.o: $(BUILD_DIR)/compile_time_info_hdf5.c $(MAKEFILES)
$(CC) $(CFLAGS) -c $< -o $@
$(BUILD_DIR)/%.o: $(SRC_DIR)/%.cu $(INCL) $(MAKEFILES)
$(NVCC) -c $< -o $@
# sanity checks:
check: $(CONFIG_CHECK)
check_docs: $(DOCS_CHECK)
$(CONFIG_CHECK): $(TO_CHECK) $(CONFIG) check.py
@$(PYTHON) check.py 2 $(CONFIG) $(CONFIG_CHECK) defines_extra $(TO_CHECK)
$(BUILD_DIR)/%.o.check: $(SRC_DIR)/%.c Template-Config.sh defines_extra check.py
@$(PYTHON) check.py 1 $< $@ Template-Config.sh defines_extra
$(BUILD_DIR)/%.o.check: $(SRC_DIR)/%.F
touch $@
$(BUILD_DIR)/%.o.check: $(SRC_DIR)/%.f90
touch $@
$(BUILD_DIR)/%.o.check: $(SRC_DIR)/%.F90
touch $@
$(BUILD_DIR)/%.o.check: $(SRC_DIR)/%.cc
touch $@
$(BUILD_DIR)/%.h.check: $(SRC_DIR)/%.h Template-Config.sh defines_extra check.py
@$(PYTHON) check.py 1 $< $@ Template-Config.sh defines_extra
$(BUILD_DIR)/%.o.check: $(BUILD_DIR)/%.c Template-Config.sh defines_extra check.py
@$(PYTHON) check.py 1 $< $@ Template-Config.sh defines_extra
$(BUILD_DIR)/%.h.check: $(BUILD_DIR)/%.h Template-Config.sh defines_extra check.py
@$(PYTHON) check.py 1 $< $@ Template-Config.sh defines_extra
$(BUILD_DIR)/Makefile.check: Makefile Template-Config.sh defines_extra check.py
@$(PYTHON) check.py 3 $< $@ Template-Config.sh defines_extra
$(BUILD_DIR)/Config.check: Template-Config.sh check.py
@$(PYTHON) check.py 4 Template-Config.sh $@
# Arepo
Arepo public version
====================
AREPO is a parallel moving-mesh code for hydrodynamical cosmological simulations. It is a flexible code that can be applied to a variety of different types of simulations, offering a variety of physics solvers and postprocessing algorithms.
\ No newline at end of file
AREPO is a massively parallel code for gravitational n-body
systems and hydrodynamics, both on Newtonian as well as
cosmological background. It is a flexible code that can be
applied to a variety of different types of simulations, offering
a number of sophisticated simulation algorithms. An description
of the numerical algorithms employed by the code is given in the
original code papers (Springel 2010, MNRAS, 401, 791;
Pakmor et al. 2011, MNRAS, 418, 1392; Pakmor and Springel 2013,
MNRAS, 432, 176; Pakmor et al. 2016, MNRAS,455,1134) and the
release paper of this version (Weinberger et al. 2019).
A user guide can be found under `/documentation`, which also
includes a 'getting started' section, which is recommended for
new users. An html version of the user guide can be created using
sphinx (https://www.sphinx-doc.org) by typing
cd ./documentation/
make html
and displayed by opening `./documentation/build/html/index.html`.
A full version of the user guide is also available on the Arepo
homepage.
#!/bin/bash # this line only there to enable syntax highlighting in this file
##################################################
# Enable/Disable compile-time options as needed #
##################################################
#--------------------------------------- Basic operation mode of code; default: 3d with 6 particle types; type 0: gas >0: only gravitationally interacting
#NTYPES=6 # number of particle types
#TWODIMS # 2d simulation
#ONEDIMS # 1d simulation
#ONEDIMS_SPHERICAL # 1d spherically symmetric simulation
#--------------------------------------- Computational box and boundaries; default: cubic, periodic box
#LONG_X=10.0 # stretch x extent of box by given factor
#LONG_Y=2.0 # stretch y extent of box by given factor
#LONG_Z=10.0 # stretch z extent of box by given factor
#REFLECTIVE_X=1 #=2 # X Boundary; 1: Reflective, 2: Inflow/Outflow; not active: periodic
#REFLECTIVE_Y=1 #=2 # Y Boundary; 1: Reflective, 2: Inflow/Outflow; not active: periodic
#REFLECTIVE_Z=1 #=2 # Z Boundary; 1: Reflective, 2: Inflow/Outflow; not active: periodic
#--------------------------------------- Hydrodynamics; default: GAMMA=5/3 ideal hydrodynamics
#NOHYDRO # No hydrodynamics calculation
#GAMMA=1.4 # Adiabatic index of gas; 5/3 if not set
#ISOTHERM_EQS # Isothermal gas
#PASSIVE_SCALARS=3 # 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're doing this)
#--------------------------------------- Magnetohydrodynamics
#MHD # Master switch for magnetohydrodynamics
#MHD_POWELL # Powell div(B) cleaning scheme for magnetohydrodynamics
#MHD_POWELL_LIMIT_TIMESTEP # Timestep constraint due to Powell cleaning scheme
#MHD_SEEDFIELD # Uniform magnetic seed field of specified orientation and strength set up after reading in IC
#--------------------------------------- Riemann solver; default: exact Riemann solver
#RIEMANN_HLLC # HLLC approximate Riemann solver
#RIEMANN_HLLD # HLLD approximate Riemann solver (required to use for MHD)
#--------------------------------------- Mesh motion and regularization; default: moving mesh
#VORONOI_STATIC_MESH # static mesh
#VORONOI_STATIC_MESH_DO_DOMAIN_DECOMPOSITION # for VORONOI_STATIC_MESH force domain decomposition if there exist non-gas particles
#REGULARIZE_MESH_CM_DRIFT # Mesh regularization; Move mesh generating point towards center of mass to make cells rounder.
#REGULARIZE_MESH_CM_DRIFT_USE_SOUNDSPEED # Limit mesh regularization speed by local sound speed
#REGULARIZE_MESH_FACE_ANGLE # Use maximum face angle as roundness criterion in mesh regularization
#--------------------------------------- Refinement and derefinement; default: no refinement/derefinement; criterion: target mass
#REFINEMENT_SPLIT_CELLS # Refinement
#REFINEMENT_MERGE_CELLS # Derefinement
#REFINEMENT_VOLUME_LIMIT # Limit the volume of cells and the maximum volume difference between neighboring cels
#JEANS_REFINEMENT # Refinement criterion to ensure Jeans stability of cells
#REFINEMENT_HIGH_RES_GAS # Refinement criterion for high-resolution region in zoom simulation
#NODEREFINE_BACKGROUND_GRID # Do not de-refine low-res gas cells in zoom simulations
#OPTIMIZE_MESH_MEMORY_FOR_REFINEMENT # deletes the mesh structures not needed for refinement/derefinemet to lower the peak memory consumption
#--------------------------------------- non-standard phyiscs
#COOLING # Simple primordial cooling
#ENFORCE_JEANS_STABILITY_OF_CELLS # this imposes an adaptive floor for the temperature
#USE_SFR # Star formation model, turning dense gas into collisionless partices
#SFR_KEEP_CELLS # Do not distroy cell out of which a star has formed
#--------------------------------------- Gravity treatment; default: no gravity
#SELFGRAVITY # gravitational intraction between simulation particles/cells
#HIERARCHICAL_GRAVITY # use hierarchical splitting of the time integration of the gravity
#CELL_CENTER_GRAVITY # uses geometric centers to calculate gravity of cells, only possible with HIERARCHICAL_GRAVITY
#NO_GAS_SELFGRAVITY # switch off gas self-gravity in tree
#GRAVITY_NOT_PERIODIC # gravity is not treated periodically
#ALLOW_DIRECT_SUMMATION # Performed direct summation instead of tree-based gravity if number of active particles < DIRECT_SUMMATION_THRESHOLD (= 3000 unless specified differently here)
#DIRECT_SUMMATION_THRESHOLD=1000 # Overrides maximum number of active particles for which direct summation is performed instead of tree based calculation
#EXACT_GRAVITY_FOR_PARTICLE_TYPE=4 #N-squared fashion gravity for a small number of particles of the given type
#EVALPOTENTIAL # computes gravitational potential
#RANDOMIZE_DOMAINCENTER # random displacement to position of domain center; avoids correlated force-errors, important mainly for isolated systems (which otherwise might start to drift in some direction).
#--------------------------------------- TreePM Options; default: no Particle-Mesh
#PMGRID=512 # Enables particle mesh; number of cells used for grid in each dimension
#ASMTH=1.25 # This can be used to override the value assumed for the scale that defines the long-range/short-range force-split in the TreePM algorithm. The default value is 1.25, in mesh-cells.
#RCUT=6.0 # This can be used to override the maximum radius in which the short-range tree-force is evaluated (in case the TreePM algorithm is used). The default value is 4.5, given in mesh-cells.
#PM_ZOOM_OPTIMIZED # Particle-mesh calculation that is optimized for cosmological zoom simulations; disable for cosmological volume simulations.
#PLACEHIGHRESREGION=2 # Places a second, high-resolution PM grid; number encodes high-res particle types from which the extent of this second PM grid is calculated.
#ENLARGEREGION=1.1 # Factor by which high res region is increased with respect to max-min position of high-res particles
#GRIDBOOST=2 # Factor by which PMGRID is increased in non-periodic (or high res) PM calculation (if not set, code uses 2)
#FFT_COLUMN_BASED # Use column-based FFT; slightly slower, but necessary to achieve good load-balancing if number of tasks larger than PMGRID (usually the case for very large runs)
#--------------------------------------- Gravity softening
#NSOFTTYPES=4 # Number of different softening values to which particle types can be mapped.
#MULTIPLE_NODE_SOFTENING # If a tree node is to be used which is softened, this is done with the softenings of its different mass components
#INDIVIDUAL_GRAVITY_SOFTENING=2+4 # bitmask with particle types where the softenig type should be chosen with that of parttype 1 as a reference type
#ADAPTIVE_HYDRO_SOFTENING # Adaptive softening of gas cells depending on their size
#NSOFTTYPES_HYDRO=64 # Overrides number of discrete softening values for gas cellls when ADAPTIVE_HYDRO_SOFTENING (default is 64)
#--------------------------------------- External gravity; default: no external potential
#EXTERNALGRAVITY # master switch for external potential
#EXTERNALGY=0.0 # constant external gravity in y direction
#--------------------------------------- Static NFW Potential
#STATICNFW # static gravitational Navarro-Frenk-White (NFW) potential
#NFW_C=12 # concentration parameter of NFW potential
#NFW_M200=100.0 # mass causing the NFW potential
#NFW_Eps=0.01 # softening of NFW potential
#NFW_DARKFRACTION=0.87 # fraction in dark matter in NFW potential
#--------------------------------------- Static Isothermal Sphere Potential
#STATICISO # static gravitational isothermal sphere potential
#ISO_M200=100.0 # mass causing the isothermal sphere potential
#ISO_R200=160.0 # radius of the isothermal sphere potential
#ISO_Eps=0.1 # softening of isothermal sphere potential
#ISO_FRACTION=0.9 # fraction in dark matter in isothermal sphere potential
#--------------------------------------- Static Hernquist Potential
#STATICHQ # static gravitational Hernquist potential
#HQ_M200=186.015773 # mass causing the Hernquist potential
#HQ_C=10.0 # concentration parameter of Hernquist potential
#HQ_DARKFRACTION=0.9 # fraction in dark matter in Hernquist potential
#--------------------------------------- Time integration options
#FORCE_EQUAL_TIMESTEPS # variable but global timestep
#TREE_BASED_TIMESTEPS # non-local timestep criterion (take 'signal speed' into account)
#PM_TIMESTEP_BASED_ON_TYPES=2+4 # particle types that should be considered in setting the PM timestep
#NO_PMFORCE_IN_SHORT_RANGE_TIMESTEP # PM force is not included in short-range timestep criterion
#ENLARGE_DYNAMIC_RANGE_IN_TIME # This extends the dynamic range of the integer timeline from 32 to 64 bit
#--------------------------------------- MPI
#IMPOSE_PINNING # Enforce pinning of MPI tasks to cores if MPI does not do it
#IMPOSE_PINNING_OVERRIDE_MODE # Override MPI pinning, if present
#--------------------------------------- Single/Double Precision
#DOUBLEPRECISION=1 # Mode of double precision: not defined: single; 1: full double precision 2: mixed, 3: mixed, fewer single precisions; unless short of memory, use 1.
#DOUBLEPRECISION_FFTW # FFTW calculation in double precision
#OUTPUT_IN_DOUBLEPRECISION # snapshot files will be written in double precision
#INPUT_IN_DOUBLEPRECISION # initial conditions are in double precision
#OUTPUT_COORDINATES_IN_DOUBLEPRECISION # will always output coordinates in double precision
#NGB_TREE_DOUBLEPRECISION # if this is enabled, double precision is used for the neighbor node extension
#--------------------------------------- On the fly FOF groupfinder
#FOF # enable FoF output
#FOF_PRIMARY_LINK_TYPES=2 # 2^type for the primary dark matter type
#FOF_SECONDARY_LINK_TYPES=1+16+32 # 2^type for the types linked to nearest primaries
#FOF_SECONDARY_LINK_TARGET_TYPES= # should normally be set to a list of all dark matter types (in zoom runs), if not set defaults to FOF_PRIMARY_LINK_TYPES
#FOF_GROUP_MIN_LEN=32 # Minimum number of particles in one group (default is 32)
#FOF_LINKLENGTH=0.16 # Linkinglength for FoF (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)
#FOF_STOREIDS # store IDs in group/subfind catalogue, do not order particles in snapshot files by group order
#--------------------------------------- Subfind
#SUBFIND # enables substructure finder
#SAVE_HSML_IN_SNAPSHOT # stores hsml, density, and velocity dispersion values in the snapshot files
#SUBFIND_CALC_MORE # calculates also the velocity dispersion in the local density estimate (this is automatically enabled by several other options, e.g. SAVE_HSML_IN_SNAPSHOT)
#SUBFIND_EXTENDED_PROPERTIES # adds calculation of further quantities related to angular momentum in different components
#--------------------------------------- Things for special behaviour
#RUNNING_SAFETY_FILE # if file './running' exists, do not start the run
#MULTIPLE_RESTARTS # Keep restart files instead of just two copies
#EXTENDED_GHOST_SEARCH # This extends the ghost search to the full 3x3 domain instead of the principal domain
#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
#TETRA_INDEX_IN_FACE # adds an index to each entry of VF[] and DC[] to one of the tetrahedra that share this edge
#NOSTOP_WHEN_BELOW_MINTIMESTEP # Simulation does not terminate when timestep drops below minimum timestep
#TIMESTEP_OUTPUT_LIMIT # Limit timesteps to write snaps on time for output lists with huge range
#ALLOWEXTRAPARAMS # Tolerate extra parameters that are not used
#FIX_SPH_PARTICLES_AT_IDENTICAL_COORDINATES # this can be used to load SPH ICs that contain identical particle coordinates
#RECOMPUTE_POTENTIAL_IN_SNAPSHOT # needed for postprocess option 18 that can be used to calculate potential 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
#USE_DIRECT_IO_FOR_RESTARTS # Try to use O_DIRECT for low-level read/write operations of restart files to circumvent the linux kernel page caching
#HUGEPAGES # use huge pages for memory allocation, through hugetlbfs library
#DETAILEDTIMINGS # creates individual timings entries for primary/secondary kernels to diagnose work-load balancing
#BITS_PER_DIMENSION=42 # Peano-Hilbert order
#--------------------------------------- input options
#COMBINETYPES # reads in the IC file types 4+5 as type 3
#LOAD_TYPES=1+2+4+16+32 # load only specific types sum(2^type)
#READ_COORDINATES_IN_DOUBLE # read coordinates in double precision
#LONGIDS # Store IDs in type unsigned long long instead of unsigned int
#OFFSET_FOR_NON_CONTIGUOUS_IDS # Determines offset of IDs on startup instead of using fixed offset.
#GENERATE_GAS_IN_ICS # Generates gas from dark matter only ICs.
#SPLIT_PARTICLE_TYPE=4+8 # Overrides splitting particle type 1 in GENERATE_GAS_IN_ICS use sum(2^type)
#SHIFT_BY_HALF_BOX # Shift all positions by half a box size after reading in
#NTYPES_ICS=6 # number of particle types in ICs, if not NTYPES (only works for 6, and non-HDF5 ICs!)
#READ_MASS_AS_DENSITY_IN_INPUT # Reads the mass field in the IC as density
#--------------------------------------- special input options
#IDS_OFFSET=1 # Override offset for gas particles if created from DM
#READ_DM_AS_GAS # reads in dark matter particles as gas cells
#TILE_ICS # tile ICs by TileICsFactor in each dimension
#--------------------------------------- output fields in snapshots--Default output filds are: position, velocity, ID, mass, spec. internal energy (gas), density(gas)
#OUTPUT_TASK # output MPI task
#OUTPUT_TIMEBIN_HYDRO # output hydrodynamics time-bin
#OUTPUT_PRESSURE_GRADIENT # output pressure gradient
#OUTPUT_DENSITY_GRADIENT # output density gradient
#OUTPUT_VELOCITY_GRADIENT # output velocity gradient
#OUTPUT_BFIELD_GRADIENT # output magnetic field gradient
#OUTPUT_MESH_FACE_ANGLE # output max. face angle of cells
#OUTPUT_VERTEX_VELOCITY # output velocity of cell
#OUTPUT_VERTEX_VELOCITY_DIVERGENCE # output deivergence of cell velocity
#OUTPUT_VOLUME # output volume of cells; note that this can always be computat as both, density and mass of cells are by default in output
#OUTPUT_CENTER_OF_MASS # output center of mass of cells (position is mesh-generating point)
#OUTPUT_SURFACE_AREA # output surface area of cells
#OUTPUT_PRESSURE # output pressure of gas
#OUTPUTPOTENTIAL # output potential at particle position
#OUTPUTACCELERATION # output gravitational acceleration
#OUTPUTTIMESTEP # output timestep of particle
#OUTPUT_SOFTENINGS # output particle softenings
#OUTPUTGRAVINTERACTIONS # output gravitatational interactions (from the tree) of particles
#OUTPUTCOOLRATE # outputs cooling rate, and conduction rate if enabled
#OUTPUT_DIVVEL # output velocity divergence