MoCSI API Reference
Loading...
Searching...
No Matches
SnapshotCreator.h
Go to the documentation of this file.
1#include <fstream>
2#include <map>
3#include <memory>
4#include <ostream>
5#include <valarray>
6#include <vector>
7
9#include "GenericSubmodule.h"
11
17template <typename T>
19{
20 private:
21 std::ofstream m_global_ini_file_content;
22 std::vector<std::string> m_save_fields{"Temperature"};
23 void gatherIniFileContent(
24 std::vector<std::shared_ptr<GenericManagingModule<double>>>& all_modules,
25 std::vector<std::shared_ptr<GenericSubmodule<double>>>& all_submodules);
26 void writeFields(SimulationClassBase<T>* sim);
27
28 public:
30 std::vector<std::shared_ptr<GenericManagingModule<double>>>& all_modules,
31 std::vector<std::shared_ptr<GenericSubmodule<double>>>& all_submodules);
32};
33
37template <typename T>
40 std::vector<std::shared_ptr<GenericManagingModule<double>>>& all_modules,
41 std::vector<std::shared_ptr<GenericSubmodule<double>>>& all_submodules)
42{
43 try
44 {
45 if (sim->m_simulation_config.getStringParameters("snapshot_save_file") == "None")
46 {
47 // I wanted to use return here, but this is apparently disallowed by the standard
48 throw BadInput("String is None.");
49 }
50 m_global_ini_file_content.open(
51 sim->m_simulation_config.getStringParameters("snapshot_save_file"),
52 std::ios::binary | std::ios::out | std::ios::trunc);
53 // Write the data from the specified fields (m_save_fields) into the snapshot.
54 writeFields(sim);
55 // Get and write the data from the simulation config (default.ini + user supplied run ini).
56 std::unordered_map<std::string, std::any> ini_file_content{sim->m_simulation_config.data()};
57 for (const auto& [key, map_content] : ini_file_content)
58 {
59 m_global_ini_file_content << "SimulationConfig" << "$" << key << " = "
60 << std::any_cast<std::string>(map_content) << "\n";
61 }
62 // Get an write the data from the module ini files.
63 gatherIniFileContent(all_modules, all_submodules);
64 m_global_ini_file_content.close();
65 std::cout << "\033[32m[SnapshotCreator] Successfully created snapshot file!\033[0m\n";
66 }
67 catch (const BadInput&)
68 {
69 // Do nothing here
70 }
71}
72
78template <typename T>
80{
81 // I will probably add a little header with timestamp and maybe some more infos.
82 m_global_ini_file_content << "FIELDDATA:\n";
83 for (const auto& field_name : m_save_fields)
84 {
85 m_global_ini_file_content << field_name << "," << sim->elapsed_time << ",";
86 const std::valarray<T>& field{sim->getField(field_name)};
87 for (int i{0}; i < field.size() - 1; i++)
88 {
89 m_global_ini_file_content << field[i] << std::setprecision(15) << ",";
90 }
91 m_global_ini_file_content << field[field.size() - 1] << std::setprecision(15) << "\n";
92 }
93 m_global_ini_file_content << "INIFILEDATA:\n";
94}
95
102template <typename T>
104 std::vector<std::shared_ptr<GenericManagingModule<double>>>& all_modules,
105 std::vector<std::shared_ptr<GenericSubmodule<double>>>& all_submodules)
106{
107 for (auto& module : all_modules)
108 {
109 module->writeToGlobalIniContent(m_global_ini_file_content);
110 }
111
112 for (auto& submodule : all_submodules)
113 {
114 submodule->writeToGlobalIniContent(m_global_ini_file_content);
115 }
116}
This error class inherits from std::exception and marks faulty parameter or CL inputs....
Definition IniParser.h:71
Concrete implementation of a matrix class representing a Compressed Sparse Rows (CSR) matrix....
Definition CsrMatrix.h:35
CsrSparseMatrix()
Constructor for an empty CsrSparseMatrix object. Leaves all storage arrays empty but sets the flag to...
Definition CsrMatrix.h:92
std::pair< int, int > size() const
Function that returns the size of the matrix as a pair in (rows, columns) format.
Definition GenericMatrix.h:118
Class which creates MoCSI snapshot files. Saves all the specified fields from m_save_fields and all t...
Definition SnapshotCreator.h:19
SnapshotCreator(SimulationClassBase< T > *sim, std::vector< std::shared_ptr< GenericManagingModule< double > > > &all_modules, std::vector< std::shared_ptr< GenericSubmodule< double > > > &all_submodules)
Constructor of the Snapshot Creator.
Definition SnapshotCreator.h:38