Skip to content
Snippets Groups Projects
Commit ada947e7 authored by Dmitri Naumov's avatar Dmitri Naumov Committed by Tom Fischer
Browse files

Change map of processes to vector.

The name is already included in the process.
parent 8ad8c83a
No related branches found
No related tags found
No related merge requests found
......@@ -921,10 +921,15 @@ void ProjectData::parseProcesses(BaseLib::ConfigTree const& processes_config,
OGS_FATAL("Unknown process type: %s", type.c_str());
}
BaseLib::insertIfKeyUniqueElseError(_processes,
name,
std::move(process),
"The process name is not unique");
if (BaseLib::containsIf(
_processes,
[&name](std::unique_ptr<ProcessLib::Process> const& p) {
return p->name == name;
}))
{
OGS_FATAL("The process name '%s' is not unique.", name.c_str());
}
_processes.push_back(std::move(process));
}
}
......@@ -1020,10 +1025,9 @@ void ProjectData::parseChemicalSystem(
"Ready for initializing interface to a chemical solver for water "
"chemistry calculation.");
auto const& process = _processes.begin()->second;
if (auto const* component_transport_process = dynamic_cast<
ProcessLib::ComponentTransport::ComponentTransportProcess const*>(
process.get()))
_processes[0].get()))
{
auto const chemical_solver =
//! \ogs_file_attr{prj__chemical_system__chemical_solver}
......
......@@ -72,8 +72,8 @@ public:
//
/// Provides read access to the process container.
std::map<std::string, std::unique_ptr<ProcessLib::Process>> const&
getProcesses() const
std::vector<std::unique_ptr<ProcessLib::Process>> const& getProcesses()
const
{
return _processes;
}
......@@ -118,7 +118,7 @@ private:
std::unique_ptr<MaterialPropertyLib::Medium> _medium;
std::vector<std::unique_ptr<MeshLib::Mesh>> _mesh_vec;
std::map<std::string, std::unique_ptr<ProcessLib::Process>> _processes;
std::vector<std::unique_ptr<ProcessLib::Process>> _processes;
std::vector<ProcessLib::ProcessVariable> _process_variables;
/// Buffer for each parameter config passed to the process.
......
......@@ -220,7 +220,7 @@ int main(int argc, char* argv[])
INFO("Initialize processes.");
for (auto& p : project.getProcesses())
{
p.second->initialize();
p->initialize();
}
// Check intermediately that config parsing went fine.
......
......@@ -47,7 +47,7 @@ static std::unique_ptr<ProcessData> makeProcessData(
std::vector<std::unique_ptr<ProcessData>> createPerProcessData(
BaseLib::ConfigTree const& config,
const std::map<std::string, std::unique_ptr<Process>>& processes,
std::vector<std::unique_ptr<Process>> const& processes,
std::map<std::string, std::unique_ptr<NumLib::NonlinearSolverBase>> const&
nonlinear_solvers)
{
......@@ -58,8 +58,11 @@ std::vector<std::unique_ptr<ProcessData>> createPerProcessData(
{
//! \ogs_file_attr{prj__time_loop__processes__process__ref}
auto const pcs_name = pcs_config.getConfigAttribute<std::string>("ref");
auto& pcs = *BaseLib::getOrError(
processes, pcs_name,
auto& pcs = *BaseLib::getIfOrError(
processes,
[&pcs_name](std::unique_ptr<Process> const& p) {
return p->name == pcs_name;
},
"A process with the given name has not been defined.");
auto const nl_slv_name =
......
......@@ -15,7 +15,7 @@ namespace ProcessLib
{
std::vector<std::unique_ptr<ProcessData>> createPerProcessData(
BaseLib::ConfigTree const& config,
const std::map<std::string, std::unique_ptr<Process>>& processes,
std::vector<std::unique_ptr<Process>> const& processes,
std::map<std::string, std::unique_ptr<NumLib::NonlinearSolverBase>> const&
nonlinear_solvers);
......
......@@ -22,7 +22,7 @@ namespace ProcessLib
{
std::unique_ptr<TimeLoop> createTimeLoop(
BaseLib::ConfigTree const& config, std::string const& output_directory,
const std::map<std::string, std::unique_ptr<Process>>& processes,
const std::vector<std::unique_ptr<Process>>& processes,
const std::map<std::string, std::unique_ptr<NumLib::NonlinearSolverBase>>&
nonlinear_solvers,
std::vector<std::unique_ptr<MeshLib::Mesh>> const& meshes,
......
......@@ -47,7 +47,7 @@ namespace ProcessLib
//! Builds a TimeLoop from the given configuration.
std::unique_ptr<TimeLoop> createTimeLoop(
BaseLib::ConfigTree const& config, std::string const& output_directory,
std::map<std::string, std::unique_ptr<Process>> const& processes,
std::vector<std::unique_ptr<Process>> const& processes,
std::map<std::string, std::unique_ptr<NumLib::NonlinearSolverBase>> const&
nonlinear_solvers,
std::vector<std::unique_ptr<MeshLib::Mesh>> const& meshes,
......
......@@ -15,11 +15,7 @@
#include "NumLib/TimeStepping/Algorithms/TimeStepAlgorithm.h"
#include "CoupledSolutionsForStaggeredScheme.h"
namespace ProcessLib
{
class Process;
}
#include "Process.h"
namespace ProcessLib
{
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment