61 lines
2 KiB
C++
61 lines
2 KiB
C++
#pragma once
|
|
#include <string>
|
|
#include <unordered_map>
|
|
#include <vector>
|
|
|
|
class Config {
|
|
public:
|
|
Config(std::string file_name);
|
|
|
|
double eps;
|
|
double t_end;
|
|
double dt_disk;
|
|
double dt_contr;
|
|
double dt_bh;
|
|
double eta;
|
|
std::string input_file_name;
|
|
int devices_per_node;
|
|
bool dt_min_warning;
|
|
|
|
bool output_hdf5;
|
|
bool output_hdf5_double_precision;
|
|
int output_ascii_precision;
|
|
int output_extra_mode;
|
|
|
|
int live_smbh_count;
|
|
double live_smbh_custom_eps;
|
|
bool live_smbh_output;
|
|
bool live_smbh_neighbor_output;
|
|
int live_smbh_neighbor_number;
|
|
|
|
bool binary_smbh_pn;
|
|
bool binary_smbh_influence_sphere_output;
|
|
double binary_smbh_influence_radius_factor;
|
|
std::vector<int> pn_usage;
|
|
double pn_c;
|
|
|
|
bool ext_units_physical;
|
|
double unit_mass;
|
|
double unit_length;
|
|
double ext_m_bulge;
|
|
double ext_b_bulge;
|
|
double ext_m_disk;
|
|
double ext_a_disk;
|
|
double ext_b_disk;
|
|
double ext_m_halo_plummer;
|
|
double ext_b_halo_plummer;
|
|
double ext_log_halo_r;
|
|
double ext_log_halo_v;
|
|
double ext_dehnen_m;
|
|
double ext_dehnen_r;
|
|
double ext_dehnen_gamma;
|
|
|
|
private:
|
|
using Dictionary = std::unordered_map<std::string,std::string>;
|
|
Dictionary read_config_file(const std::string file_name);
|
|
std::string strip(const std::string str);
|
|
template<typename T> T string_cast(const std::string str);
|
|
template<typename T> T get_parameter(Dictionary dictionary, std::string name);
|
|
template<typename T> T get_parameter(Dictionary dictionary, std::string name, T default_value);
|
|
void error_checking();
|
|
};
|