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{};
59 std::vector<std::string>
lines;
64 throw std::runtime_error(
"Could not open default.ini at: " +
default_ini_path.string());
71 if (
line.rfind(
"ini_folder_path =", 0) == 0)
83 for (
const auto&
l :
lines)
98 this->m_simulation_config.loadUserInput(
99 this->m_simulation_config.getStringParameters(
"ini_folder_path") +
user_ini);
105 this->setAbsoluteDefaultIniPath();
124 this, this->m_simulation_config.getBoolParameters(
"use_shape_file"),
125 this->m_simulation_config.getStringParameters(
"spatial_dimension"));
132 <<
"[SimulationClassUnitTesting]: Failed creating ShapeBase object from ShapeFactory "
135 static_cast<std::string
>(
136 "[SimulationClassUnitTesting]: Failed creating ShapeBase object from ShapeFactory ")
137 +
static_cast<std::string
>(
e.what()));
139 catch (
const std::runtime_error&
e)
143 <<
"[SimulationClassUnitTesting]: Failed creating ShapeBase object from ShapeFactory "
145 throw std::runtime_error(
146 static_cast<std::string
>(
147 "[SimulationClassUnitTesting]: Failed creating ShapeBase object from ShapeFactory ")
148 +
static_cast<std::string
>(
e.what()));
157 this->m_simulation_config.getStringParameters(
"spatial_dimension"));
164 <<
"[SimulationClassUnitTesting]: Failed creating GridBase object from GridFactory "
167 static_cast<std::string
>(
168 "[SimulationClassUnitTesting]: Failed creating GridBase object from GridFactory ")
169 +
static_cast<std::string
>(
e.what()));
171 catch (
const std::runtime_error&
e)
175 <<
"[SimulationClassUnitTesting]: Failed creating GridBase object from GridFactory "
177 throw std::runtime_error(
178 static_cast<std::string
>(
179 "[SimulationClassUnitTesting]: Failed creating GridBase object from GridFactory ")
180 +
static_cast<std::string
>(
e.what()));
185 this->m_field_map.insert(
187 std::valarray<double>(
188 this->m_simulation_config.getDoubleParameters(
"initial_temperature"),
189 this->m_simulation_config.getIntParameters(
"numerical_layers")
190 *
this->m_simulation_config.getIntParameters(
"number_of_facets"))});
195 <<
"[SimulationClassUnitTesting]: Failed to create main independent variable field "
196 "(usually temperature) "
199 static_cast<std::string
>(
"[SimulationClassUnitTesting]: Failed to create main "
200 "independent variable field (usually temperature) ")
201 +
static_cast<std::string
>(
e.what()));
207 this, this->m_simulation_config.getStringVectorParameters(
"managing_modules"));
215 catch (
const std::runtime_error&
e)
217 std::cerr <<
"[SimulationClassUnitTesting]: Failed at module creation step " <<
e.what()
219 throw std::runtime_error(
220 static_cast<std::string
>(
221 "[SimulationClassUnitTesting]: Failed at module creation step ")
222 +
static_cast<std::string
>(
e.what()));
225 catch (
const std::runtime_error&
e)
227 std::cerr <<
"[SimulationClassUnitTesting]: Failed at module creation step " <<
e.what()
229 throw std::runtime_error(
230 static_cast<std::string
>(
231 "[SimulationClassUnitTesting]: Failed at module creation step ")
232 +
static_cast<std::string
>(
e.what()));
239 catch (
const std::runtime_error&
e)
241 std::cerr <<
"[SimulationClassUnitTesting]: Failed at submodule creation step " <<
e.what()
243 throw std::runtime_error(
244 static_cast<std::string
>(
245 "[SimulationClassUnitTesting]: Failed at submodule creation step ")
246 +
static_cast<std::string
>(
e.what()));
252 m_global_chain.autoLoader(
253 m_all_modules, this->m_simulation_config.getStringVectorParameters(
"managing_modules"));
255 catch (
const std::exception&
e)
257 std::cerr <<
"[SimulationClassUnitTesting]: Warning - Failed to load managing modules from "
260 <<
"Falling back to loading all modules.\n";
261 m_global_chain.autoLoader(m_all_modules);
266 runSetup<T>(m_all_modules, m_all_submodules, m_global_chain.getManagingModuleNames());
272 std::cerr <<
"[SimulationClassDefault]: Failed at setting up the modules " <<
e.what()
274 throw std::runtime_error(
275 static_cast<std::string
>(
"[SimulationClassDefault]: Failed at setting up the modules ")
276 +
static_cast<std::string
>(
e.what()));
291 this, this->m_simulation_config.getBoolParameters(
"use_shape_file"),
292 this->m_simulation_config.getStringParameters(
"spatial_dimension"));
299 <<
"[SimulationClassUnitTesting]: Failed creating ShapeBase object from ShapeFactory "
302 static_cast<std::string
>(
303 "[SimulationClassUnitTesting]: Failed creating ShapeBase object from ShapeFactory ")
304 +
static_cast<std::string
>(
e.what()));
306 catch (
const std::runtime_error&
e)
310 <<
"[SimulationClassUnitTesting]: Failed creating ShapeBase object from ShapeFactory "
312 throw std::runtime_error(
313 static_cast<std::string
>(
314 "[SimulationClassUnitTesting]: Failed creating ShapeBase object from ShapeFactory ")
315 +
static_cast<std::string
>(
e.what()));
324 this->m_simulation_config.getStringParameters(
"spatial_dimension"));
331 <<
"[SimulationClassUnitTesting]: Failed creating GridBase object from GridFactory "
334 static_cast<std::string
>(
335 "[SimulationClassUnitTesting]: Failed creating GridBase object from GridFactory ")
336 +
static_cast<std::string
>(
e.what()));
338 catch (
const std::runtime_error&
e)
342 <<
"[SimulationClassUnitTesting]: Failed creating GridBase object from GridFactory "
344 throw std::runtime_error(
345 static_cast<std::string
>(
346 "[SimulationClassUnitTesting]: Failed creating GridBase object from GridFactory ")
347 +
static_cast<std::string
>(
e.what()));
352 this->m_field_map.insert(
354 std::valarray<double>(
355 this->m_simulation_config.getDoubleParameters(
"initial_temperature"),
356 this->m_simulation_config.getIntParameters(
"numerical_layers")
357 *
this->m_simulation_config.getIntParameters(
"number_of_facets"))});
362 <<
"[SimulationClassUnitTesting]: Failed to create main independent variable field "
363 "(usually temperature) "
366 static_cast<std::string
>(
"[SimulationClassUnitTesting]: Failed to create main "
367 "independent variable field (usually temperature) ")
368 +
static_cast<std::string
>(
e.what()));
374 this, this->m_simulation_config.getStringVectorParameters(
"managing_modules"));
382 catch (
const std::runtime_error&
e)
384 std::cerr <<
"[SimulationClassUnitTesting]: Failed at module creation step " <<
e.what()
386 throw std::runtime_error(
387 static_cast<std::string
>(
388 "[SimulationClassUnitTesting]: Failed at module creation step ")
389 +
static_cast<std::string
>(
e.what()));
392 catch (
const std::runtime_error&
e)
394 std::cerr <<
"[SimulationClassUnitTesting]: Failed at module creation step " <<
e.what()
396 throw std::runtime_error(
397 static_cast<std::string
>(
398 "[SimulationClassUnitTesting]: Failed at module creation step ")
399 +
static_cast<std::string
>(
e.what()));
406 catch (
const std::runtime_error&
e)
408 std::cerr <<
"[SimulationClassUnitTesting]: Failed at submodule creation step " <<
e.what()
410 throw std::runtime_error(
411 static_cast<std::string
>(
412 "[SimulationClassUnitTesting]: Failed at submodule creation step ")
413 +
static_cast<std::string
>(
e.what()));
419 m_global_chain.autoLoader(
420 m_all_modules, this->m_simulation_config.getStringVectorParameters(
"managing_modules"));
422 catch (
const std::exception&
e)
424 std::cerr <<
"[SimulationClassUnitTesting]: Warning - Failed to load managing modules from "
427 <<
"Falling back to loading all modules.\n";
428 m_global_chain.autoLoader(m_all_modules);
433 runSetup<T>(m_all_modules, m_all_submodules, m_global_chain.getManagingModuleNames());
439 std::cerr <<
"[SimulationClassDefault]: Failed at setting up the modules " <<
e.what()
441 throw std::runtime_error(
442 static_cast<std::string
>(
"[SimulationClassDefault]: Failed at setting up the modules ")
443 +
static_cast<std::string
>(
e.what()));
476 this->setInitChainStr();
477 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:282
SimulationClassUnitTesting()
Definition SimulationClassUnitTesting.h:103
int runInitChain()
Definition SimulationClassUnitTesting.h:474
void setAbsoluteDefaultIniPath()
Definition SimulationClassUnitTesting.h:50
void setUserIni(const std::string &user_ini) override
Definition SimulationClassUnitTesting.h:96
int run() override
Definition SimulationClassUnitTesting.h:116
~SimulationClassUnitTesting() override=default