28:
public Dumux::Python::FVProblem<GridGeometry_, SpatialParams_, PrimaryVariables, enableInternalDirichletConstraints>
34 using Scalar =
typename PrimaryVariables::value_type;
35 using NumEqVector = Dune::FieldVector<Scalar, PrimaryVariables::dimension>;
36 using Element =
typename GridGeometry::GridView::template Codim<0>::Entity;
43 static constexpr std::size_t
numEq =
static_cast<std::size_t
>(PrimaryVariables::dimension);
48 pybind11::object pyProblem)
54 {
return *spatialParams_; }
57 std::shared_ptr<const SpatialParams> spatialParams_;
64 using pybind11::operator
""_a;
65 using namespace Dune::Python;
67 using GridGeometry =
typename Problem::GridGeometry;
68 using SpatialParams =
typename Problem::SpatialParams;
69 cls.def(pybind11::init([](std::shared_ptr<const GridGeometry> gridGeometry,
70 std::shared_ptr<SpatialParams> spatialParams,
72 return std::make_shared<Problem>(gridGeometry, spatialParams, p);
75 cls.def_property_readonly(
"name", &Problem::name);
76 cls.def_property_readonly(
"numEq", [](Problem&){
return Problem::numEq; });
78 using GridView =
typename GridGeometry::GridView;
79 using Element =
typename GridView::template Codim<0>::Entity;
80 using Vertex =
typename GridView::template Codim<GridView::dimension>::Entity;
82 if constexpr (Problem::isBox)
84 using SCV =
typename Problem::SubControlVolume;
85 cls.def(
"boundaryTypes", pybind11::overload_cast<const Element&, const SCV&>(&Problem::boundaryTypes, pybind11::const_),
"element"_a,
"scv"_a);
86 cls.def(
"dirichlet", pybind11::overload_cast<const Element&, const SCV&>(&Problem::dirichlet, pybind11::const_),
"element"_a,
"scv"_a);
90 using SCVF =
typename Problem::SubControlVolumeFace;
91 cls.def(
"boundaryTypes", pybind11::overload_cast<const Element&, const SCVF&>(&Problem::boundaryTypes, pybind11::const_),
"element"_a,
"scvf"_a);
92 cls.def(
"dirichlet", pybind11::overload_cast<const Element&, const SCVF&>(&Problem::dirichlet, pybind11::const_),
"element"_a,
"scvf"_a);
95 cls.def(
"neumann", &Problem::template neumann<
decltype(std::ignore),
decltype(std::ignore)>);
96 cls.def(
"source", &Problem::template source<
decltype(std::ignore)>);
97 cls.def(
"sourceAtPos", &Problem::sourceAtPos);
98 cls.def(
"initial", &Problem::template initial<Element>);
99 cls.def(
"initial", &Problem::template initial<Vertex>);
100 cls.def(
"gridGeometry", &Problem::gridGeometry);
101 cls.def(
"spatialParams", &Problem::spatialParams);