23 template <
typename TEnum>
26 template <
typename TEnum>
44 template <
typename TEnum>
47 ,
index(typeid(TEnum)) {
48 static_assert(std::is_enum<TEnum>::value,
"Can be used only for enums");
55 explicit operator int()
const {
59 template <typename T, typename = std::enable_if_t<std::is_enum<T>::value>>
60 explicit operator T()
const {
78 template <
typename TEnum>
80 :
Exception(
"Error accessing parameter '" +
81 Settings<TEnum>::getEntryName(key).valueOr(
"unknown parameter") +
"'") {
82 static_assert(std::is_enum<TEnum>::value,
"InvalidSettingsAccess can only be used with enums");
86 template <
typename TEnum>
107 template <
typename TEnum>
159 Entry(TEnum
id,
const std::string& name,
const Value& value,
const std::string& desc =
"")
165 template <typename T, typename = std::enable_if_t<std::is_enum<T>::value>>
166 Entry(TEnum
id,
const std::string& name,
const T& value,
const std::string& desc =
"")
172 template <
typename T>
173 Entry(TEnum
id,
const std::string& name,
Flags<T> flags,
const std::string& desc =
"")
179 template <
typename T>
180 INLINE bool hasType(std::enable_if_t<!std::is_enum<T>::value,
int> = 0)
const {
181 return value.has<T>();
184 template <
typename T>
185 INLINE bool hasType(std::enable_if_t<std::is_enum<T>::value,
int> = 0)
const {
195 Settings(std::initializer_list<Entry> list);
225 template <
typename TValue>
228 std::enable_if_t<!std::is_enum<std::decay_t<TValue>>::value,
int> = 0) {
231 Entry& newEntry = entries.
insert(idx, Entry{});
232 newEntry.value = std::forward<TValue>(value);
235 entry->
value = std::forward<TValue>(value);
241 template <
typename TValue>
244 std::enable_if_t<std::is_enum<std::decay_t<TValue>>::value,
int> = 0) {
247 Entry& newEntry = entries.
insert(idx, Entry{});
261 template <typename TValue, typename = std::enable_if_t<std::is_enum<TValue>::value>>
274 entry->
value.template get<EnumWrapper>().value = 0;
289 this->
set(idx, ew, 0);
302 newEntry.value = iv.value;
305 entry->
value = iv.value;
325 template <
typename TValue>
326 TValue
get(
const TEnum idx, std::enable_if_t<!std::is_enum<std::decay_t<TValue>>::value,
int> = 0)
const {
330 return entry->
value.template get<TValue>();
334 template <
typename TValue>
335 TValue
get(
const TEnum idx, std::enable_if_t<std::is_enum<std::decay_t<TValue>>::value,
int> = 0)
const {
341 return TValue(wrapper.
value);
347 template <
typename TValue>
349 static_assert(std::is_enum<TValue>::value,
"Can be only used for enums");
350 TValue value = this->get<TValue>(idx);
375 return entry->
value.getTypeIdx();
405 for (
const auto& p : settings.entries) {
406 if (p.value.name == name) {
414 bool has(
const TEnum idx)
const {
421 template <
typename TValue>
425 return entry->
value.template has<TValue>();
481 bool setValueByType(Entry& entry,
const Value& defaultValue,
const std::string& str);
485 template <
typename TEnum>
#define SPH_ASSERT(x,...)
Smart pointer performing cloning of stored resource rather than copying pointer.
@ NONE
No collision took place.
@ SUM_ONLY_UNDAMAGED
Only undamaged particles (particles with damage > 0) from the same body (body with the same flag) wil...
Helper object for converting enums to string, listing all available values of enum,...
Wrapper of type containing either a value or an error message.
Wrapper over enum allowing setting (and querying) individual bits of the stored value.
uint32_t Size
Integral type used to index arrays (by default).
double Float
Precision used withing the code. Use Float instead of float or double where precision is important.
Object representing interval of real values.
#define INLINE
Macros for conditional compilation based on selected compiler.
#define NAMESPACE_SPH_END
const NothingType NOTHING
Return value of function that may fail, containing either SUCCEES (true) or error message.
@ PRESSURE
Pressure, reduced by yielding and fracture model (multiplied by 1-damage); always a scalar quantity.
@ DAMAGE
Damage, reducing the pressure and deviatoric stress.
@ ENERGY
Specific internal energy, always a scalar quantity.
@ DENSITY
Density, always a scalar quantity.
@ AV_ALPHA
Coefficient alpha of the artificial viscosity. Coefficient beta is always 2*alpha.
@ DISTENTION
Ratio of the solid and bulk density (parameter alpha in P-alpha and eps-alpha models).
Symmetric traceless 2nd order tensor.
Object capable of storing values of different types.
BasicVector< Float > Vector
Helper class used to allow calling a function only from within T.
Wrapper of an integral value providing functions for reading and modifying individual bits.
INLINE TValue value() const
Returns the underlying value.
constexpr static Flags fromValue(const TValue value)
Constructs object from underlying value.
INLINE bool tryRemove(const TKey &key)
Removes element with given key if present, otherwise it does nothing.
INLINE bool contains(const TKey &key) const
Returns true if the map contains element of given key.
INLINE TValue & insert(const TKey &key, const TValue &value)
Adds a new element into the map or sets new value of element with the same key.
INLINE Optional< TValue & > tryGet(const TKey &key)
Returns a reference to the value matching the given key, or NOTHING if no such value exists.
Object representing a 1D interval of real numbers.
Exception thrown on invalid access to entries of a Settings object.
InvalidSettingsAccess(const TEnum key)
INLINE Type & value()
Returns the reference to the stored value.
Object representing a path on a filesystem.
Iterator useful for iterating over all entries in the settings.
SettingsIterator & operator++()
Moves to next entry.
bool operator==(const SettingsIterator &other) const
Equality operator between settings operators.
SettingsIterator(const ActIterator &iter, Badge< Settings< TEnum >>)
Constructs an iterator from iternal implementation; use Settings::begin and Settings::end.
IteratorValue operator*() const
Dereference the iterator, yielding a pair of entry ID and its value.
bool operator!=(const SettingsIterator &other) const
Unequality operator between settings operators.
Generic object containing various settings and parameters of the run.
void unset(const TEnum idx)
Removes given parameter from settings.
static Optional< std::string > getEntryDesc(const TEnum idx)
Returns a description of the entry with given index.
static std::string typeToString(const int type)
Returns the string name for given type index.
static Optional< std::string > getEntryName(const TEnum idx)
Returns the human-readable name of the entry with given index.
static Optional< TEnum > getEntryId(const std::string &name)
Returns an ID for given entry name.
Settings & set(const TEnum idx, const Flags< TValue > flags)
Saves flags into the settings.
TValue get(const TEnum idx, std::enable_if_t<!std::is_enum< std::decay_t< TValue >>::value, int >=0) const
Returns a value of given type from the settings.
static const Settings & getDefaults()
\brief Returns a reference to object containing default values of all settings.
Outcome saveToFile(const Path &path) const
Saves all values stored in settings into file.
Settings & operator=(std::initializer_list< Entry > list)
Assigns a list of settings into the object, erasing all previous entries.
Settings()
Initialize settings by settings all value to their defaults.
Flags< TValue > getFlags(const TEnum idx) const
Returns Flags from underlying value stored in settings.
TValue get(const TEnum idx, std::enable_if_t< std::is_enum< std::decay_t< TValue >>::value, int >=0) const
Returns a value of given type from the settings.
Settings & set(const TEnum idx, const EnumWrapper ew)
Special setter for value of type EnumWrapper.
bool has(const TEnum idx) const
Checks if the given entry is stored in the settings.
SettingsIterator< TEnum > begin() const
Iterator to the first entry of the settings storage.
Settings & set(const TEnum idx, TValue &&value, std::enable_if_t<!std::is_enum< std::decay_t< TValue >>::value, int >=0)
Saves a value into the settings.
void addEntries(const Settings &settings)
Adds entries from different Settings object into this one, overriding current entries.
Size size() const
Returns the number of entries in the settings.
static Optional< int > getEntryType(const TEnum idx)
Returns the type of the entry with given index.
Settings & set(const TEnum idx, TValue &&value, std::enable_if_t< std::is_enum< std::decay_t< TValue >>::value, int >=0)
Saves a value into the settings.
bool tryLoadFileOrSaveCurrent(const Path &path, const Settings &overrides=EMPTY_SETTINGS)
If the specified file exists, loads the settings from it, otherwise creates the file and saves the cu...
Outcome loadFromFile(const Path &path)
Loads the settings from file.
SettingsIterator< TEnum > end() const
Iterator to the one-past-end entry the settings storage.
bool hasType(const TEnum idx) const
Checks if the given entry has specified type.
Settings & set(const TEnum idx, EmptyFlags)
Clear flags of given parameter in settings.
Symmetric tensor of 2nd order.
Symmetric traceless 2nd order tensor.
Variant, an implementation of type-safe union, similar to std::variant or boost::variant.
@ INTERNAL_FRICTION
Use internal friction given by the viscosity in the material.
@ INERTIAL
Use centrifugal force and Coriolis forces given by angular frequency of the coordinate frame.
@ SELF_GRAVITY
Use gravitational force in the model.
@ SURFACE_TENSION
Surface force proportional to surface curvature.
@ STD_OUT
Print log to standard output.
@ ELASTIC
No yielding, just elastic deformations following Hooke's law.
@ VON_MISES
Von Mises criterion.
@ DRUCKER_PRAGER
Drucker-Prager pressure dependent yielding stress.
@ UNIFORM_GRID
Partitioning particles into a grid uniform in space.
@ LINKED_LIST
Using linked list.
@ BRUTE_FORCE
Brute-force search by going through each pair of particles (O(N^2) complexity)
@ HASH_MAP
Using hash map.
@ UNIFORM
Mersenne Twister PRNG from Standard library.
INLINE void checkSettingsAccess(const bool result, const TEnum key)
@ DIVERGENCE
Time step computed from velocity divergence.
@ DERIVATIVES
Time step computed by limiting value-to-derivative ratio of quantiites.
@ COURANT
Time step determined using CFL condition.
@ ACCELERATION
Time step computed from ratio of acceleration and smoothing length.
Optional< std::string > getIoExtension(const IoEnum type)
Returns the file extension associated with given IO type.
const EmptySettingsTag EMPTY_SETTINGS
@ BARNES_HUT
Use Barnes-Hut algorithm, approximating gravity by multipole expansion (up to octupole order)
@ PRESSURE_DIFFERENCE
Signal speed given by the absolute value of pressure difference, as in Price (2008)
@ VELOCITY_DIFFERENCE
Signal speed given by relative velocity projected to the positive vector, as in Valdarnini (2018),...
@ CUSTOM
User-defined list of output times.
@ LINEAR
Constant time between consecutive output times.
@ LOGARITHMIC
Constant ratio between consecutive output times.
@ TEXT_FILE
Formatted human-readable text file.
@ PKDGRAV_INPUT
Pkdgrav input file.
@ MPCORP_FILE
Export from Minor Planet Center Orbit Database.
@ LEAP_FROG
Leap-frog 2nd-order integration.
@ MODIFIED_MIDPOINT
Modified midpoint method with constant number of substeps.
@ BULIRSCH_STOER
Bulirsch-Stoer integrator.
@ RUNGE_KUTTA
Runge-Kutta 4-th order integration.
@ PREDICTOR_CORRECTOR
Predictor-corrector scheme.
@ EULER_EXPLICIT
Explicit (forward) 1st-order integration.
@ BENZ_ASPHAUG
(P_i + P_j) / (rho_i rho_j)
@ DAMAGED_DECREASE_BULK_DENSITY
std::string getIoDescription(const IoEnum type)
Returns a short description of the file format.
@ OUTPUT
The format can be used as file output.
@ INPUT
The format can be used as file input.
@ SPH_KERNEL
Use gravity smoothing kernel corresponding to selected SPH kernel.
@ POINT_PARTICLES
Point-like particles with zero radius.
@ INTERNAL_BOUNCE
Particles are allowed to overlap and they bounce if moving towards each other.
@ REPEL
Particles are shifted until no overlap happens.
@ FORCE_MERGE
Overlapping particles are merged.
Flags< IoCapability > getIoCapabilities(const IoEnum type)
Returns the capabilities of given file format.
Optional< IoEnum > getIoEnum(const std::string &ext)
Returns the file type from file extension.
@ SUMMATION_SOLVER
Density is obtained by direct summation over nearest SPH particles.
@ ENERGY_CONSERVING_SOLVER
Solver advancing internal energy using pair-wise work done by particles, by Owen (2009).
@ ELASTIC_DEFORMATION_SOLVER
Special solver used to simulate deformations of perfectly elastic bodies.
@ SYMMETRIC_SOLVER
SPH formulation using symmetrized evaluation of derivatives.
@ DENSITY_INDEPENDENT
Density independent solver by Saitoh & Makino (2013).
@ ASYMMETRIC_SOLVER
Generic solver evaluating all derivatives asymmetrically.
@ RIEMANN
Artificial viscosity term analogous to Riemann solvers by Monaghan (1997)
@ MORRIS_MONAGHAN
Time-dependent artificial viscosity by Morris & Monaghan (1997).
@ STANDARD
Standard artificial viscosity term by Monaghan (1989).
@ STRATIFIED
Stratified distribution to reduce clustering.
@ RANDOM
Random distribution of particles.
@ PARAMETRIZED_SPIRALING
Parametrized spiraling scheme by Saff & Kuijlaars (1997)
@ HEXAGONAL
Hexagonally close packing.
@ DIEHL_ET_AL
Isotropic uniform distribution by Diehl et al. (2012)
@ CUBIC
Cubic close packing.
@ THOMAS_COUCHMAN
Modification of the standard M4 B-spline kernel, used to avoid particle clustering.
@ GAUSSIAN
Gaussian function.
@ FOURTH_ORDER_SPLINE
M5 B-spline (piecewise 4th-order polynomial)
@ CORE_TRIANGLE
Core Triangle (CT) kernel by Read et al. (2010)
@ WENDLAND_C2
Wendland kernel C2.
@ TRIANGLE
Simple triangle (piecewise linear) kernel.
@ WENDLAND_C6
Wendland kernel C6.
@ WENDLAND_C4
Wendland kernel C4.
@ CUBIC_SPLINE
M4 B-spline (piecewise cubic polynomial)
@ SCALAR_GRADY_KIPP
Grady-Kipp model of fragmentation using scalar damage.
@ TENSOR_GRADY_KIPP
Grady-Kipp model of fragmentation using tensor damage.
@ ANEOS
ANEOS given by look-up table.
@ MIE_GRUNEISEN
Mie-Gruneisen equation of state.
@ TAIT
Tait equation of state for simulations of liquids.
@ IDEAL_GAS
Equation of state for ideal gas.
@ TILLOTSON
Tillotson (1962) equation of state.
@ MURNAGHAN
Murnaghan equation of state.
@ SIMPLIFIED_TILLOTSON
Simplified version of the Tillotson equation of state.
BodySettingsId
Settings of a single body / gas phase / ...
@ TILLOTSON_NONLINEAR_B
Coefficient B of the nonlinear compressive term in Tillotson equation.
@ ELASTICITY_LIMIT
Elasticity limit of the von Mises yielding criterion.
@ TILLOTSON_ALPHA
Alpha coefficient in expanded phase of Tillotson equation.
@ FLUIDIZATION_VISCOSITY
Effective viscosity of acoustic fludizations.
@ DRY_FRICTION
Coefficient of friction for fully damaged material.
@ WEIBULL_EXPONENT
Exponent of the Weibull distribution of flaws.
@ BODY_CENTER
Center point of the body. Currently used only by StabilizationSolver.
@ BULK_POROSITY
Bulk (macro)porosity of the body.
@ TILLOTSON_ENERGY_CV
Specific energy of complete vaporization.
@ TILLOTSON_SMALL_B
"Small b" coefficient in Tillotson equation
@ OSCILLATION_REGENERATION
Regeneration efficiency of acoustric oscillations.
@ DIEHL_STRENGTH
Strength parameter of the Diehl's distribution.
@ MELT_ENERGY
Melting energy, used for temperature-dependence of the stress tensor.
@ STRESS_TENSOR
Initial values of the deviatoric stress tensor.
@ ENERGY_MIN
Estimated minimal value of energy used to determine timestepping error.
@ PARTICLE_SORTING
If true, particles are sorted using Morton code, preserving locality in memory.
@ BULK_SOUND_SPEED
Used in Mie-Gruneisen equations of state.
@ USE_ACOUSTIC_FLUDIZATION
Whether to use the acoustic fludization model.
@ DAMAGE_MIN
Estimate minimal value of damage used to determine timestepping error.
@ ELASTIC_MODULUS
Elastic modulus lambda (a.k.a Lame's first parameter) of the material.
@ RHEOLOGY_DAMAGE
Model of fragmentation used within the rheological model.
@ IDENTIFIER
Arbitrary string identifying this material.
@ COHESION
Cohesion, yield strength at zero pressure.
@ TAIT_GAMMA
Exponent of density, representing a compressibility of a fluid. Used in Tait equation of state.
@ INITIAL_DISTRIBUTION
Initial distribution of SPH particles within the domain, see DistributionEnum for options.
@ DIEHL_ITERATION_COUNT
Number of iterations of particle repelling.
@ TILLOTSON_BETA
Beta coefficient in expanded phase of Tillotson equation.
@ DENSITY_RANGE
Allowed range of density. Densities of all particles all clamped to fit in the range.
@ SHEAR_MODULUS
Shear modulus mu (a.k.a Lame's second parameter) of the material.
@ YOUNG_MODULUS
Young modulus of the material.
@ ADIABATIC_INDEX
Adiabatic index used by some equations of state (such as ideal gas)
@ TAIT_SOUND_SPEED
Sound speed used in Tait equation of state.
@ BULK_MODULUS
Bulk modulus of the material.
@ SMOOTHING_LENGTH_ETA
Eta-factor between smoothing length and particle concentration (h = eta * n^(-1/d) )
@ AV_ALPHA_RANGE
Lower and upper bound of the alpha coefficient, used only for time-dependent artificial viscosity.
@ WEIBULL_COEFFICIENT
Coefficient (multiplier) of the Weibull distribution of flaws.
@ HEAT_CAPACITY
Heat capacity at constant pressure,.
@ OSCILLATION_DECAY_TIME
Characteristic decay time of acoustic oscillations in the material.
@ TILLOTSON_ENERGY_IV
Specific energy of incipient vaporization.
@ STRESS_TENSOR_MIN
Estimated minial value of stress tensor components used to determined timestepping error.
@ RAYLEIGH_SOUND_SPEED
Speed of crack growth, in units of local sound speed.
@ EOS
Equation of state for this material, see EosEnum for options.
@ ENERGY_RANGE
Allowed range of specific internal energy.
@ RHEOLOGY_YIELDING
Model of stress reducing used within the rheological model.
@ GRUNEISEN_GAMMA
Gruneisen's gamma paraemter used in Mie-Gruneisen equation of state.
@ TILLOTSON_SMALL_A
"Small a" coefficient in Tillotson equation
@ HUGONIOT_SLOPE
Linear Hugoniot slope coefficient used in Mie-Gruneisen equation of state.
@ DAMAGE_RANGE
Allowed range of damage.
@ TILLOTSON_SUBLIMATION
Specific sublimation energy.
@ WEIBULL_SAMPLE_DISTRIBUTIONS
@ FIXED_PARTICLES
Creates dummy particles along the boundary.
@ SYMMETRIC
Particles are duplicated along the z=0 plane.
@ PROJECT_1D
Project all movement onto a line, effectivelly reducing the simulation to 1D.
@ KILL_ESCAPERS
Removes particles outside the domain.
@ GHOST_PARTICLES
Create ghosts to keep particles inside domain.
@ FROZEN_PARTICLES
Highest derivatives of all particles close to the boundary are set to zero.
@ PERIODIC
Periodic boundary conditions.
@ WIND_TUNNEL
Extension of Frozen Particles, pushing particles inside the domain and removing them on the other end...
@ CONTINUITY_EQUATION
Smoothing length is evolved using continuity equation.
RunSettingsId
Settings relevant for whole run of the simulation.
@ RUN_OUTPUT_QUANTITIES
List of quantities to write to text output. Binary output always stores all quantitites.
@ DOMAIN_CENTER
Center point of the domain.
@ SPH_SCRIPT_FILE
Path of an arbitrary ChaiScript script executed each timestep.
@ SPH_SUMMATION_MAX_ITERATIONS
Maximum number of iterations for self-consistent density computation of summation solver.
@ RUN_AUTHOR
Name of the person running the simulation.
@ SPH_STRAIN_RATE_CORRECTION_TENSOR
@ RUN_OUTPUT_INTERVAL
Time interval of dumping data to disk.
@ SPH_CONTINUITY_MODE
Specifies how the density is evolved, see ContinuityEnum.
@ TIMESTEPPING_MAX_TIMESTEP
@ DOMAIN_HEIGHT
Height of a cylindrical domain.
@ SPH_AV_STRESS_FACTOR
Multiplicative factor of the artificial stress term (= strength of the viscosity)
@ DOMAIN_GHOST_MIN_DIST
Minimal distance between a particle and its ghost, in units of smoothing length.
@ RUN_LOGGER
Selected logger of a run, see LoggerEnum.
@ RUN_EMAIL
E-mail of the person running the simulation.
@ SPH_AV_BALSARA_STORE
If true, Balsara factors will be saved as quantity AV_BALSARA. Mainly for debugging purposes.
@ RUN_VERBOSE_NAME
Path of a file where the verbose log is printed.
@ SPH_AV_STRESS_EXPONENT
Weighting function exponent n in artificial stress term.
@ SPH_NEIGHBOUR_ENFORCING
@ SPH_USE_AC
Enables the artificial thermal conductivity term.
@ FINDER_LEAF_SIZE
Maximum number of particles in a leaf node.
@ SOFT_REPEL_STRENGTH
Magnitude of the repel force for the soft-body solver.
@ RUN_OUTPUT_SPACING
Type of output spacing in time, see enum OutputSpacing.
@ GENERATE_UVWS
If true, the mapping coordinates will be computed and saved for all bodies in the simulation.
@ COLLISION_HANDLER
Specifies how the collisions of particles should be handler; see CollisionHandlerEnum.
@ TIMESTEPPING_MEAN_POWER
@ SPH_SOLVER_FORCES
List of forces to compute by the solver.
@ RUN_THREAD_CNT
Number of threads used by the code. If 0, all available threads are used.
@ SPH_AV_TYPE
Type of used artificial viscosity.
@ RUN_LOGGER_FILE
Path of a file where the log is printed, used only when selected logger is LoggerEnum::FILE.
@ SPH_AV_BETA
Artificial viscosity beta coefficient.
@ SPH_AV_ALPHA
Artificial viscosity alpha coefficient.
@ RUN_OUTPUT_PATH
Path where all output files (dumps, logs, ...) will be written.
@ DOMAIN_FROZEN_DIST
Distance to the boundary in units of smoothing length under which the particles are frozen.
@ SPH_SOLVER_TYPE
Selected solver for computing derivatives of physical variables.
@ NBODY_MAX_ROTATION_ANGLE
@ RUN_DIAGNOSTICS_INTERVAL
@ TIMESTEPPING_INITIAL_TIMESTEP
@ COLLISION_BOUNCE_MERGE_LIMIT
@ SPH_ADAPTIVE_SMOOTHING_LENGTH
Solution for evolutions of the smoothing length.
@ SPH_AV_USE_STRESS
Whether to use artificial stress.
@ GRAVITY_SOLVER
Algorithm to compute gravitational acceleration.
@ RUN_OUTPUT_CUSTOM_TIMES
List of comma-separated output times, used when RUN_OUTPUT_SPACING is set to CUSTOM.
@ TIMESTEPPING_DERIVATIVE_FACTOR
Multiplicative factor k for the derivative criterion; dt = k * v / dv.
@ SPH_SMOOTHING_LENGTH_MIN
Minimal value of smoothing length.
@ RUN_COMMENT
User-specified comment.
@ SPH_USE_XSPH
Turn on the XSPH correction.
@ SPH_SUMMATION_DENSITY_DELTA
@ SPH_DI_ALPHA
Alpha parameter of the density-independent solver.
@ FRAME_ANGULAR_FREQUENCY
@ COLLISION_ALLOWED_OVERLAP
@ SPH_DISCRETIZATION
Specifies a discretization of SPH equations; see DiscretizationEnum.
@ SPH_AC_ALPHA
Artificial conductivity alpha coefficient.
@ RUN_OUTPUT_TYPE
Selected format of the output file, see IoEnum.
@ SPH_VELOCITY_DIFFUSION_ALPHA
Alpha-coefficient of the delta-SPH modification.
@ UVW_MAPPING
Type of the UV mapping.
@ RUN_RNG
Selected random-number generator used within the run.
@ RUN_OUTPUT_FIRST_INDEX
Index of the first generated output file. Might not be zero if the simulation is resumed.
@ NBODY_AGGREGATES_SOURCE
Specifies the initial aggregates used in the simulation. See AggregateEnum.
@ TIMESTEPPING_INTEGRATOR
Selected timestepping integrator.
@ TIMESTEPPING_MAX_INCREASE
@ TIMESTEPPING_MIDPOINT_COUNT
Number of sub-steps in the modified midpoint method.
@ COLLISION_RESTITUTION_TANGENT
@ GRAVITY_MULTIPOLE_ORDER
Order of multipole expansion.
@ TIMESTEPPING_COURANT_NUMBER
Courant number.
@ SPH_FINDER
Structure for searching nearest neighbours of particles.
@ COLLISION_ROTATION_MERGE_LIMIT
@ SOFT_FRICTION_STRENGTH
Magnitude of the friction force for the soft-body solver.
@ COLLISION_OVERLAP
Specifies how particle overlaps should be handled.
@ DOMAIN_TYPE
Computational domain, enforced by boundary conditions.
@ SPH_AC_BETA
Artificial conductivity beta coefficient.
@ SPH_DENSITY_DIFFUSION_DELTA
Delta-coefficient of the delta-SPH modification, see Marrone et al. 2011.
@ RUN_LOGGER_VERBOSITY
Number specifying log verbosity. Can be between 0 and 3, going from least to most verbose.
@ SPH_SCRIPT_ENABLE
Enables or disables scripted term.
@ TIMESTEPPING_DIVERGENCE_FACTOR
Multiplicative factor for the divergence criterion.
@ RUN_NAME
User-specified name of the run, used in some output files.
@ RUN_VERBOSE_ENABLE
Enables verbose log of a simulation.
@ TIMESTEPPING_BS_ACCURACY
Required relative accuracy of the Bulirsch-Stoer integrator.
@ GRAVITY_RECOMPUTATION_PERIOD
@ GRAVITY_OPENING_ANGLE
Opening angle Theta for multipole approximation of gravity.
@ SPH_USE_DELTASPH
Turn on the delta-SPH correction.
@ DOMAIN_SIZE
(Vector) size of a block domain
@ SPH_PHASE_ANGLE
Evolve particle phase angle.
@ DOMAIN_BOUNDARY
Type of boundary conditions.
@ GRAVITY_CONSTANT
Gravitational constant. To be generalized.
@ NBODY_AGGREGATES_ENABLE
@ SPH_SCRIPT_ONESHOT
Whether to execute the script only once or periodically.
@ SPH_STABILIZATION_DAMPING
@ GRAVITY_KERNEL
Gravity smoothing kernel.
@ RUN_RNG_SEED
Seed for the random-number generator.
@ FINDER_MAX_PARALLEL_DEPTH
@ SPH_ASYMMETRIC_COMPUTE_RADII_HASH_MAP
@ SPH_AC_SIGNAL_SPEED
Type of the signal speed used by artificial conductivity.
@ FRAME_CONSTANT_ACCELERATION
@ COLLISION_RESTITUTION_NORMAL
@ RUN_OUTPUT_NAME
File name of the output file (including extension), where d is a placeholder for output number.
@ BLOCK
Block with edge sizes given by vector.
@ HALF_SPACE
Half-space z>0.
@ GAUSSIAN_SPHERE
Gaussian random sphere.
@ ELLIPSOIDAL
Axis-aligned ellipsoid.
@ CYLINDER
Cylindrical domain aligned with z axis.
Tag for initialization of empty settings object.
friend std::ostream & operator<<(std::ostream &ofs, const EnumWrapper &e)
EnumWrapper(const int value, const EnumIndex &index)
bool operator==(const EnumWrapper &other) const
Settings< TEnum >::Value value
Variant holding the value of the entry.
TEnum id
ID of settings entry.