Model.hpp
63 Model(const ModelEvaluator<ResultRef, Args...>& evalfn, const Vec<Param>& params = {}, const ModelSerializer& serializerfn = {})
85 Model(const ModelCalculator<Result, Args...>& calcfn, const Vec<Param>& params = {}, const ModelSerializer& serializerfn = {})
119 copy.m_evalfn = memoizeLastUsingRef<Result>(copy.m_evalfn); // Here, if `m_evalfn` did not consider `const Vec<Param>&` as argument, memoization would not know when the parameters have been changed externally!
120 copy.m_calcfn = memoizeLast(copy.m_calcfn); // Here, if `m_calcfn` did not consider `const Vec<Param>&` as argument, memoization would not know when the parameters have been changed externally!
183 return m_serializerfn ? m_serializerfn() : Data{}; // evaluate m_serializerfn because Param objects may have changed
190 auto calcfn = [param](const Args&... args) { return param; }; // no need to have `const Vec<Param>&` in the lambda function here. This is added in the constructor call below!
272 auto chain(const Model<Result(Args...)>& model, const Models&... models) -> Model<Result(Args...)>
The class used to store and retrieve data for assemblying chemical systems.
Definition: Data.hpp:41
auto add(Data data) -> void
Add a Data object to this Data object, which becomes a list if not already.
Model(const Fun &f)
Construct a Model function object with either a model evaluator or a model calculator function.
Definition: Model.hpp:110
Ref< Result > ResultRef
The reference type of result type.
Definition: Model.hpp:53
auto initialized() const -> bool
Return true if this Model function object has been initialized.
Definition: Model.hpp:145
auto operator()(const Args &... args) const -> Result
Evaluate the model with given arguments and return the result of the evaluation.
Definition: Model.hpp:132
Model()
Construct a default Model function object.
Definition: Model.hpp:56
static auto Constant(const Param ¶m) -> Model
Return a constant Model function object.
Definition: Model.hpp:188
Model(const ModelEvaluator< ResultRef, Args... > &evalfn, const Vec< Param > ¶ms={}, const ModelSerializer &serializerfn={})
Construct a Model function object with given model evaluator function and its parameters.
Definition: Model.hpp:63
auto params() const -> const Vec< Param > &
Return the model parameters of this Model function object.
Definition: Model.hpp:175
auto serialize() const -> Data
Return serialization of the underlying model function to a Data object.
Definition: Model.hpp:181
auto calculatorFn() const -> const ModelCalculator< Result, Args..., const Vec< Param > & > &
Return the model calculator function of this Model function object.
Definition: Model.hpp:163
auto withMemoization() const -> Model
Return a new Model function object with memoization for the model calculator.
Definition: Model.hpp:116
Model(const ModelCalculator< Result, Args... > &calcfn, const Vec< Param > ¶ms={}, const ModelSerializer &serializerfn={})
Construct a Model function object with given direct model calculator and its parameters.
Definition: Model.hpp:85
auto evaluatorFn() const -> const ModelEvaluator< ResultRef, Args..., const Vec< Param > & > &
Return the model evaluator function of this Model function object.
Definition: Model.hpp:157
auto operator()(ResultRef res, const Args &... args) const -> void
Evaluate the model with given arguments and return the result of the evaluation.
Definition: Model.hpp:139
auto apply(ResultRef res, const Args &... args) const -> void
Evaluate the model with given arguments.
Definition: Model.hpp:125
auto serializerFn() const -> const ModelSerializer
Return the function that serializes the underlying model function to a Data object.
Definition: Model.hpp:169
Definition: Model.hpp:31
A type used to represent the value of a parameter and its lower and upper bounds.
Definition: Param.hpp:32
The namespace containing all components of the Reaktoro library.
Definition: Algorithms.hpp:28
Fn< Result(Args... args)> ModelCalculator
The functional signature of functions that calculates properties.
Definition: Model.hpp:39
auto memoizeLast(Fn< Ret(Args...)> f) -> Fn< Ret(Args...)>
Return a memoized version of given function f that caches only the arguments used in the last call.
Definition: Memoization.hpp:176
auto chain(const Vec< ActivityModelGenerator > &models) -> ActivityModelGenerator
Return an activity model resulting from chaining other activity models.
auto vectorize(const Container &c, const Function &f)
Return a vector by applying function f on every item in container c.
Definition: Algorithms.hpp:134
std::function< F > Fn
Convenient alias for std::function<R(Args...)>.
Definition: Types.hpp:110
Fn< Data()> ModelSerializer
The functional signature of functions that serialize a Model object into a Data object.
Definition: Model.hpp:42
Fn< void(ResultRef res, Args... args)> ModelEvaluator
The functional signature of functions that evaluates properties.
Definition: Model.hpp:35