3#ifndef DUNE_PYTHON_LOCALFUNCTIONS_LOCALFINITEELEMENT_HH
4#define DUNE_PYTHON_LOCALFUNCTIONS_LOCALFINITEELEMENT_HH
6#include <dune/python/pybind11/pybind11.h>
7#include <dune/python/pybind11/gil_safe_call_once.h>
9#include <dune/common/visibility.hh>
18template<
typename LocalBasis>
19DUNE_EXPORT
auto registerLocalBasis(pybind11::handle scope)
22 PYBIND11_CONSTINIT
static pybind11::gil_safe_call_once_and_store<pybind11::class_<LocalBasis>> storage;
23 auto& cls = storage.call_once_and_store_result(
24 [scope]() {
return pybind11::class_<LocalBasis>(scope,
"LocalBasis"); }).get_stored();
26 cls.def(
"__len__", [](
const LocalBasis& basis) {
return basis.size(); });
27 cls.def_property_readonly(
"order", [](
const LocalBasis& basis) {
return basis.order(); });
28 cls.def(
"evaluateFunction",
29 [](
const LocalBasis& basis,
const typename LocalBasis::Traits::DomainType& in) {
30 std::vector<typename LocalBasis::Traits::RangeType> out;
31 basis.evaluateFunction(in, out);
34 cls.def(
"evaluateJacobian",
35 [](
const LocalBasis& basis,
const typename LocalBasis::Traits::DomainType& in) {
36 std::vector<typename LocalBasis::Traits::JacobianType> out;
37 basis.evaluateJacobian(in, out);
43DUNE_EXPORT
auto registerLocalKey(pybind11::handle scope)
48 PYBIND11_CONSTINIT
static pybind11::gil_safe_call_once_and_store<pybind11::class_<LocalKey>> storage;
49 auto& cls = storage.call_once_and_store_result(
50 [scope]() {
return pybind11::class_<LocalKey>(scope,
"LocalKey"); }).get_stored();
54 cls.def_property(
"index",
57 cls.def(
"__lt__", &LocalKey::operator<);
64template<
typename LocalFiniteElement>
68 PYBIND11_CONSTINIT
static pybind11::gil_safe_call_once_and_store<pybind11::class_<LocalFiniteElement>> storage;
69 auto& cls = storage.call_once_and_store_result(
70 [scope, name]() {
return pybind11::class_<LocalFiniteElement>(scope, name); }).get_stored();
72 detail::registerLocalBasis<typename LocalFiniteElement::Traits::LocalBasisType>(cls);
Definition bdfmcube.hh:18
Definition python/localfunctions/localfiniteelement.hh:14
DUNE_EXPORT auto registerLocalFiniteElement(pybind11::handle scope, const char *name="LocalFiniteElement")
Definition python/localfunctions/localfiniteelement.hh:65
Type erasure class storing a local finite element.
Definition localfunctions/common/localfiniteelement.hh:40
const Traits::LocalBasisType & localBasis() const
Access the LocalBasis of the stored local finite element.
Definition localfunctions/common/localfiniteelement.hh:156
unsigned int size() const
Get the number of basis functions of the stored local finite element.
Definition localfunctions/common/localfiniteelement.hh:188
const GeometryType & type() const
Get the GeometryType of the stored local finite element.
Definition localfunctions/common/localfiniteelement.hh:198
Describe position of one degree of freedom.
Definition localkey.hh:24
constexpr unsigned int index() const noexcept
Return offset within subentity.
Definition localkey.hh:70
constexpr unsigned int codim() const noexcept
Return codim of associated entity.
Definition localkey.hh:63
constexpr unsigned int subEntity() const noexcept
Return number of associated subentity.
Definition localkey.hh:56