1#ifndef SIMULATION_CLASS_UNIT_TESTING_H
2#define SIMULATION_CLASS_UNIT_TESTING_H
38 std::string m_init_str{
"InitChain"};
39 std::string m_preTs_str{
"PreTimeStepChain"};
40 std::string m_postTs_str{
"PostTimeStepChain"};
41 std::string m_postNonLinIter_str{
"PostNonLinIterChain"};
42 std::string m_output_str{
"OutputChain"};
45 std::vector<std::shared_ptr<GenericManagingModule<T>>> m_all_modules{};
46 std::vector<std::shared_ptr<GenericSubmodule<T>>> m_all_submodules{};
54 (std::filesystem::path(
PROJECT_ROOT) /
"build/tests/ini_files/");
58 std::vector<std::string>
lines;
64 if (
line.rfind(
"ini_folder_path =", 0) == 0)
73 for (
const auto&
l :
lines)
87 this->m_simulation_config.loadUserInput(
88 this->m_simulation_config.getStringParameters(
"ini_folder_path") +
user_ini);
94 this->setAbsoluteDefaultIniPath();
113 this, this->m_simulation_config.getBoolParameters(
"use_shape_file"),
114 this->m_simulation_config.getStringParameters(
"spatial_dimension"));
121 <<
"[SimulationClassUnitTesting]: Failed creating ShapeBase object from ShapeFactory "
124 static_cast<std::string
>(
125 "[SimulationClassUnitTesting]: Failed creating ShapeBase object from ShapeFactory ")
126 +
static_cast<std::string
>(
e.what()));
128 catch (
const std::runtime_error&
e)
132 <<
"[SimulationClassUnitTesting]: Failed creating ShapeBase object from ShapeFactory "
134 throw std::runtime_error(
135 static_cast<std::string
>(
136 "[SimulationClassUnitTesting]: Failed creating ShapeBase object from ShapeFactory ")
137 +
static_cast<std::string
>(
e.what()));
146 this->m_simulation_config.getStringParameters(
"spatial_dimension"));
153 <<
"[SimulationClassUnitTesting]: Failed creating GridBase object from GridFactory "
156 static_cast<std::string
>(
157 "[SimulationClassUnitTesting]: Failed creating GridBase object from GridFactory ")
158 +
static_cast<std::string
>(
e.what()));
160 catch (
const std::runtime_error&
e)
164 <<
"[SimulationClassUnitTesting]: Failed creating GridBase object from GridFactory "
166 throw std::runtime_error(
167 static_cast<std::string
>(
168 "[SimulationClassUnitTesting]: Failed creating GridBase object from GridFactory ")
169 +
static_cast<std::string
>(
e.what()));
174 this->m_field_map.insert(
176 std::valarray<double>(
177 this->m_simulation_config.getDoubleParameters(
"initial_temperature"),
178 this->m_simulation_config.getIntParameters(
"numerical_layers")
179 *
this->m_simulation_config.getIntParameters(
"number_of_facets"))});
184 <<
"[SimulationClassUnitTesting]: Failed to create main independent variable field "
185 "(usually temperature) "
188 static_cast<std::string
>(
"[SimulationClassUnitTesting]: Failed to create main "
189 "independent variable field (usually temperature) ")
190 +
static_cast<std::string
>(
e.what()));
196 this, this->m_simulation_config.getStringVectorParameters(
"managing_modules"));
204 catch (
const std::runtime_error&
e)
206 std::cerr <<
"[SimulationClassUnitTesting]: Failed at module creation step " <<
e.what()
208 throw std::runtime_error(
209 static_cast<std::string
>(
210 "[SimulationClassUnitTesting]: Failed at module creation step ")
211 +
static_cast<std::string
>(
e.what()));
214 catch (
const std::runtime_error&
e)
216 std::cerr <<
"[SimulationClassUnitTesting]: Failed at module creation step " <<
e.what()
218 throw std::runtime_error(
219 static_cast<std::string
>(
220 "[SimulationClassUnitTesting]: Failed at module creation step ")
221 +
static_cast<std::string
>(
e.what()));
228 catch (
const std::runtime_error&
e)
230 std::cerr <<
"[SimulationClassUnitTesting]: Failed at submodule creation step " <<
e.what()
232 throw std::runtime_error(
233 static_cast<std::string
>(
234 "[SimulationClassUnitTesting]: Failed at submodule creation step ")
235 +
static_cast<std::string
>(
e.what()));
241 m_global_chain.autoLoader(
242 m_all_modules, this->m_simulation_config.getStringVectorParameters(
"managing_modules"));
244 catch (
const std::exception&
e)
246 std::cerr <<
"[SimulationClassUnitTesting]: Warning - Failed to load managing modules from "
249 <<
"Falling back to loading all modules.\n";
250 m_global_chain.autoLoader(m_all_modules);
255 runSetup<T>(m_all_modules, m_all_submodules, m_global_chain.getManagingModuleNames());
261 std::cerr <<
"[SimulationClassDefault]: Failed at setting up the modules " <<
e.what()
263 throw std::runtime_error(
264 static_cast<std::string
>(
"[SimulationClassDefault]: Failed at setting up the modules ")
265 +
static_cast<std::string
>(
e.what()));
280 this, this->m_simulation_config.getBoolParameters(
"use_shape_file"),
281 this->m_simulation_config.getStringParameters(
"spatial_dimension"));
288 <<
"[SimulationClassUnitTesting]: Failed creating ShapeBase object from ShapeFactory "
291 static_cast<std::string
>(
292 "[SimulationClassUnitTesting]: Failed creating ShapeBase object from ShapeFactory ")
293 +
static_cast<std::string
>(
e.what()));
295 catch (
const std::runtime_error&
e)
299 <<
"[SimulationClassUnitTesting]: Failed creating ShapeBase object from ShapeFactory "
301 throw std::runtime_error(
302 static_cast<std::string
>(
303 "[SimulationClassUnitTesting]: Failed creating ShapeBase object from ShapeFactory ")
304 +
static_cast<std::string
>(
e.what()));
313 this->m_simulation_config.getStringParameters(
"spatial_dimension"));
320 <<
"[SimulationClassUnitTesting]: Failed creating GridBase object from GridFactory "
323 static_cast<std::string
>(
324 "[SimulationClassUnitTesting]: Failed creating GridBase object from GridFactory ")
325 +
static_cast<std::string
>(
e.what()));
327 catch (
const std::runtime_error&
e)
331 <<
"[SimulationClassUnitTesting]: Failed creating GridBase object from GridFactory "
333 throw std::runtime_error(
334 static_cast<std::string
>(
335 "[SimulationClassUnitTesting]: Failed creating GridBase object from GridFactory ")
336 +
static_cast<std::string
>(
e.what()));
341 this->m_field_map.insert(
343 std::valarray<double>(
344 this->m_simulation_config.getDoubleParameters(
"initial_temperature"),
345 this->m_simulation_config.getIntParameters(
"numerical_layers")
346 *
this->m_simulation_config.getIntParameters(
"number_of_facets"))});
351 <<
"[SimulationClassUnitTesting]: Failed to create main independent variable field "
352 "(usually temperature) "
355 static_cast<std::string
>(
"[SimulationClassUnitTesting]: Failed to create main "
356 "independent variable field (usually temperature) ")
357 +
static_cast<std::string
>(
e.what()));
363 this, this->m_simulation_config.getStringVectorParameters(
"managing_modules"));
371 catch (
const std::runtime_error&
e)
373 std::cerr <<
"[SimulationClassUnitTesting]: Failed at module creation step " <<
e.what()
375 throw std::runtime_error(
376 static_cast<std::string
>(
377 "[SimulationClassUnitTesting]: Failed at module creation step ")
378 +
static_cast<std::string
>(
e.what()));
381 catch (
const std::runtime_error&
e)
383 std::cerr <<
"[SimulationClassUnitTesting]: Failed at module creation step " <<
e.what()
385 throw std::runtime_error(
386 static_cast<std::string
>(
387 "[SimulationClassUnitTesting]: Failed at module creation step ")
388 +
static_cast<std::string
>(
e.what()));
395 catch (
const std::runtime_error&
e)
397 std::cerr <<
"[SimulationClassUnitTesting]: Failed at submodule creation step " <<
e.what()
399 throw std::runtime_error(
400 static_cast<std::string
>(
401 "[SimulationClassUnitTesting]: Failed at submodule creation step ")
402 +
static_cast<std::string
>(
e.what()));
408 m_global_chain.autoLoader(
409 m_all_modules, this->m_simulation_config.getStringVectorParameters(
"managing_modules"));
411 catch (
const std::exception&
e)
413 std::cerr <<
"[SimulationClassUnitTesting]: Warning - Failed to load managing modules from "
416 <<
"Falling back to loading all modules.\n";
417 m_global_chain.autoLoader(m_all_modules);
422 runSetup<T>(m_all_modules, m_all_submodules, m_global_chain.getManagingModuleNames());
428 std::cerr <<
"[SimulationClassDefault]: Failed at setting up the modules " <<
e.what()
430 throw std::runtime_error(
431 static_cast<std::string
>(
"[SimulationClassDefault]: Failed at setting up the modules ")
432 +
static_cast<std::string
>(
e.what()));
465 this->setInitChainStr();
466 m_global_chain.runChain(this->m_current_position);
Concrete implementation of a matrix class representing a Compressed Sparse Rows (CSR) matrix....
Definition CsrMatrix.h:37
CsrSparseMatrix()
Constructor for an empty CsrSparseMatrix object. Leaves all storage arrays empty but sets the flag to...
Definition CsrMatrix.h:94
std::pair< int, int > size() const
Function that returns the size of the matrix as a pair in (rows, columns) format.
Definition GenericMatrix.h:120
static std::vector< std::shared_ptr< GenericManagingModule< T > > > createAllSelectedManagingModules(SimulationClassBase< T > *sim_pointer, const std::vector< std::string > &list_of_mananging_modules_to_load)
Only creates instances of managing modules that have been specified by the user. (This allows only ha...
Definition ModuleFactory.h:200
static std::vector< std::shared_ptr< GenericSubmodule< T > > > createAllSelectedSubmodules(SimulationClassBase< T > *sim_pointer, const std::vector< std::shared_ptr< GenericManagingModule< T > > > &loaded_managing_modules)
Only creates submodules that are used within the simulation. Iteratively requests the submodule list ...
Definition ModuleFactory.h:229
static std::vector< std::shared_ptr< GenericManagingModule< T > > > createAllManagingModules(SimulationClassBase< T > *sim_pointer)
Creates every module in the module registry.
Definition ModuleFactory.h:158
Definition SimulationClassBase.h:19
Definition SimulationClassUnitTesting.h:22
bool runModuleCheck(const std::vector< std::string > &managing_modules, const std::vector< std::string > &submodules)
Definition SimulationClassUnitTesting.h:271
SimulationClassUnitTesting()
Definition SimulationClassUnitTesting.h:92
int runInitChain()
Definition SimulationClassUnitTesting.h:463
void setAbsoluteDefaultIniPath()
Definition SimulationClassUnitTesting.h:50
void setUserIni(const std::string &user_ini) override
Definition SimulationClassUnitTesting.h:85
int run() override
Definition SimulationClassUnitTesting.h:105
~SimulationClassUnitTesting() override=default