mirror of
https://codeberg.org/vcbferreira/NuFI_deal.ii
synced 2026-08-12 14:33:18 +02:00
Parameters loaded from lua file without rebuilding
This commit is contained in:
+74
-33
@@ -1,60 +1,101 @@
|
||||
#ifndef PARAMETERS_H
|
||||
#define PARAMETERS_H
|
||||
|
||||
#include <cmath>
|
||||
#include <cstddef>
|
||||
#include <cstdlib>
|
||||
#include <string>
|
||||
|
||||
#include "lua_config.h"
|
||||
|
||||
namespace Parameters {
|
||||
constexpr unsigned int DIMENSION = 1;
|
||||
|
||||
constexpr double X_DOMAIN_LEFT = 0.0;
|
||||
constexpr double X_DOMAIN_RIGHT = 4 * M_PI;
|
||||
constexpr double LX = std::abs(X_DOMAIN_RIGHT - X_DOMAIN_LEFT);
|
||||
constexpr double LX_INV = 1 / LX;
|
||||
inline unsigned int DIMENSION;
|
||||
|
||||
constexpr double V_DOMAIN_LEFT = -10.;
|
||||
constexpr double V_DOMAIN_RIGHT = 10.;
|
||||
inline double X_DOMAIN_LEFT;
|
||||
inline double X_DOMAIN_RIGHT;
|
||||
inline double LX;
|
||||
inline double LX_INV;
|
||||
|
||||
constexpr unsigned int NV = 256;
|
||||
constexpr double DV = std::abs(V_DOMAIN_RIGHT - V_DOMAIN_LEFT) / NV;
|
||||
inline double V_DOMAIN_LEFT;
|
||||
inline double V_DOMAIN_RIGHT;
|
||||
|
||||
inline unsigned int NV;
|
||||
inline double DV;
|
||||
|
||||
// f0_TYPE:
|
||||
// 0 -> twos-stream
|
||||
// 1 -> landau-damping
|
||||
// 2 -> maxwellian
|
||||
// 3 -> bump-on-tail
|
||||
constexpr size_t f0_TYPE = 1;
|
||||
inline size_t f0_TYPE;
|
||||
|
||||
// deal.ii options
|
||||
constexpr unsigned int GLOBAL_REFINEMENT = 8;
|
||||
constexpr unsigned int FE_DEGREE = 3;
|
||||
constexpr unsigned int CONVERGENCE_ITERATIONS = 10000;
|
||||
constexpr double CONVERGENCE_LIMIT = 1e-8;
|
||||
inline unsigned int GLOBAL_REFINEMENT;
|
||||
inline unsigned int FE_DEGREE;
|
||||
inline unsigned int CONVERGENCE_ITERATIONS;
|
||||
inline double CONVERGENCE_LIMIT;
|
||||
|
||||
// Adaptive refinement options
|
||||
constexpr unsigned int REFINE_FREQUENCY = 50;
|
||||
constexpr double REFINEMENT_TOP_FRACTION = 0.8;
|
||||
constexpr double REFINEMENT_BOTTOM_FRACTION = 0.1;
|
||||
inline unsigned int REFINE_FREQUENCY;
|
||||
inline double REFINEMENT_TOP_FRACTION;
|
||||
inline double REFINEMENT_BOTTOM_FRACTION;
|
||||
|
||||
// Gauge options
|
||||
constexpr double GAUGE_DOMAIN_LEFT = 3.2;
|
||||
constexpr double GAUGE_DOMAIN_RIGHT = 3.8;
|
||||
|
||||
constexpr double EPS = 0.01;
|
||||
constexpr double WAVE_NR = 0.5;
|
||||
constexpr double F0_FACTOR = 0.39894228040143267793994; // 1/sqrt(2pi)
|
||||
inline double EPS;
|
||||
inline double WAVE_NR;
|
||||
inline double F0_FACTOR; // 1/sqrt(2pi)
|
||||
|
||||
// NUFI options
|
||||
constexpr double DT = 1. / 10.;
|
||||
constexpr unsigned int TMAX = 100;
|
||||
inline double DT;
|
||||
inline unsigned int TMAX;
|
||||
|
||||
// Plotting options
|
||||
constexpr int PLOT_FREQUENCY = 10;
|
||||
constexpr size_t PLOT_NX = 512;
|
||||
constexpr double PLOT_DX = LX / PLOT_NX;
|
||||
const std::string PLOT_DIR = "results/";
|
||||
inline int PLOT_FREQUENCY;
|
||||
inline size_t PLOT_NX;
|
||||
inline double PLOT_DX;
|
||||
inline std::string PLOT_DIR;
|
||||
|
||||
inline void load_lua_config(const std::string &luaFilePath) {
|
||||
LuaConfig config(luaFilePath, "parameters");
|
||||
|
||||
DIMENSION = static_cast<unsigned int>(config.get<int>("DIMENSION"));
|
||||
|
||||
X_DOMAIN_LEFT = config.get<double>("X_DOMAIN_LEFT");
|
||||
X_DOMAIN_RIGHT = config.get<double>("X_DOMAIN_RIGHT");
|
||||
LX = config.get<double>("LX");
|
||||
LX_INV = config.get<double>("LX_INV");
|
||||
|
||||
V_DOMAIN_LEFT = config.get<double>("V_DOMAIN_LEFT");
|
||||
V_DOMAIN_RIGHT = config.get<double>("V_DOMAIN_RIGHT");
|
||||
|
||||
NV = static_cast<unsigned int>(config.get<int>("NV"));
|
||||
DV = config.get<double>("DV");
|
||||
|
||||
f0_TYPE = static_cast<size_t>(config.get<int>("f0_TYPE"));
|
||||
|
||||
GLOBAL_REFINEMENT =
|
||||
static_cast<unsigned int>(config.get<int>("GLOBAL_REFINEMENT"));
|
||||
FE_DEGREE = static_cast<unsigned int>(config.get<int>("FE_DEGREE"));
|
||||
CONVERGENCE_ITERATIONS =
|
||||
static_cast<unsigned int>(config.get<int>("CONVERGENCE_ITERATIONS"));
|
||||
CONVERGENCE_LIMIT = config.get<double>("CONVERGENCE_LIMIT");
|
||||
|
||||
REFINE_FREQUENCY =
|
||||
static_cast<unsigned int>(config.get<int>("REFINE_FREQUENCY"));
|
||||
REFINEMENT_TOP_FRACTION = config.get<double>("REFINEMENT_TOP_FRACTION");
|
||||
REFINEMENT_BOTTOM_FRACTION = config.get<double>("REFINEMENT_BOTTOM_FRACTION");
|
||||
|
||||
EPS = config.get<double>("EPS");
|
||||
WAVE_NR = config.get<double>("WAVE_NR");
|
||||
F0_FACTOR = config.get<double>("F0_FACTOR");
|
||||
|
||||
DT = config.get<double>("DT");
|
||||
TMAX = static_cast<unsigned int>(config.get<int>("TMAX"));
|
||||
|
||||
PLOT_FREQUENCY = config.get<int>("PLOT_FREQUENCY");
|
||||
PLOT_NX = static_cast<size_t>(config.get<int>("PLOT_NX"));
|
||||
PLOT_DX = config.get<double>("PLOT_DX");
|
||||
PLOT_DIR = config.get<std::string>("PLOT_DIR");
|
||||
}
|
||||
|
||||
} // namespace Parameters
|
||||
|
||||
#endif
|
||||
#endif // PARAMETERS_H
|
||||
|
||||
Reference in New Issue
Block a user