Class template Dune::GDT::MatrixOperator

Inherits from Dune::XT::Common::StorageProvider, Dune::GDT::ConstMatrixOperator, Dune::XT::Grid::ElementAndIntersectionFunctor.

template<class AGV, size_t s_r = 1, size_t s_rC = 1, size_t r_r = s_r, size_t r_rC = s_rC, class F = double, class M = XT::LA::IstlRowMajorSparseMatrix<F>, class SGV = AGV, class RGV = AGV>
class Dune::GDT::MatrixOperator<AGV, s_r, s_rC, r_r, r_rC, F, M, SGV, RGV> : private XT::Common::StorageProvider<M>, public ConstMatrixOperator<AGV, s_r, s_rC, r_r, r_rC, F, M, SGV, RGV>, public XT::Grid::ElementAndIntersectionFunctor<AGV>

Base class for linear operators which are assembled into a matrix.

We derive from the XT::Grid::ElementAndIntersectionFunctor and povide custom append() methods to allow to add local element and intersection operators. We also hold the target matrix into which we want to assemble. The operator is assembled by walking over the given assembly_grid_view. If you want to assemble an operator only on a smaller grid view, consider to append this operator to another walker or provide appropriate filters.

We derive from the XT::Grid::ElementAndIntersectionFunctor and povide custom append() methods to allow to add local element and intersection operators. We also hold the target matrix into which we want to assemble. The operator is assembled by walking over the given assembly_grid_view. If you want to assemble an operator only on a smaller grid view, consider to append this operator to another walker or provide appropriate filters.

We derive from the XT::Grid::ElementAndIntersectionFunctor and povide custom append() methods to allow to add local element and intersection operators. We also hold the target matrix into which we want to assemble. The operator is assembled by walking over the given assembly_grid_view. If you want to assemble an operator only on a smaller grid view, consider to append this operator to another walker or provide appropriate filters.

Note

See ConstMatrixOperator and OperatorInterface for a description of the template arguments.

Note

See ConstMatrixOperator and OperatorInterface for a description of the template arguments.

Note

See ConstMatrixOperator and OperatorInterface for a description of the template arguments.

Note

In compute_locally, the filters are evaluated w.r.t. assembly_grid_view and not the grid view of the walker this operator is appended to. This might not be what we want.

Note

In compute_locally, the filters are evaluated w.r.t. assembly_grid_view and not the grid view of the walker this operator is appended to. This might not be what we want.

Note

In compute_locally, the filters are evaluated w.r.t. assembly_grid_view and not the grid view of the walker this operator is appended to. This might not be what we want.

See also: DisccreteOperatorInterface, DisccreteOperatorInterface, DisccreteOperatorInterface, BilinearFormInterface, BilinearFormInterface, BilinearFormInterface, ConstMatrixOperator, ConstMatrixOperator, ConstMatrixOperator, XT::Grid::ElementAndIntersectionFunctor, XT::Grid::ElementAndIntersectionFunctor, XT::Grid::ElementAndIntersectionFunctor, XT::Grid::Walker, XT::Grid::Walker, XT::Grid::Walker

Method Dune::GDT::MatrixOperator::copy

template<class AGV, size_t s_r = 1, size_t s_rC = 1, size_t r_r = s_r, size_t r_rC = s_rC, class F = double, class M = XT::LA::IstlRowMajorSparseMatrix<F>, class SGV = AGV, class RGV = AGV>
BaseFunctorType *Dune::GDT::MatrixOperator<AGV, s_r, s_rC, r_r, r_rC, F, M, SGV, RGV>::copy() final override

\ {

Required by ElementAndIntersectionFunctor.

Method Dune::GDT::MatrixOperator::apply_local

template<class AGV, size_t s_r = 1, size_t s_rC = 1, size_t r_r = s_r, size_t r_rC = s_rC, class F = double, class M = XT::LA::IstlRowMajorSparseMatrix<F>, class SGV = AGV, class RGV = AGV>
void Dune::GDT::MatrixOperator<AGV, s_r, s_rC, r_r, r_rC, F, M, SGV, RGV>::apply_local(const E &element) final override

No documentation provided.

Method Dune::GDT::MatrixOperator::apply_local

template<class AGV, size_t s_r = 1, size_t s_rC = 1, size_t r_r = s_r, size_t r_rC = s_rC, class F = double, class M = XT::LA::IstlRowMajorSparseMatrix<F>, class SGV = AGV, class RGV = AGV>
void Dune::GDT::MatrixOperator<AGV, s_r, s_rC, r_r, r_rC, F, M, SGV, RGV>::apply_local(const I &intersection, const E &inside_element, const E &outside_element) final override

No documentation provided.

Method Dune::GDT::MatrixOperator::finalize

template<class AGV, size_t s_r = 1, size_t s_rC = 1, size_t r_r = s_r, size_t r_rC = s_rC, class F = double, class M = XT::LA::IstlRowMajorSparseMatrix<F>, class SGV = AGV, class RGV = AGV>
void Dune::GDT::MatrixOperator<AGV, s_r, s_rC, r_r, r_rC, F, M, SGV, RGV>::finalize() final override

No documentation provided.

Method Dune::GDT::MatrixOperator::assemble

template<class AGV, size_t s_r = 1, size_t s_rC = 1, size_t r_r = s_r, size_t r_rC = s_rC, class F = double, class M = XT::LA::IstlRowMajorSparseMatrix<F>, class SGV = AGV, class RGV = AGV>
void Dune::GDT::MatrixOperator<AGV, s_r, s_rC, r_r, r_rC, F, M, SGV, RGV>::assemble(const bool use_tbb = false) final override

\ }

