BioCMAMC-ST
simulation_builder.hpp
1#ifndef __SIMULATION_BUILDER_HPP__
2#define __SIMULATION_BUILDER_HPP__
3
4#include "simulation/mass_transfer.hpp"
5#include <common/results.hpp>
6#include <mc/unit.hpp>
7#include <memory>
8#include <mixture/species_descriptor.hpp>
9#include <optional>
10#include <simulation/feed_descriptor.hpp>
11#include <simulation/scalar_initializer.hpp>
12#include <simulation/simulation_getter.hpp>
13
14namespace Simulation
15{
16 class SimulationUnit;
17} // namespace Simulation
18
19namespace Core
20{
21
29
31 {
33 std::string message;
34 };
35
37 {
38 public:
41
44
47
48 SimulationUnitBuilder with_unit(std::unique_ptr<MC::MonteCarloUnit>&& unit);
49
52
54 with_specie_table(std::shared_ptr<Mixture::SpecieTable> specie_table);
55
57
59 std::optional<Simulation::MassTransfer::Type::MtrTypeVariant>&&
60 mt_model_variant);
61
62 // Truly optional
64
67 build();
68
69 private:
70 std::unique_ptr<MC::MonteCarloUnit> m_unit;
71 std::optional<Simulation::ScalarInitializer> m_scalar_init;
72 std::shared_ptr<Mixture::SpecieTable> m_specie_table;
73
74 std::optional<Simulation::MassTransfer::Type::MtrTypeVariant>
76
77 // Default value
79
80 // genuinely optional
81 std::optional<Simulation::Feed::SimulationFeed> m_feed;
82 };
83
84} // namespace Core
85
86#endif
std::unique_ptr< MC::MonteCarloUnit > m_unit
Definition simulation_builder.hpp:70
SimulationUnitBuilder with_feed(Simulation::Feed::SimulationFeed feed)
Definition simulation_builder.cpp:54
SimulationUnitBuilder with_unit(std::unique_ptr< MC::MonteCarloUnit > &&unit)
Definition simulation_builder.cpp:13
std::shared_ptr< Mixture::SpecieTable > m_specie_table
Definition simulation_builder.hpp:72
std::optional< Simulation::Feed::SimulationFeed > m_feed
Definition simulation_builder.hpp:81
SimulationUnitBuilder & operator=(const SimulationUnitBuilder &)=delete
SimulationUnitBuilder with_params(Simulation::Sparam params)
Definition simulation_builder.cpp:37
SimulationUnitBuilder(const SimulationUnitBuilder &)=delete
Result< std::unique_ptr< Simulation::SimulationUnit >, BuildError > build()
Definition simulation_builder.cpp:61
SimulationUnitBuilder with_specie_table(std::shared_ptr< Mixture::SpecieTable > specie_table)
Definition simulation_builder.cpp:29
SimulationUnitBuilder(SimulationUnitBuilder &&)=default
SimulationUnitBuilder with_mt_model(std::optional< Simulation::MassTransfer::Type::MtrTypeVariant > &&mt_model_variant)
Definition simulation_builder.cpp:44
SimulationUnitBuilder with_scalar(Simulation::ScalarInitializer &&scalar_init)
Definition simulation_builder.cpp:20
std::optional< Simulation::MassTransfer::Type::MtrTypeVariant > m_mt_model_variant
Definition simulation_builder.hpp:75
Simulation::Sparam m_params
Definition simulation_builder.hpp:78
SimulationUnitBuilder & operator=(SimulationUnitBuilder &&)=default
std::optional< Simulation::ScalarInitializer > m_scalar_init
Definition simulation_builder.hpp:71
Definition feed_descriptor.hpp:123
Definition simulation.hpp:46
Core component to perform simulation.
Definition data_exporter.hpp:38
BuildErrorCode
Definition simulation_builder.hpp:23
@ MissingScalarInit
Definition simulation_builder.hpp:25
@ ErrorSimulation
Definition simulation_builder.hpp:27
@ MissingSpecieTable
Definition simulation_builder.hpp:26
@ MissingUnit
Definition simulation_builder.hpp:24
Namespace that contains classes and structures related to simulation handling.
Definition host_specific.hpp:12
Definition simulation_builder.hpp:31
BuildErrorCode code
Definition simulation_builder.hpp:32
std::string message
Definition simulation_builder.hpp:33
Definition results.hpp:12
Definition scalar_initializer.hpp:29
Definition simulation_getter.hpp:19
static Sparam fdefault()
Definition simulation_getter.hpp:23