dune-pdelab 2.7-git
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Static Public Attributes | List of all members
Dune::PDELab::impl::BlockDiagonalOperator< BlockDiagonalLocalOperator, W, XView, EG, LFSU, LFSV > Struct Template Reference

Create ISTL operator that applies a local block diagonal. More...

#include <dune/pdelab/backend/istl/matrixfree/iterativeblockjacobipreconditioner.hh>

Inheritance diagram for Dune::PDELab::impl::BlockDiagonalOperator< BlockDiagonalLocalOperator, W, XView, EG, LFSU, LFSV >:
Inheritance graph

Public Types

using Base = Dune::LinearOperator< W, W >
 
using field_type = typename Base::field_type
 
using weight_type = typename W::WeightedAccumulationView::weight_type
 

Public Member Functions

Dune::SolverCategory::Category category () const override
 
 BlockDiagonalOperator (const BlockDiagonalLocalOperator &blockDiagonalLocalOperator, const EG &eg, const LFSU &lfsu, const LFSV &lfsv)
 
void apply (const W &z, W &y) const override
 
void applyscaleadd (field_type alpha, const W &z, W &y) const override
 
void setLinearizationPoint (const XView &u)
 
void setWeight (const weight_type &weight)
 

Static Public Attributes

static constexpr bool isLinear = BlockDiagonalLocalOperator::isLinear
 

Detailed Description

template<typename BlockDiagonalLocalOperator, typename W, typename XView, typename EG, typename LFSU, typename LFSV>
struct Dune::PDELab::impl::BlockDiagonalOperator< BlockDiagonalLocalOperator, W, XView, EG, LFSU, LFSV >

Create ISTL operator that applies a local block diagonal.

This class is similar to the OnTheFlyOperator in the sense that a local operator is used to create an ISTL operator can be used to solve a linear system of equations in a matrix free way.

Where the OnTheFlyOperator takes a grid operator and solves a global system, this class only solves the local block diagonal system.

Member Typedef Documentation

◆ Base

template<typename BlockDiagonalLocalOperator , typename W , typename XView , typename EG , typename LFSU , typename LFSV >
using Dune::PDELab::impl::BlockDiagonalOperator< BlockDiagonalLocalOperator, W, XView, EG, LFSU, LFSV >::Base = Dune::LinearOperator<W,W>

◆ field_type

template<typename BlockDiagonalLocalOperator , typename W , typename XView , typename EG , typename LFSU , typename LFSV >
using Dune::PDELab::impl::BlockDiagonalOperator< BlockDiagonalLocalOperator, W, XView, EG, LFSU, LFSV >::field_type = typename Base::field_type

◆ weight_type

template<typename BlockDiagonalLocalOperator , typename W , typename XView , typename EG , typename LFSU , typename LFSV >
using Dune::PDELab::impl::BlockDiagonalOperator< BlockDiagonalLocalOperator, W, XView, EG, LFSU, LFSV >::weight_type = typename W::WeightedAccumulationView::weight_type

Constructor & Destructor Documentation

◆ BlockDiagonalOperator()

template<typename BlockDiagonalLocalOperator , typename W , typename XView , typename EG , typename LFSU , typename LFSV >
Dune::PDELab::impl::BlockDiagonalOperator< BlockDiagonalLocalOperator, W, XView, EG, LFSU, LFSV >::BlockDiagonalOperator ( const BlockDiagonalLocalOperator &  blockDiagonalLocalOperator,
const EG &  eg,
const LFSU &  lfsu,
const LFSV &  lfsv 
)
inline

Member Function Documentation

◆ apply()

template<typename BlockDiagonalLocalOperator , typename W , typename XView , typename EG , typename LFSU , typename LFSV >
void Dune::PDELab::impl::BlockDiagonalOperator< BlockDiagonalLocalOperator, W, XView, EG, LFSU, LFSV >::apply ( const W &  z,
W &  y 
) const
inlineoverride

◆ applyscaleadd()

template<typename BlockDiagonalLocalOperator , typename W , typename XView , typename EG , typename LFSU , typename LFSV >
void Dune::PDELab::impl::BlockDiagonalOperator< BlockDiagonalLocalOperator, W, XView, EG, LFSU, LFSV >::applyscaleadd ( field_type  alpha,
const W &  z,
W &  y 
) const
inlineoverride

◆ category()

template<typename BlockDiagonalLocalOperator , typename W , typename XView , typename EG , typename LFSU , typename LFSV >
Dune::SolverCategory::Category Dune::PDELab::impl::BlockDiagonalOperator< BlockDiagonalLocalOperator, W, XView, EG, LFSU, LFSV >::category ( ) const
inlineoverride

◆ setLinearizationPoint()

template<typename BlockDiagonalLocalOperator , typename W , typename XView , typename EG , typename LFSU , typename LFSV >
void Dune::PDELab::impl::BlockDiagonalOperator< BlockDiagonalLocalOperator, W, XView, EG, LFSU, LFSV >::setLinearizationPoint ( const XView &  u)
inline

◆ setWeight()

template<typename BlockDiagonalLocalOperator , typename W , typename XView , typename EG , typename LFSU , typename LFSV >
void Dune::PDELab::impl::BlockDiagonalOperator< BlockDiagonalLocalOperator, W, XView, EG, LFSU, LFSV >::setWeight ( const weight_type weight)
inline

Member Data Documentation

◆ isLinear

template<typename BlockDiagonalLocalOperator , typename W , typename XView , typename EG , typename LFSU , typename LFSV >
constexpr bool Dune::PDELab::impl::BlockDiagonalOperator< BlockDiagonalLocalOperator, W, XView, EG, LFSU, LFSV >::isLinear = BlockDiagonalLocalOperator::isLinear
staticconstexpr

The documentation for this struct was generated from the following file: