Class template Dune::GDT::SpaceInterface<GridView, range_dim, range_dim_columns, RangeField>

Inherits from Dune::XT::Common::WithLogger.

template<class GridView, size_t range_dim = 1, size_t range_dim_columns = 1, class RangeField = double>
class Dune::GDT::SpaceInterface<GridView, range_dim, range_dim_columns, RangeField> : public XT::Common::WithLogger<SpaceInterface<GridView, range_dim, range_dim_columns, RangeField>>

Interface for discrete function spaces, providing grid view, mapper, basis, finite elements and functionality for adaptation and parallel communication.

Method Dune::GDT::SpaceInterface::copy

template<class GridView, size_t range_dim = 1, size_t range_dim_columns = 1, class RangeField = double>
virtual ThisType *Dune::GDT::SpaceInterface<GridView, range_dim, range_dim_columns, RangeField>::copy() const = 0

No documentation provided.

Method Dune::GDT::SpaceInterface::grid_view

template<class GridView, size_t range_dim = 1, size_t range_dim_columns = 1, class RangeField = double>
virtual const GridViewType &Dune::GDT::SpaceInterface<GridView, range_dim, range_dim_columns, RangeField>::grid_view() const = 0

\ {

These methods provide most functionality, they have to be implemented.

Method Dune::GDT::SpaceInterface::mapper

template<class GridView, size_t range_dim = 1, size_t range_dim_columns = 1, class RangeField = double>
virtual const MapperType &Dune::GDT::SpaceInterface<GridView, range_dim, range_dim_columns, RangeField>::mapper() const = 0

No documentation provided.

Method Dune::GDT::SpaceInterface::finite_elements

template<class GridView, size_t range_dim = 1, size_t range_dim_columns = 1, class RangeField = double>
virtual const LocalFiniteElementFamilyType &Dune::GDT::SpaceInterface<GridView, range_dim, range_dim_columns, RangeField>::finite_elements() const = 0

No documentation provided.

Method Dune::GDT::SpaceInterface::basis

template<class GridView, size_t range_dim = 1, size_t range_dim_columns = 1, class RangeField = double>
virtual const GlobalBasisType &Dune::GDT::SpaceInterface<GridView, range_dim, range_dim_columns, RangeField>::basis() const = 0

No documentation provided.

Method Dune::GDT::SpaceInterface::type

template<class GridView, size_t range_dim = 1, size_t range_dim_columns = 1, class RangeField = double>
virtual SpaceType Dune::GDT::SpaceInterface<GridView, range_dim, range_dim_columns, RangeField>::type() const = 0

\ }

These methods help to identify the space, they have to be implemented.

\ {

Method Dune::GDT::SpaceInterface::min_polorder

template<class GridView, size_t range_dim = 1, size_t range_dim_columns = 1, class RangeField = double>
virtual int Dune::GDT::SpaceInterface<GridView, range_dim, range_dim_columns, RangeField>::min_polorder() const = 0

No documentation provided.

Method Dune::GDT::SpaceInterface::max_polorder

template<class GridView, size_t range_dim = 1, size_t range_dim_columns = 1, class RangeField = double>
virtual int Dune::GDT::SpaceInterface<GridView, range_dim, range_dim_columns, RangeField>::max_polorder() const = 0

No documentation provided.

Method Dune::GDT::SpaceInterface::continuous

template<class GridView, size_t range_dim = 1, size_t range_dim_columns = 1, class RangeField = double>
virtual bool Dune::GDT::SpaceInterface<GridView, range_dim, range_dim_columns, RangeField>::continuous(const int diff_order) const = 0

To query if elements of this space (functions) are continuous (i.e., in C^0), use continuous(0).

Method Dune::GDT::SpaceInterface::continuous_normal_components

template<class GridView, size_t range_dim = 1, size_t range_dim_columns = 1, class RangeField = double>
virtual bool Dune::GDT::SpaceInterface<GridView, range_dim, range_dim_columns, RangeField>::continuous_normal_components() const = 0

No documentation provided.

Method Dune::GDT::SpaceInterface::is_lagrangian

template<class GridView, size_t range_dim = 1, size_t range_dim_columns = 1, class RangeField = double>
virtual bool Dune::GDT::SpaceInterface<GridView, range_dim, range_dim_columns, RangeField>::is_lagrangian() const = 0

If this returns true, every FE provided by local_finite_elements() is expected to provide lagrange_points().

Method Dune::GDT::SpaceInterface::restrict_to

template<class GridView, size_t range_dim = 1, size_t range_dim_columns = 1, class RangeField = double>
virtual void Dune::GDT::SpaceInterface<GridView, range_dim, range_dim_columns, RangeField>::restrict_to(const ElementType &element, PersistentContainer<G, std::pair<DynamicVector<R>, DynamicVector<R>>> &persistent_data) const

Computes an L^2 projection of the data defined on the finer elements, on the domain covered by the coarser element.

Warning

This implementation only makes sense if the evaluation of the global basis coincides with the evaluation of the finite elements basis.

Note

Override this method if this is not the correct choice for the space in question!

Method Dune::GDT::SpaceInterface::pre_adapt

template<class GridView, size_t range_dim = 1, size_t range_dim_columns = 1, class RangeField = double>
void Dune::GDT::SpaceInterface<GridView, range_dim, range_dim_columns, RangeField>::pre_adapt()

No documentation provided.

Method Dune::GDT::SpaceInterface::update_after_adapt

template<class GridView, size_t range_dim = 1, size_t range_dim_columns = 1, class RangeField = double>
virtual void Dune::GDT::SpaceInterface<GridView, range_dim, range_dim_columns, RangeField>::update_after_adapt()

Note

Ensure in derived classes that the basis, mapper and communicator are updated!

Method Dune::GDT::SpaceInterface::adapt

template<class GridView, size_t range_dim = 1, size_t range_dim_columns = 1, class RangeField = double>
virtual void Dune::GDT::SpaceInterface<GridView, range_dim, range_dim_columns, RangeField>::adapt()

No documentation provided.

Method Dune::GDT::SpaceInterface::post_adapt

template<class GridView, size_t range_dim = 1, size_t range_dim_columns = 1, class RangeField = double>
void Dune::GDT::SpaceInterface<GridView, range_dim, range_dim_columns, RangeField>::post_adapt()

No documentation provided.

Method Dune::GDT::SpaceInterface::prolong_onto

template<class GridView, size_t range_dim = 1, size_t range_dim_columns = 1, class RangeField = double>
virtual void Dune::GDT::SpaceInterface<GridView, range_dim, range_dim_columns, RangeField>::prolong_onto(const ElementType &element, const PersistentContainer<G, std::pair<DynamicVector<R>, DynamicVector<R>>> &persistent_data, DynamicVector<R> &element_dof_data) const

Computes a prolongation using the interpolation of the finite_element().

Warning

This implementation only makes sense if the evaluation of the global basis coincides with the evaluation of the finite elements basis.

Note

Override this method if this is not the correct choice for the space in question.

Method Dune::GDT::SpaceInterface::prolong_onto

template<class GridView, size_t range_dim = 1, size_t range_dim_columns = 1, class RangeField = double>
virtual DynamicVector<R> Dune::GDT::SpaceInterface<GridView, range_dim, range_dim_columns, RangeField>::prolong_onto(const ElementType &element, const PersistentContainer<G, std::pair<DynamicVector<R>, DynamicVector<R>>> &persistent_data) const

No documentation provided.

Method Dune::GDT::SpaceInterface::dof_communicator

template<class GridView, size_t range_dim = 1, size_t range_dim_columns = 1, class RangeField = double>
virtual const DofCommunicatorType &Dune::GDT::SpaceInterface<GridView, range_dim, range_dim_columns, RangeField>::dof_communicator() const

\ }

These methods are required for MPI communication, they are provided.

\ {

Method Dune::GDT::SpaceInterface::create_communicator

template<class GridView, size_t range_dim = 1, size_t range_dim_columns = 1, class RangeField = double>
void Dune::GDT::SpaceInterface<GridView, range_dim, range_dim_columns, RangeField>::create_communicator()

\ }

Constructor Dune::GDT::SpaceInterface::SpaceInterface

