Class template Dune::GDT::ThreadSafeDefaultLocalFiniteElementFamily<D, d, R, r, rC>

Inherits from Dune::GDT::LocalFiniteElementFamilyInterface.

template<class D, size_t d, class R = double, size_t r = 1, size_t rC = 1>
class Dune::GDT::ThreadSafeDefaultLocalFiniteElementFamily<D, d, R, r, rC> : public LocalFiniteElementFamilyInterface<D, d, R, r, rC>

Implements LocalFiniteElementFamilyInterface by lazily creating and caching local finite elements from a user-provided factory, with creation guarded by a mutex.

Note

See the implementation of get() for a caveat regarding the double-checked locking pattern used here.

Method Dune::GDT::ThreadSafeDefaultLocalFiniteElementFamily::get

template<class D, size_t d, class R = double, size_t r = 1, size_t rC = 1>
const LocalFiniteElementType &Dune::GDT::ThreadSafeDefaultLocalFiniteElementFamily<D, d, R, r, rC>::get(const GeometryType &geometry_type, const int order) const final override

No documentation provided.

Constructor Dune::GDT::ThreadSafeDefaultLocalFiniteElementFamily::ThreadSafeDefaultLocalFiniteElementFamily

template<class D, size_t d, class R = double, size_t r = 1, size_t rC = 1>
explicit Dune::GDT::ThreadSafeDefaultLocalFiniteElementFamily<D, d, R, r, rC>::ThreadSafeDefaultLocalFiniteElementFamily(std::function<std::unique_ptr<LocalFiniteElementType>(const GeometryType&, const int&)> factory)

No documentation provided.

Constructor Dune::GDT::ThreadSafeDefaultLocalFiniteElementFamily::ThreadSafeDefaultLocalFiniteElementFamily

template<class D, size_t d, class R = double, size_t r = 1, size_t rC = 1>
Dune::GDT::ThreadSafeDefaultLocalFiniteElementFamily<D, d, R, r, rC>::ThreadSafeDefaultLocalFiniteElementFamily(const ThisType &other)

No documentation provided.

Constructor Dune::GDT::ThreadSafeDefaultLocalFiniteElementFamily::ThreadSafeDefaultLocalFiniteElementFamily

template<class D, size_t d, class R = double, size_t r = 1, size_t rC = 1>
Dune::GDT::ThreadSafeDefaultLocalFiniteElementFamily<D, d, R, r, rC>::ThreadSafeDefaultLocalFiniteElementFamily(ThisType &&source) noexcept

No documentation provided.

Field Dune::GDT::ThreadSafeDefaultLocalFiniteElementFamily::factory_

template<class D, size_t d, class R = double, size_t r = 1, size_t rC = 1>
const std::function<std::unique_ptr<LocalFiniteElementType>(const GeometryType&, const int&)> Dune::GDT::ThreadSafeDefaultLocalFiniteElementFamily<D, d, R, r, rC>::factory_

No documentation provided.

Field Dune::GDT::ThreadSafeDefaultLocalFiniteElementFamily::fes_

template<class D, size_t d, class R = double, size_t r = 1, size_t rC = 1>
std::map<std::pair<GeometryType, int>, std::unique_ptr<LocalFiniteElementType>> Dune::GDT::ThreadSafeDefaultLocalFiniteElementFamily<D, d, R, r, rC>::fes_

No documentation provided.

Field Dune::GDT::ThreadSafeDefaultLocalFiniteElementFamily::mutex_

template<class D, size_t d, class R = double, size_t r = 1, size_t rC = 1>
std::mutex Dune::GDT::ThreadSafeDefaultLocalFiniteElementFamily<D, d, R, r, rC>::mutex_

No documentation provided.

Type alias Dune::GDT::ThreadSafeDefaultLocalFiniteElementFamily::ThisType

template<class D, size_t d, class R = double, size_t r = 1, size_t rC = 1>
using Dune::GDT::ThreadSafeDefaultLocalFiniteElementFamily<D, d, R, r, rC>::ThisType = ThreadSafeDefaultLocalFiniteElementFamily<D, d, R, r, rC>

No documentation provided.

Type alias Dune::GDT::ThreadSafeDefaultLocalFiniteElementFamily::BaseType

template<class D, size_t d, class R = double, size_t r = 1, size_t rC = 1>
using Dune::GDT::ThreadSafeDefaultLocalFiniteElementFamily<D, d, R, r, rC>::BaseType = LocalFiniteElementFamilyInterface<D, d, R, r, rC>

No documentation provided.