dune-pdelab 2.7-git
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Static Public Attributes | List of all members
Dune::PDELab::BlockDiagonalLocalOperatorFullCoupling< ScalarLOP > Class Template Reference

Block diagonal extension of scalar local operator. More...

#include <dune/pdelab/localoperator/blockdiagonal.hh>

Inheritance diagram for Dune::PDELab::BlockDiagonalLocalOperatorFullCoupling< ScalarLOP >:
Inheritance graph

Public Types

using RealType = typename ScalarLOP::RealType
 
Flags for the sparsity pattern
enum  { doPatternVolume }
 Whether to assemble the pattern on the elements, i.e. whether or not pattern_volume() should be called. More...
 
enum  { doPatternVolumePostSkeleton }
 Whether to assemble the pattern on the elements after the skeleton has been handled, i.e. whether or not pattern_volume_post_skeleton() should be called. More...
 
enum  { doPatternSkeleton }
 Whether to assemble the pattern on the interior intersections, i.e. whether or not pattern_skeleton() should be called. More...
 
enum  { doPatternBoundary }
 Whether to assemble the pattern on the boundary intersections, i.e. whether or not pattern_boundary() should be called. More...
 
Flags for the non-constant part of the residual and the jacobian
enum  { doAlphaVolume }
 Whether to call the local operator's alpha_volume(), jacobian_apply_volume() and jacobian_volume(). More...
 
enum  { doAlphaVolumePostSkeleton }
 Whether to call the local operator's alpha_volume_post_skeleton(), jacobian_apply_volume_post_skeleton() and jacobian_volume_post_skeleton(). More...
 
enum  { doAlphaSkeleton }
 Whether to call the local operator's alpha_skeleton(), jacobian_apply_skeleton() and jacobian_skeleton(). More...
 
enum  { doAlphaBoundary }
 Whether to call the local operator's alpha_boundary(), jacobian_apply_boundary() and jacobian_boundary(). More...
 
Flags for the constant part of the residual
enum  { doLambdaVolume }
 Whether to call the local operator's lambda_volume(). More...
 
enum  { doLambdaVolumePostSkeleton }
 Whether to call the local operator's lambda_volume_post_skeleton(). More...
 
enum  { doLambdaSkeleton }
 Whether to call the local operator's lambda_skeleton(). More...
 
enum  { doLambdaBoundary }
 Whether to call the local operator's lambda_boundary(). More...
 
Special flags
enum  { doSkeletonTwoSided }
 Whether to visit the skeleton methods from both sides. More...
 
enum  { isLinear }
 Wheter the local operator describes a linear problem. More...
 

Public Member Functions

 BlockDiagonalLocalOperatorFullCoupling (const std::shared_ptr< ScalarLOP > &scalar_lop)
 Constructs the adapter by wrapping an existing shared_ptr to the scalar operator.
 
 BlockDiagonalLocalOperatorFullCoupling (std::shared_ptr< ScalarLOP > &scalar_lop)
 Constructs the adapter by wrapping an existing shared_ptr to the scalar operator.
 
template<typename... ScalarOperatorArgs>
 BlockDiagonalLocalOperatorFullCoupling (ScalarOperatorArgs &&... scalarOperatorArgs)
 Constructs the adapter and creates a scalar operator with the given arguments.
 
template<typename EG , typename LFSU , typename X , typename LFSV , typename R >
void alpha_volume (const EG &eg, const LFSU &lfsu, const X &x, const LFSV &lfsv, R &r) const
 
template<typename EG , typename LFSU , typename X , typename LFSV , typename Y >
void jacobian_apply_volume (const EG &eg, const LFSU &lfsu, const X &x, const LFSV &lfsv, Y &y) const
 
template<typename EG , typename LFSU , typename X , typename LFSV , typename M >
void jacobian_volume (const EG &eg, const LFSU &lfsu, const X &x, const LFSV &lfsv, M &mat) const
 
void setTime (RealType t)
 
RealType getTime () const
 
void preStep (RealType time, RealType dt, int stages)
 
void postStep ()
 
void preStage (RealType time, int r)
 
int getStage () const
 
void postStage ()
 
RealType suggestTimestep (RealType dt) const
 
template<typename LFSU , typename LFSV , typename LocalPattern >
void pattern_volume (const LFSU &lfsu, const LFSV &lfsv, LocalPattern &pattern) const
 