template<class GridView, size_t range_dim = 1, size_t range_dim_columns = 1, class RangeField = double>
explicit Dune::GDT::SpaceInterface<GridView, range_dim, range_dim_columns, RangeField>::SpaceInterface(const std::string &logging_prefix = "", const std::array<bool, 3> &logging_state = XT::Common::default_logger_state())

No documentation provided.

Constructor Dune::GDT::SpaceInterface::SpaceInterface

template<class GridView, size_t range_dim = 1, size_t range_dim_columns = 1, class RangeField = double>
Dune::GDT::SpaceInterface<GridView, range_dim, range_dim_columns, RangeField>::SpaceInterface(const ThisType &other) = default

No documentation provided.

Constructor Dune::GDT::SpaceInterface::SpaceInterface

template<class GridView, size_t range_dim = 1, size_t range_dim_columns = 1, class RangeField = double>
Dune::GDT::SpaceInterface<GridView, range_dim, range_dim_columns, RangeField>::SpaceInterface(ThisType &&source) noexcept = default

No documentation provided.

Destructor Dune::GDT::SpaceInterface::~SpaceInterface

template<class GridView, size_t range_dim = 1, size_t range_dim_columns = 1, class RangeField = double>
virtual Dune::GDT::SpaceInterface<GridView, range_dim, range_dim_columns, RangeField>::~SpaceInterface() = default

No documentation provided.

Field Dune::GDT::SpaceInterface::dof_communicator_

template<class GridView, size_t range_dim = 1, size_t range_dim_columns = 1, class RangeField = double>
std::shared_ptr<DofCommunicatorType> Dune::GDT::SpaceInterface<GridView, range_dim, range_dim_columns, RangeField>::dof_communicator_

No documentation provided.

Field Dune::GDT::SpaceInterface::adapted_

template<class GridView, size_t range_dim = 1, size_t range_dim_columns = 1, class RangeField = double>
bool Dune::GDT::SpaceInterface<GridView, range_dim, range_dim_columns, RangeField>::adapted_

No documentation provided.

Variable Dune::GDT::SpaceInterface::d

template<class GridView, size_t range_dim = 1, size_t range_dim_columns = 1, class RangeField = double>
const size_t Dune::GDT::SpaceInterface<GridView, range_dim, range_dim_columns, RangeField>::d

No documentation provided.

Variable Dune::GDT::SpaceInterface::r

template<class GridView, size_t range_dim = 1, size_t range_dim_columns = 1, class RangeField = double>
const size_t Dune::GDT::SpaceInterface<GridView, range_dim, range_dim_columns, RangeField>::r

No documentation provided.

Variable Dune::GDT::SpaceInterface::rC

template<class GridView, size_t range_dim = 1, size_t range_dim_columns = 1, class RangeField = double>
const size_t Dune::GDT::SpaceInterface<GridView, range_dim, range_dim_columns, RangeField>::rC

No documentation provided.

Type alias Dune::GDT::SpaceInterface::ThisType

template<class GridView, size_t range_dim = 1, size_t range_dim_columns = 1, class RangeField = double>
using Dune::GDT::SpaceInterface<GridView, range_dim, range_dim_columns, RangeField>::ThisType = SpaceInterface<GridView, range_dim, range_dim_columns, RangeField>

No documentation provided.

Type alias Dune::GDT::SpaceInterface::Logger

template<class GridView, size_t range_dim = 1, size_t range_dim_columns = 1, class RangeField = double>
using Dune::GDT::SpaceInterface<GridView, range_dim, range_dim_columns, RangeField>::Logger = XT::Common::WithLogger<SpaceInterface<GridView, range_dim, range_dim_columns, RangeField>>

No documentation provided.

Type alias Dune::GDT::SpaceInterface::GridViewType

template<class GridView, size_t range_dim = 1, size_t range_dim_columns = 1, class RangeField = double>
using Dune::GDT::SpaceInterface<GridView, range_dim, range_dim_columns, RangeField>::GridViewType = GridView

No documentation provided.

Type alias Dune::GDT::SpaceInterface::GV

template<class GridView, size_t range_dim = 1, size_t range_dim_columns = 1, class RangeField = double>
using Dune::GDT::SpaceInterface<GridView, range_dim, range_dim_columns, RangeField>::GV = GridViewType

No documentation provided.

Type alias Dune::GDT::SpaceInterface::ElementType

