1#ifndef TPM_SRC_GENERIC_SUBMODULE_H
2#define TPM_SRC_GENERIC_SUBMODULE_H
7#include <unordered_set>
67 virtual bool init() {
return true; };
71 virtual bool output() {
return true; };
123 throw std::runtime_error(
static_cast<std::string
>(this->
getNameLocal())
124 +
": Not all requested modules found in the registry.");
142 <<
" = " << std::any_cast<std::string>(
map_content) <<
"\n";
void insertModule(std::string_view key, const std::shared_ptr< ModuleType > &module)
Insert modules into chains. Generates a new chain, if the chain key does not yet exist.
Definition ChainManager.h:134
std::vector< std::string > getChainNames() const
Getter function for the chain names.
Definition ChainManager.h:309
void resolveDependencies()
Guarantees that the module order is correct to ensure all dependencies are met. Throws a DependencyEr...
Definition ChainManager.h:234
Error class to throw when a module chain has circular or missing dependencies. Inherits from std::exc...
Definition ChainManager.h:28
Abstract base class for the submodules. Submodules are below managing modules and will only be run by...
Definition GenericSubmodule.h:25
InputManager ini_file_data
Definition GenericSubmodule.h:36
virtual void setFieldPtr(std::shared_ptr< std::valarray< T > > field_ptr)
Definition GenericSubmodule.h:85
virtual std::vector< std::string > getDependencies() const
Definition GenericSubmodule.h:73
virtual bool setup(std::vector< std::shared_ptr< GenericSubmodule< T > > > all_submodules)
Definition GenericSubmodule.h:60
virtual std::string_view getNameLocal() const =0
GenericSubmodule(const SimulationClassBase< T > *l_sim)
Constructor to be preferably used when a module is created during runtime.
Definition GenericSubmodule.h:58
virtual bool postTimeStep()
Definition GenericSubmodule.h:69
std::vector< std::string > m_generic_submodules
Definition GenericSubmodule.h:34
char field_id
Definition GenericSubmodule.h:40
virtual bool exec(std::string_view param)=0
virtual bool init()
Definition GenericSubmodule.h:67
GenericSubmodule()
Constructor without arguments. Will be employed when using the static modules registry.
Definition GenericSubmodule.h:49
virtual ~GenericSubmodule()=default
const SimulationClassBase< T > * sim
Definition GenericSubmodule.h:32
void setSimPointer(SimulationClassBase< T > *sim)
Setter function for the sim pointer. As the module is usually registered during static initialization...
Definition GenericSubmodule.h:92
ChainManager< GenericSubmodule< T > > sub_module_chain
Definition GenericSubmodule.h:27
bool in_snapshot
Definition GenericSubmodule.h:38
std::shared_ptr< std::valarray< T > > module_field
Definition GenericSubmodule.h:29
virtual bool output()
Definition GenericSubmodule.h:71
bool is_set_up
Definition GenericSubmodule.h:42
virtual bool postNonLinIter()
Definition GenericSubmodule.h:70
bool in_output
Definition GenericSubmodule.h:39
void setSubmodules(std::vector< std::shared_ptr< GenericSubmodule< T > > > all_submodules)
Sets all the submodules of this module into their corresponding chains. Also sets their field-pointer...
Definition GenericSubmodule.h:99
std::vector< std::string > getSubmoduleList() const
Definition GenericSubmodule.h:77
bool isSetUp()
Definition GenericSubmodule.h:79
void overwriteLocalIniContent(const std::unordered_map< std::string, std::any > &global_ini_content)
Writes the (already trimmed to the local content) data from the global ini file to the local ini file...
Definition GenericSubmodule.h:154
virtual bool preTimeStep()
Definition GenericSubmodule.h:68
void writeToGlobalIniContent(std::ofstream &global_stream)
Function that writes the local ini file contents to the global ini file stream. "Tags" the keys with ...
Definition GenericSubmodule.h:136
void submodulesSetUp()
Definition GenericSubmodule.h:80