Static Public Attributes

static constexpr bool doPatternVolume = true
 
static constexpr bool doAlphaVolume = true
 

Detailed Description

template<typename ScalarLOP>
class Dune::PDELab::BlockDiagonalLocalOperatorFullCoupling< ScalarLOP >

Block diagonal extension of scalar local operator.

This adapter class takes an existing local operator that only has volume methods and extends it in a block diagonal fashion to trees of function spaces.

The scalar operator is stored internally as a shared_ptr, so you can either construct the adapter from a shared_ptr to a scalar space, or you can pass it constructor arguments for the scalar space and let the adapter construct the scalar space from them.

The wrapper also implements the instationary local operator interface by forwarding all calls to the scalar operator.

If the operator is used to create a matrix, the sparsity pattern will contain all off-diagonal entries for each grid cell.

Member Typedef Documentation

◆ RealType

template<typename ScalarLOP >
using Dune::PDELab::BlockDiagonalLocalOperatorFullCoupling< ScalarLOP >::RealType = typename ScalarLOP::RealType

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
inherited

Whether to assemble the pattern on the elements, i.e. whether or not pattern_volume() should be called.

Enumerator
doPatternVolume 

◆ anonymous enum

anonymous enum
inherited

Whether to assemble the pattern on the elements after the skeleton has been handled, i.e. whether or not pattern_volume_post_skeleton() should be called.

Enumerator
doPatternVolumePostSkeleton 

◆ anonymous enum

anonymous enum
inherited

Whether to assemble the pattern on the interior intersections, i.e. whether or not pattern_skeleton() should be called.

Enumerator
doPatternSkeleton 

◆ anonymous enum

anonymous enum
inherited

Whether to assemble the pattern on the boundary intersections, i.e. whether or not pattern_boundary() should be called.

Enumerator
doPatternBoundary 

◆ anonymous enum

anonymous enum
inherited

Whether to call the local operator's alpha_volume(), jacobian_apply_volume() and jacobian_volume().

Enumerator
doAlphaVolume 

◆ anonymous enum

anonymous enum
inherited

Whether to call the local operator's alpha_volume_post_skeleton(), jacobian_apply_volume_post_skeleton() and jacobian_volume_post_skeleton().

Enumerator
doAlphaVolumePostSkeleton 

◆ anonymous enum

anonymous enum
inherited

Whether to call the local operator's alpha_skeleton(), jacobian_apply_skeleton() and jacobian_skeleton().

Enumerator
doAlphaSkeleton 

◆ anonymous enum

anonymous enum
inherited

Whether to call the local operator's alpha_boundary(), jacobian_apply_boundary() and jacobian_boundary().

Enumerator
doAlphaBoundary 

◆ anonymous enum

anonymous enum
inherited

Whether to call the local operator's lambda_volume().

Enumerator
doLambdaVolume 

◆ anonymous enum

anonymous enum
inherited

Whether to call the local operator's lambda_volume_post_skeleton().

Enumerator
doLambdaVolumePostSkeleton 

◆ anonymous enum

anonymous enum
inherited

Whether to call the local operator's lambda_skeleton().

Enumerator
doLambdaSkeleton 

◆ anonymous enum

anonymous enum
inherited

Whether to call the local operator's lambda_boundary().

Enumerator
doLambdaBoundary 

◆ anonymous enum

anonymous enum
inherited

Whether to visit the skeleton methods from both sides.

Enumerator
doSkeletonTwoSided 

◆ anonymous enum

anonymous enum
inherited

Wheter the local operator describes a linear problem.

Enumerator
isLinear 

Constructor & Destructor Documentation

◆ BlockDiagonalLocalOperatorFullCoupling() [1/3]

template<typename ScalarLOP >
Dune::PDELab::BlockDiagonalLocalOperatorFullCoupling< ScalarLOP >::BlockDiagonalLocalOperatorFullCoupling ( const std::shared_ptr< ScalarLOP > &  scalar_lop)
inline

Constructs the adapter by wrapping an existing shared_ptr to the scalar operator.

◆ BlockDiagonalLocalOperatorFullCoupling() [2/3]

