My Project
readParameters.cpp
Go to the documentation of this file.
1 #include <iostream>
2 #include "readParameters.hpp"
3 
4 // Test to put libraries in hpp file
5 
6 // #include <stdio.h> /* defines FILENAME_MAX */
7 
8 // #include <unistd.h>
9 // #define GetCurrentDir getcwd
10 
11 
12 
13 using namespace std;
14 
15 
17 {
18 
19 }
20 
21 Parameters::Parameters(string inputPath){
22  cout << inputPath << endl;
23  filePath = inputPath;
24  loadFile();
25  assignParameters();
26 }
27 
29  config = YAML::LoadFile("doc/yaml/config.yaml");
30  //config_categories = config["config_parameters_path"];
31  //config_parameteres = YAML::LoadFile(config["config_parameters_path"].as<string>());
32  read_parameters = YAML::LoadFile(filePath);
33  read_default_parameters = YAML::LoadFile(config["config_parameters_default_path"].as<string>());
34 }
35 
36 
37 
39 
40  parameters = read_parameters["Parameters"];
41  debug_parameters = read_parameters["Debug"];
42 
43  default_parameters = read_default_parameters["Parameters"];
44  default_debug_parameters = read_default_parameters["Debug"];
45 
46  // global constants
47 
48  dt = readParameterDouble("dt");
49  seed = readParameterInt("seed");
50  num_events = readParameterInt("num_events");
51 
52  // local constants
53  N = readParameterInt("N");
54  max_time = readParameterDouble("max_time");
55  slider_speed = readParameterDouble("slider_speed");
56  increment = readParameterDouble("increment");
57  interval = readParameterDouble("interval");
58 
59  file_name = readParameterString("file_name");
60 
61  progress_indicator = readParameterBool("progress_indicator");
62 
63  m_F0 = readParameterDouble("m_F0");
64  m_alpha = readParameterDouble("m_alpha");
65  m_sigma = readParameterDouble("m_sigma");
66  m_mass_x = readParameterDouble("m_mass_x");
67  m_scale_mass = readParameterDouble("m_scale_mass");
68  m_zeta = readParameterDouble("m_zeta");
69  m_k_P0 = readParameterDouble("m_k_P0");
70  m_scale_P = readParameterDouble("m_scale_P");
71  m_scale_C = readParameterDouble("m_scale_C");
72 
73  m_t = readParameterDouble("m_t");
74  m_v0 = readParameterDouble("m_v0");
75  m_u_min = readParameterDouble("m_u_min");
76 
77  loggedBlocks = readParameterIntList("blocks");
78 
79  start_speed_continuous = readParameterDouble("start_speed_continuous");
80  end_speed_continuous = readParameterDouble("end_speed_continuous");
81 
82  save_interval_dt = readParameterInt("save_interval_dt");
83  threshold_speed = readParameterDouble("threshold_speed");
84 
85  debug_no_friction = readDebugParameterBool("debug_no_friction");
86  debug_no_neighbor_springs = readDebugParameterBool("debug_no_neighbor_springs");
87  debug_no_stationary_springs = readDebugParameterBool("debug_no_stationary_springs");
88  debug_no_damper = readDebugParameterBool("debug_no_damper");
89  debug_no_min_speed = readDebugParameterBool("debug_no_min_speed");
90  debug_no_pad = readDebugParameterBool("debug_no_pad");
91  debug_negative_intial_values = readDebugParameterBool("debug_negative_initial_values");
92  debug_no_random_displacements = readDebugParameterBool("debug_no_random_displacements");
93  debug_only_negative_initial = readDebugParameterBool("debug_only_negative_initial");
94  debug_special_phi = readDebugParameterBool("debug_special_phi");
95  debug_pad_as_block = readDebugParameterBool("debug_pad_as_block");
96  debug_stop_slider = readDebugParameterBool("debug_stop_slider");
97  debug_stick_blocks = readDebugParameterBool("debug_stick_blocks");
98  debug_write_blocks = readDebugParameterBool("debug_write_blocks");
99  debug_only_write_friction = readDebugParameterBool("debug_only_write_friction");
100  debug_continuous_slider_speed = readDebugParameterBool("debug_continuous_slider_speed");
101  debug_one_degree_freedom_mode = readDebugParameterBool("debug_one_degree_freedom_mode");
102 
103 }
104 
105 
106 int Parameters::readParameterInt(string parameter_name){
107  if(!parameters[parameter_name]){
108  return(default_parameters[parameter_name].as<int>());
109  }
110  return parameters[parameter_name].as<int>();
111 }
112 
113 double Parameters::readParameterDouble(string parameter_name){
114  if(!parameters[parameter_name]){
115  return(default_parameters[parameter_name].as<double>());
116  }
117  return parameters[parameter_name].as<double>();
118 }
119 
120 string Parameters::readParameterString(string parameter_name){
121  if(!parameters[parameter_name]){
122  return(default_parameters[parameter_name].as<string>());
123  }
124  return parameters[parameter_name].as<string>();
125 }
126 
127 bool Parameters::readParameterBool(string parameter_name){
128  if(!parameters[parameter_name]){
129  return(default_parameters[parameter_name].as<bool>());
130  }
131  return parameters[parameter_name].as<bool>();
132 }
133 
134 arma::uvec Parameters::readParameterIntList(string parameter_name){
135  if(!parameters[parameter_name]){
136  return(yamlListToArmadilloVector(default_parameters[parameter_name]));
137  }
138  return(yamlListToArmadilloVector(parameters[parameter_name]));
139 }
140 
141 arma::uvec Parameters::yamlListToArmadilloVector(YAML::Node yamlList){
142  arma::uvec armaVector(yamlList.size());
143  for(size_t i = 0; i < yamlList.size(); i++){
144  armaVector[i] = yamlList[i].as<int>();
145  }
146  return armaVector;
147 }
148 
149 // Used fir debugging purposes in simulation //
150 
151 bool Parameters::readDebugParameterBool(string debug_parameter_name){
152  if(!debug_parameters[debug_parameter_name]){
153  return(default_debug_parameters[debug_parameter_name].as<bool>());
154  }
155  return debug_parameters[debug_parameter_name].as<bool>();
156 }
157 
159 
160 // Used for debugging purposes //
161 
162 // int DebugParameters::printCurrentDirectory(){
163 // char cCurrentPath[FILENAME_MAX];
164 
165 // if (!GetCurrentDir(cCurrentPath, sizeof(cCurrentPath)))
166 // {
167 // return errno;
168 // }
169 // cout << "not current" << endl;
170 
171 // cCurrentPath[sizeof(cCurrentPath) - 1] = '\0'; /* not really required */
172 
173 // cout << "The current working directory is " << cCurrentPath << endl;
174 // }
175 
177  cout << read_parameters << endl;
178 }
179 
180 // Used for debugging purposes //
181 
183  //printCurrentDirectory();
184  printLoadedFile();
185  loggedBlocks.print();
186 }
187 
void assignParameters()
bool readParameterBool(string parameter_name)
arma::uvec yamlListToArmadilloVector(YAML::Node yamlList)
int readParameterInt(string parameter_name)
string readParameterString(string parameter_name)
arma::uvec readParameterIntList(string parameter_name)
def loadFile(run_name, shared_names, selected='pad_position.csv')
bool readDebugParameterBool(string debug_parameter_name)
double readParameterDouble(string parameter_name)