DNDSR 0.1.0.dev1+gcd065ad
Distributed Numeric Data Structure for CFV
Loading...
Searching...
No Matches
Experimentals.hpp
Go to the documentation of this file.
1#pragma once
2/// @file Experimentals.hpp
3/// @brief Compile-time feature flags for experimental / research code paths.
4///
5/// Each `#define USE_*` enables a non-default behaviour somewhere in the
6/// solver (reconstruction, entropy fixes, turbulence models, moving mesh, ...).
7/// They are collected here so the build provenance can be inspected via
8/// @ref DNDS_Experimentals_State at run time.
9
10#include <string>
11
12// #define USE_ECCENTRIC_COMB_POW_2
13
14// #define USE_LOCAL_COORD_CURVILINEAR
15// #define PRINT_EVERY_VR_JACOBI_ITER_INCREMENT
16
17// #define USE_ISOTROPIC_OPTHQM
18
19// #define USE_FLUX_BALANCE_TERM // TODO: decide how to flux balance for moving mesh
20// TODO: this option has been deleted, re-implement in the evaluate rhs code
21
22/// @brief Entropy-fix applied to SA turbulence-model advection lambdas.
23#define USE_ENTROPY_FIXED_LAMBDA_IN_SA
24
25/// @brief Zero the SA variable `nu_tilde` exactly at wall cells.
26#define USE_FIX_ZERO_SA_NUT_AT_WALL
27
28// #define USE_SIGN_MINUS_AT_ROE_M4_FLUX
29
30/// @brief Use first-order viscous wall distance inside the VR weight calculation.
31#define USE_FIRST_ORDER_VISCOUS_WALL_DELTA_IN_VR_WEIGHT
32
33/// @brief Use first-order (nearest-node) wall distance globally.
34#define USE_FIRST_ORDER_WALL_DIST
35
36// #define USE_MG_O1_NO_VISCOUS
37
38// #define USE_MG_O1_LLF_FLUX
39
40/// @brief Enable the negative SA formulation of Allmaras et al. (allows
41/// `nu_tilde < 0` with a modified source term).
42#define USE_NS_SA_NEGATIVE_MODEL
43
44// #define USE_NS_SA_NUT_REDUCED_ORDER
45
46// #define USE_NS_SA_ALLOW_NEGATIVE_MEAN
47
48/// @brief Use absolute (inertial-frame) velocities in rotating-frame source
49/// terms rather than relative velocity.
50#define USE_ABS_VELO_IN_ROTATION
51
52/*-------------------------------------------------------------------------------------------------*/
53/*-------------------------------------------------------------------------------------------------*/
54/*-------------------------------------------------------------------------------------------------*/
55
56/// @brief Run-time-inspectable concatenation of every experimental flag that
57/// was active during compilation. Accessed via `DNDS::GetSetVersionName` or
58/// directly from diagnostics printers.
59static const std::string DNDS_Experimentals_State = std::string("DNDS_Experimentals ")
60#ifdef USE_ECCENTRIC_COMB_POW_2
61 + " USE_ECCENTRIC_COMB_POW_2 "
62#endif
63#ifdef USE_LOCAL_COORD_CURVILINEAR
64 + " USE_LOCAL_COORD_CURVILINEAR "
65#endif
66#ifdef PRINT_EVERY_VR_JACOBI_ITER_INCREMENT
67 + " PRINT_EVERY_VR_JACOBI_ITER_INCREMENT "
68#endif
69#ifdef USE_FLUX_BALANCE_TERM
70 + " USE_FLUX_BALANCE_TERM "
71#endif
72#ifdef USE_ENTROPY_FIXED_LAMBDA_IN_SA
73 + " USE_ENTROPY_FIXED_LAMBDA_IN_SA "
74#endif
75#ifdef USE_FIX_ZERO_SA_NUT_AT_WALL
76 + " USE_FIX_ZERO_SA_NUT_AT_WALL "
77#endif
78#ifdef USE_SIGN_MINUS_AT_ROE_M4_FLUX
79 + " USE_SIGN_MINUS_AT_ROE_M4_FLUX "
80#endif
81#ifdef USE_FIRST_ORDER_VISCOUS_WALL_DELTA_IN_VR_WEIGHT
82 + " USE_FIRST_ORDER_VISCOUS_WALL_DELTA_IN_VR_WEIGHT "
83#endif
84#ifdef USE_FIRST_ORDER_WALL_DIST
85 + " USE_FIRST_ORDER_WALL_DIST "
86#endif
87#ifdef USE_MG_O1_NO_VISCOUS
88 + " USE_MG_O1_NO_VISCOUS "
89#endif
90#ifdef USE_MG_O1_LLF_FLUX
91 + " USE_MG_O1_LLF_FLUX "
92#endif
93#ifdef USE_NS_SA_NEGATIVE_MODEL
94 + " USE_NS_SA_NEGATIVE_MODEL "
95#endif
96#ifdef USE_NS_SA_NUT_REDUCED_ORDER
97 + " USE_NS_SA_NUT_REDUCED_ORDER "
98#endif
99#ifdef USE_NS_SA_ALLOW_NEGATIVE_MEAN
100 + " USE_NS_SA_ALLOW_NEGATIVE_MEAN "
101#endif
102#ifdef USE_ISOTROPIC_OPTHQM
103 + " USE_ISOTROPIC_OPTHQM "
104#endif
105#ifdef USE_ABS_VELO_IN_ROTATION
106 + " USE_ABS_VELO_IN_ROTATION "
107#endif
108 ;