template<typename ScalarLOP >
Dune::PDELab::BlockDiagonalLocalOperatorFullCoupling< ScalarLOP >::BlockDiagonalLocalOperatorFullCoupling ( std::shared_ptr< ScalarLOP > &  scalar_lop)
inline

Constructs the adapter by wrapping an existing shared_ptr to the scalar operator.

◆ BlockDiagonalLocalOperatorFullCoupling() [3/3]

template<typename ScalarLOP >
template<typename... ScalarOperatorArgs>
Dune::PDELab::BlockDiagonalLocalOperatorFullCoupling< ScalarLOP >::BlockDiagonalLocalOperatorFullCoupling ( ScalarOperatorArgs &&...  scalarOperatorArgs)
inline

Constructs the adapter and creates a scalar operator with the given arguments.

Member Function Documentation

◆ alpha_volume()

template<typename ScalarLOP >
template<typename EG , typename LFSU , typename X , typename LFSV , typename R >
void Dune::PDELab::BlockDiagonalLocalOperatorFullCoupling< ScalarLOP >::alpha_volume ( const EG &  eg,
const LFSU &  lfsu,
const X &  x,
const LFSV &  lfsv,
R &  r 
) const
inline

◆ getStage()

template<typename ScalarLOP >
int Dune::PDELab::BlockDiagonalLocalOperatorFullCoupling< ScalarLOP >::getStage ( ) const
inline

◆ getTime()

template<typename ScalarLOP >
RealType Dune::PDELab::BlockDiagonalLocalOperatorFullCoupling< ScalarLOP >::getTime ( ) const
inline

◆ jacobian_apply_volume()

template<typename ScalarLOP >
template<typename EG , typename LFSU , typename X , typename LFSV , typename Y >
void Dune::PDELab::BlockDiagonalLocalOperatorFullCoupling< ScalarLOP >::jacobian_apply_volume ( const EG &  eg,
const LFSU &  lfsu,
const X &  x,
const LFSV &  lfsv,
Y &  y 
) const
inline

◆ jacobian_volume()

template<typename ScalarLOP >
template<typename EG , typename LFSU , typename X , typename LFSV , typename M >
void Dune::PDELab::BlockDiagonalLocalOperatorFullCoupling< ScalarLOP >::jacobian_volume ( const EG &  eg,
const LFSU &  lfsu,
const X &  x,
const LFSV &  lfsv,
M &  mat 
) const
inline

◆ pattern_volume()

template<typename LFSU , typename LFSV , typename LocalPattern >
void Dune::PDELab::FullVolumePattern::pattern_volume ( const LFSU &  lfsu,
const LFSV &  lfsv,
LocalPattern &  pattern 
) const
inlineinherited

◆ postStage()

template<typename ScalarLOP >
void Dune::PDELab::BlockDiagonalLocalOperatorFullCoupling< ScalarLOP >::postStage ( )
inline

◆ postStep()

template<typename ScalarLOP >
void Dune::PDELab::BlockDiagonalLocalOperatorFullCoupling< ScalarLOP >::postStep ( )
inline

◆ preStage()

template<typename ScalarLOP >
void Dune::PDELab::BlockDiagonalLocalOperatorFullCoupling< ScalarLOP >::preStage ( RealType  time,
int  r 
)
inline

◆ preStep()

template<typename ScalarLOP >
void Dune::PDELab::BlockDiagonalLocalOperatorFullCoupling< ScalarLOP >::preStep ( RealType  time,
RealType  dt,
int  stages 
)
inline

◆ setTime()

template<typename ScalarLOP >
void Dune::PDELab::BlockDiagonalLocalOperatorFullCoupling< ScalarLOP >::setTime ( RealType  t)
inline

◆ suggestTimestep()

template<typename ScalarLOP >
RealType Dune::PDELab::BlockDiagonalLocalOperatorFullCoupling< ScalarLOP >::suggestTimestep ( RealType  dt) const
inline

Member Data Documentation

◆ doAlphaVolume

template<typename ScalarLOP >
constexpr bool Dune::PDELab::BlockDiagonalLocalOperatorFullCoupling< ScalarLOP >::doAlphaVolume = true
staticconstexpr

◆ doPatternVolume

template<typename ScalarLOP >
constexpr bool Dune::PDELab::BlockDiagonalLocalOperatorFullCoupling< ScalarLOP >::doPatternVolume = true
staticconstexpr

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