Required by BilinearFormInterface

\ {

Method Dune::GDT::MatrixOperator::matrix

template<class AGV, size_t s_r = 1, size_t s_rC = 1, size_t r_r = s_r, size_t r_rC = s_rC, class F = double, class M = XT::LA::IstlRowMajorSparseMatrix<F>, class SGV = AGV, class RGV = AGV>
MatrixType &Dune::GDT::MatrixOperator<AGV, s_r, s_rC, r_r, r_rC, F, M, SGV, RGV>::matrix()

\ }

These methods extend the ones from ConstantMatrixOperator

\ {

Method Dune::GDT::MatrixOperator::append

template<class AGV, size_t s_r = 1, size_t s_rC = 1, size_t r_r = s_r, size_t r_rC = s_rC, class F = double, class M = XT::LA::IstlRowMajorSparseMatrix<F>, class SGV = AGV, class RGV = AGV>
ThisType &Dune::GDT::MatrixOperator<AGV, s_r, s_rC, r_r, r_rC, F, M, SGV, RGV>::append(const BilinearFormType &bilinear_form, const XT::Common::Parameter &param)

\ }

These methods allow to append the local bilinear forms from a BilinearForm

\ {

Method Dune::GDT::MatrixOperator::append

template<class AGV, size_t s_r = 1, size_t s_rC = 1, size_t r_r = s_r, size_t r_rC = s_rC, class F = double, class M = XT::LA::IstlRowMajorSparseMatrix<F>, class SGV = AGV, class RGV = AGV>
ThisType &Dune::GDT::MatrixOperator<AGV, s_r, s_rC, r_r, r_rC, F, M, SGV, RGV>::append(const int &local_operator, const VectorType &source, const XT::Common::Parameter &param, const ElementFilterType &filter = ApplyOnAllElements())

Method Dune::GDT::MatrixOperator::append

template<class AGV, size_t s_r = 1, size_t s_rC = 1, size_t r_r = s_r, size_t r_rC = s_rC, class F = double, class M = XT::LA::IstlRowMajorSparseMatrix<F>, class SGV = AGV, class RGV = AGV>
ThisType &Dune::GDT::MatrixOperator<AGV, s_r, s_rC, r_r, r_rC, F, M, SGV, RGV>::append(const int &local_operator, const VectorType &source, const XT::Common::Parameter &param, const IntersectionFilterType &filter = ApplyOnAllIntersections())

No documentation provided.

Constructor Dune::GDT::MatrixOperator::MatrixOperator<AGV, s_r, s_rC, r_r, r_rC, F, M, SGV, RGV>

template<>
template<class AGV, size_t s_r = 1, size_t s_rC = 1, size_t r_r = s_r, size_t r_rC = s_rC, class F = double, class M = XT::LA::IstlRowMajorSparseMatrix<F>, class SGV = AGV, class RGV = AGV>
Dune::GDT::MatrixOperator<AGV, s_r, s_rC, r_r, r_rC, F, M, SGV, RGV>::MatrixOperator<AGV, s_r, s_rC, r_r, r_rC, F, M, SGV, RGV>(const AssemblyGridViewType assembly_grid_vw, const SourceSpaceType &source_spc, const RangeSpaceType &range_spc, MatrixType &mat, const std::string &logging_prefix, const std::array<bool, 3> &logging_state = XT::Common::default_logger_state())

No documentation provided.

Constructor Dune::GDT::MatrixOperator::MatrixOperator<AGV, s_r, s_rC, r_r, r_rC, F, M, SGV, RGV>

template<>
template<class AGV, size_t s_r = 1, size_t s_rC = 1, size_t r_r = s_r, size_t r_rC = s_rC, class F = double, class M = XT::LA::IstlRowMajorSparseMatrix<F>, class SGV = AGV, class RGV = AGV>
Dune::GDT::MatrixOperator<AGV, s_r, s_rC, r_r, r_rC, F, M, SGV, RGV>::MatrixOperator<AGV, s_r, s_rC, r_r, r_rC, F, M, SGV, RGV>(const AssemblyGridViewType assembly_grid_vw, const SourceSpaceType &source_spc, const RangeSpaceType &range_spc, MatrixType *&&mat_ptr, const std::string &logging_prefix, const std::array<bool, 3> &logging_state = XT::Common::default_logger_state())

No documentation provided.

Constructor Dune::GDT::MatrixOperator::MatrixOperator<AGV, s_r, s_rC, r_r, r_rC, F, M, SGV, RGV>

template<>
template<class AGV, size_t s_r = 1, size_t s_rC = 1, size_t r_r = s_r, size_t r_rC = s_rC, class F = double, class M = XT::LA::IstlRowMajorSparseMatrix<F>, class SGV = AGV, class RGV = AGV>
Dune::GDT::MatrixOperator<AGV, s_r, s_rC, r_r, r_rC, F, M, SGV, RGV>::MatrixOperator<AGV, s_r, s_rC, r_r, r_rC, F, M, SGV, RGV>(const ThisType&) = delete

No documentation provided.

Constructor Dune::GDT::MatrixOperator::MatrixOperator<AGV, s_r, s_rC, r_r, r_rC, F, M, SGV, RGV>

template<>
template<class AGV, size_t s_r = 1, size_t s_rC = 1, size_t r_r = s_r, size_t r_rC = s_rC, class F = double, class M = XT::LA::IstlRowMajorSparseMatrix<F>, class SGV = AGV, class RGV = AGV>
Dune::GDT::MatrixOperator<AGV, s_r, s_rC, r_r, r_rC, F, M, SGV, RGV>::MatrixOperator<AGV, s_r, s_rC, r_r, r_rC, F, M, SGV, RGV>(ThisType &other)

Note

Performs something like a shallow copy (as required by ElementAndIntersectionFunctor), i.e. the copied operator shares the matrix.

Note

Manual copy required to duplicate the local assemblers

Constructor Dune::GDT::MatrixOperator::MatrixOperator<AGV, s_r, s_rC, r_r, r_rC, F, M, SGV, RGV>

template<>
template<class AGV, size_t s_r = 1, size_t s_rC = 1, size_t r_r = s_r, size_t r_rC = s_rC, class F = double, class M = XT::LA::IstlRowMajorSparseMatrix<F>, class SGV = AGV, class RGV = AGV>
Dune::GDT::MatrixOperator<AGV, s_r, s_rC, r_r, r_rC, F, M, SGV, RGV>::MatrixOperator<AGV, s_r, s_rC, r_r, r_rC, F, M, SGV, RGV>(ThisType &&source) noexcept = default

No documentation provided.

Field Dune::GDT::MatrixOperator::scaling

FieldType Dune::GDT::MatrixOperator::scaling

Defines the scaling of the to-be-appended jacobian contributions

See also: ConstantMatrixOperator::jacobian, OperatorInterface::apply_inverse

Type alias Dune::GDT::MatrixOperator::MatrixStorage

type Dune::GDT::MatrixOperator::MatrixStorage

No documentation provided.

Type alias Dune::GDT::MatrixOperator::ThisType

type Dune::GDT::MatrixOperator::ThisType

No documentation provided.

Type alias Dune::GDT::MatrixOperator::BaseOperatorType

type Dune::GDT::MatrixOperator::BaseOperatorType

No documentation provided.

Type alias Dune::GDT::MatrixOperator::BaseFunctorType

type Dune::GDT::MatrixOperator::BaseFunctorType

No documentation provided.

Type alias Dune::GDT::MatrixOperator::ElementFilterType

type Dune::GDT::MatrixOperator::ElementFilterType

No documentation provided.

Type alias Dune::GDT::MatrixOperator::IntersectionFilterType

type Dune::GDT::MatrixOperator::IntersectionFilterType

No documentation provided.

Type alias Dune::GDT::MatrixOperator::ApplyOnAllElements

type Dune::GDT::MatrixOperator::ApplyOnAllElements

No documentation provided.

Type alias Dune::GDT::MatrixOperator::ApplyOnAllIntersections

type Dune::GDT::MatrixOperator::ApplyOnAllIntersections

No documentation provided.

Type alias Dune::GDT::MatrixOperator::LocalElementBilinearFormAssemblerType

type Dune::GDT::MatrixOperator::LocalElementBilinearFormAssemblerType

No documentation provided.

Type alias Dune::GDT::MatrixOperator::LocalCouplingIntersectionBilinearFormAssemblerType

type Dune::GDT::MatrixOperator::LocalCouplingIntersectionBilinearFormAssemblerType

No documentation provided.

Type alias Dune::GDT::MatrixOperator::LocalIntersectionBilinearFormAssemblerType

type Dune::GDT::MatrixOperator::LocalIntersectionBilinearFormAssemblerType

No documentation provided.

Type alias Dune::GDT::MatrixOperator::LocalElementOperatorFiniteDifferenceJacobianAssemblerType

type Dune::GDT::MatrixOperator::LocalElementOperatorFiniteDifferenceJacobianAssemblerType

No documentation provided.

Type alias Dune::GDT::MatrixOperator::LocalIntersectionOperatorFiniteDifferenceJacobianAssemblerType

type Dune::GDT::MatrixOperator::LocalIntersectionOperatorFiniteDifferenceJacobianAssemblerType

No documentation provided.

Type alias Dune::GDT::MatrixOperator::BilinearFormType

type Dune::GDT::MatrixOperator::BilinearFormType

No documentation provided.