template<class GridView, size_t range_dim = 1, size_t range_dim_columns = 1, class RangeField = double>
using Dune::GDT::SpaceInterface<GridView, range_dim, range_dim_columns, RangeField>::ElementType = XT::Grid::extract_entity_t<GV>

No documentation provided.

Type alias Dune::GDT::SpaceInterface::E

template<class GridView, size_t range_dim = 1, size_t range_dim_columns = 1, class RangeField = double>
using Dune::GDT::SpaceInterface<GridView, range_dim, range_dim_columns, RangeField>::E = ElementType

No documentation provided.

Type alias Dune::GDT::SpaceInterface::GridType

template<class GridView, size_t range_dim = 1, size_t range_dim_columns = 1, class RangeField = double>
using Dune::GDT::SpaceInterface<GridView, range_dim, range_dim_columns, RangeField>::GridType = typename GridView::Grid

No documentation provided.

Type alias Dune::GDT::SpaceInterface::G

template<class GridView, size_t range_dim = 1, size_t range_dim_columns = 1, class RangeField = double>
using Dune::GDT::SpaceInterface<GridView, range_dim, range_dim_columns, RangeField>::G = GridType

No documentation provided.

Type alias Dune::GDT::SpaceInterface::D

template<class GridView, size_t range_dim = 1, size_t range_dim_columns = 1, class RangeField = double>
using Dune::GDT::SpaceInterface<GridView, range_dim, range_dim_columns, RangeField>::D = typename GridViewType::ctype

No documentation provided.

Type alias Dune::GDT::SpaceInterface::R

template<class GridView, size_t range_dim = 1, size_t range_dim_columns = 1, class RangeField = double>
using Dune::GDT::SpaceInterface<GridView, range_dim, range_dim_columns, RangeField>::R = RangeField

No documentation provided.

Type alias Dune::GDT::SpaceInterface::GlobalBasisType

template<class GridView, size_t range_dim = 1, size_t range_dim_columns = 1, class RangeField = double>
using Dune::GDT::SpaceInterface<GridView, range_dim, range_dim_columns, RangeField>::GlobalBasisType = GlobalBasisInterface<GridViewType, r, rC, R>

No documentation provided.

Type alias Dune::GDT::SpaceInterface::LocalFiniteElementFamilyType

template<class GridView, size_t range_dim = 1, size_t range_dim_columns = 1, class RangeField = double>
using Dune::GDT::SpaceInterface<GridView, range_dim, range_dim_columns, RangeField>::LocalFiniteElementFamilyType = LocalFiniteElementFamilyInterface<D, d, R, r, rC>

No documentation provided.

Type alias Dune::GDT::SpaceInterface::MapperType

template<class GridView, size_t range_dim = 1, size_t range_dim_columns = 1, class RangeField = double>
using Dune::GDT::SpaceInterface<GridView, range_dim, range_dim_columns, RangeField>::MapperType = MapperInterface<GridViewType>

No documentation provided.

Type alias Dune::GDT::SpaceInterface::DofCommunicatorType

template<class GridView, size_t range_dim = 1, size_t range_dim_columns = 1, class RangeField = double>
using Dune::GDT::SpaceInterface<GridView, range_dim, range_dim_columns, RangeField>::DofCommunicatorType = typename DofCommunicationChooser<GridViewType>::Type

No documentation provided.

Function template Dune::GDT::SpaceInterface::contains

template<class GridView, size_t range_dim = 1, size_t range_dim_columns = 1, class RangeField = double>
template<class V>
bool Dune::GDT::SpaceInterface<GridView, range_dim, range_dim_columns, RangeField>::contains(const XT::LA::VectorInterface<V> &vector) const

\ }

These methods are provided for convenience.

\ {

Function template Dune::GDT::SpaceInterface::contains

template<class GridView, size_t range_dim = 1, size_t range_dim_columns = 1, class RangeField = double>
template<class V>
bool Dune::GDT::SpaceInterface<GridView, range_dim, range_dim_columns, RangeField>::contains(const ConstDiscreteFunction<V, GV, r, rC, R> &function) const

Note

A return value of true cannot be ultimately trusted yet.

See also: https://github.com/dune-community/dune-gdt/issues/123