Dune::Copasi 2.1.0-git79717215+dune.gitlab.629933
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages Concepts
functor_factory_parser.hh
Go to the documentation of this file.
1#ifndef DUNE_COPASI_MODEL_LOCAL_EQUATIONS_FUNCTOR_FACTORY_PARSER_HH
2#define DUNE_COPASI_MODEL_LOCAL_EQUATIONS_FUNCTOR_FACTORY_PARSER_HH
3
6
7#include <memory>
8
9namespace Dune::Copasi {
10
11template<std::size_t dim>
12class FunctorFactoryParser final : public FunctorFactory<dim>
13{
14public:
15 using Scalar = FieldVector<double, 1>;
16 using Vector = FieldVector<double, dim>;
17 using Tensor = FieldMatrix<double, dim, dim>;
18
22
24 std::shared_ptr<const ParserContext> parser_context = nullptr)
25 : FunctorFactory<dim>()
26 , _parser_type{ parser_type }
27 , _parser_context{ std::move(parser_context) }
28 {
29 }
30
33
36
37 ~FunctorFactoryParser() override = default;
38
39 [[nodiscard]] ScalarFunctor make_scalar(std::string_view /*prefix*/,
40 const ParameterTree& /*config*/,
41 const LocalDomain<dim>& /*local_domain*/,
42 int /*codim*/ = 0) const override;
43
44 [[nodiscard]] VectorFunctor make_vector(std::string_view /*prefix*/,
45 const ParameterTree& /*config*/,
46 const LocalDomain<dim>& /*local_domain*/,
47 int /*codim*/ = 0) const override;
48
49 [[nodiscard]] TensorApplyFunctor make_tensor_apply( std::string_view /*prefix*/,
50 const ParameterTree& /*config*/,
51 const LocalDomain<dim>& /*local_domain*/,
52 int /*codim*/ = 0) const override;
53
54 std::shared_ptr<const ParserContext> parser_context() const { return _parser_context; };
55
56private:
57 [[nodiscard]] ScalarFunctor parse_scalar_expression(const ParameterTree& /*config*/,
58 const LocalDomain<dim>& /*local_values*/,
59 int /*codim*/) const;
60
61 ParserType _parser_type;
62 std::shared_ptr<const ParserContext> _parser_context;
63};
64
65} // namespace Dune::Copasi
66
67#ifndef DUNE_COPASI_PRECOMPILED_MODE
69#endif
70
71#endif // DUNE_COPASI_MODEL_LOCAL_EQUATIONS_FUNCTOR_FACTORY_PARSER_HH
Definition: functor_factory_parser.hh:13
FunctorFactoryParser(FunctorFactoryParser &&)=delete
ScalarFunctor make_scalar(std::string_view, const ParameterTree &, const LocalDomain< dim > &, int=0) const override
Definition: functor_factory_parser.impl.hh:26
FunctorFactoryParser(ParserType parser_type=default_parser, std::shared_ptr< const ParserContext > parser_context=nullptr)
Definition: functor_factory_parser.hh:23
FunctorFactoryParser(const FunctorFactoryParser &)=delete
typename FunctorFactory< dim >::ScalarFunctor ScalarFunctor
Definition: functor_factory_parser.hh:19
VectorFunctor make_vector(std::string_view, const ParameterTree &, const LocalDomain< dim > &, int=0) const override
Definition: functor_factory_parser.impl.hh:36
FunctorFactoryParser & operator=(const FunctorFactoryParser &)=delete
std::shared_ptr< const ParserContext > parser_context() const
Definition: functor_factory_parser.hh:54
TensorApplyFunctor make_tensor_apply(std::string_view, const ParameterTree &, const LocalDomain< dim > &, int=0) const override
Definition: functor_factory_parser.impl.hh:65
~FunctorFactoryParser() override=default
FunctorFactoryParser & operator=(FunctorFactoryParser &&)=delete
Definition: functor_factory.hh:24
FieldVector< double, dim > Vector
Definition: functor_factory.hh:27
FieldMatrix< double, dim, dim > Tensor
Definition: functor_factory.hh:28
fu2::unique_function< Vector(Vector) const noexcept > TensorApplyFunctor
Definition: functor_factory.hh:32
FieldVector< double, 1 > Scalar
Definition: functor_factory.hh:26
fu2::unique_function< Vector() const noexcept > VectorFunctor
Definition: functor_factory.hh:31
fu2::unique_function< Scalar() const noexcept > ScalarFunctor
Definition: functor_factory.hh:30
Definition: axis_names.hh:7
const ParserType default_parser
ParserType
Definition: factory.hh:12
Definition: local_domain.hh:15