#ifndef PARAMETERS_H #define PARAMETERS_H #include #include #include "lua_config.h" namespace Parameters { inline unsigned int DIMENSION; inline double X_DOMAIN_LEFT; inline double X_DOMAIN_RIGHT; inline double LX; inline double LX_INV; 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 inline size_t f0_TYPE; // deal.ii options inline unsigned int GLOBAL_REFINEMENT; inline unsigned int FE_DEGREE; inline unsigned int CONVERGENCE_ITERATIONS; inline double CONVERGENCE_LIMIT; // Adaptive refinement options inline unsigned int REFINE_FREQUENCY; inline double REFINEMENT_TOP_FRACTION; inline double REFINEMENT_BOTTOM_FRACTION; inline double EPS; inline double WAVE_NR; inline double F0_FACTOR; // 1/sqrt(2pi) // NUFI options inline double DT; inline unsigned int TMAX; // Plotting options 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(config.get("DIMENSION")); X_DOMAIN_LEFT = config.get("X_DOMAIN_LEFT"); X_DOMAIN_RIGHT = config.get("X_DOMAIN_RIGHT"); LX = config.get("LX"); LX_INV = config.get("LX_INV"); V_DOMAIN_LEFT = config.get("V_DOMAIN_LEFT"); V_DOMAIN_RIGHT = config.get("V_DOMAIN_RIGHT"); NV = static_cast(config.get("NV")); DV = config.get("DV"); f0_TYPE = static_cast(config.get("f0_TYPE")); GLOBAL_REFINEMENT = static_cast(config.get("GLOBAL_REFINEMENT")); FE_DEGREE = static_cast(config.get("FE_DEGREE")); CONVERGENCE_ITERATIONS = static_cast(config.get("CONVERGENCE_ITERATIONS")); CONVERGENCE_LIMIT = config.get("CONVERGENCE_LIMIT"); REFINE_FREQUENCY = static_cast(config.get("REFINE_FREQUENCY")); REFINEMENT_TOP_FRACTION = config.get("REFINEMENT_TOP_FRACTION"); REFINEMENT_BOTTOM_FRACTION = config.get("REFINEMENT_BOTTOM_FRACTION"); EPS = config.get("EPS"); WAVE_NR = config.get("WAVE_NR"); F0_FACTOR = config.get("F0_FACTOR"); DT = config.get("DT"); TMAX = static_cast(config.get("TMAX")); PLOT_FREQUENCY = config.get("PLOT_FREQUENCY"); PLOT_NX = static_cast(config.get("PLOT_NX")); PLOT_DX = config.get("PLOT_DX"); PLOT_DIR = config.get("PLOT_DIR"); } } // namespace Parameters #endif // PARAMETERS_H