dune-pdelab  2.0.0
Public Types | Public Member Functions | List of all members
Dune::PDELab::DiffusionMFD< Data, WBuilder > Class Template Reference

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

Inheritance diagram for Dune::PDELab::DiffusionMFD< Data, WBuilder >:
Inheritance graph

Public Types

enum  { doPatternVolume = true }
 
enum  { doAlphaVolume = true }
 
enum  { doSkeletonTwoSided = true }
 
enum  { doAlphaSkeleton = true }
 
enum  { doAlphaBoundary = true }
 
enum  { doAlphaVolumePostSkeleton = true }
 
enum  { doLambdaVolume = true }
 
enum  { doLambdaBoundary = true }
 
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...
 

Public Member Functions

 DiffusionMFD (const Data &data_, const WBuilder &wbuilder_=WBuilder())
 
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 IG , typename LFSU , typename X , typename LFSV , typename R >
void alpha_skeleton (const IG &ig, const LFSU &lfsu_s, const X &x_s, const LFSV &lfsv_s, const LFSU &lfsu_n, const X &x_n, const LFSV &lfsv_n, R &r_s, R &r_n) const
 
template<typename IG , typename LFSU , typename X , typename LFSV , typename R >
void alpha_boundary (const IG &ig, const LFSU &lfsu_s, const X &x_s, const LFSV &lfsv_s, R &r_s) const
 
template<typename EG , typename LFSU , typename X , typename LFSV , typename R >
void alpha_volume_post_skeleton (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 M >
void jacobian_volume (const EG &eg, const LFSU &lfsu, const X &x, const LFSV &lfsv, M &mat) const
 
template<typename IG , typename LFSU , typename X , typename LFSV , typename M >
void jacobian_skeleton (const IG &ig, const LFSU &lfsu_s, const X &x_s, const LFSV &lfsv_s, const LFSU &lfsu_n, const X &x_n, const LFSV &lfsv_n, M &mat_ss, M &mat_sn, M &mat_ns, M &mat_nn) const
 
template<typename IG , typename LFSU , typename X , typename LFSV , typename M >
void jacobian_boundary (const IG &ig, const LFSU &lfsu_s, const X &x_s, const LFSV &lfsv_s, M &mat_ss) const
 
template<typename EG , typename LFSU , typename X , typename LFSV , typename M >
void jacobian_volume_post_skeleton (const EG &eg, const LFSU &lfsu, const X &x, const LFSV &lfsv, M &mat) 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 IG , typename LFSU , typename X , typename LFSV , typename Y >
void jacobian_apply_skeleton (const IG &ig, const LFSU &lfsu_s, const X &x_s, const LFSV &lfsv_s, const LFSU &lfsu_n, const X &x_n, const LFSV &lfsv_n, Y &y_s, Y &y_n) const
 
template<typename IG , typename LFSU , typename X , typename LFSV , typename Y >
void jacobian_apply_boundary (const IG &ig, const LFSU &lfsu_s, const X &x_s, const LFSV &lfsv_s, Y &y_s) const
 
template<typename EG , typename LFSU , typename X , typename LFSV , typename Y >
void jacobian_apply_volume_post_skeleton (const EG &eg, const LFSU &lfsu, const X &x, const LFSV &lfsv, Y &y) const
 
template<typename EG , typename LFSV , typename R >
void lambda_volume (const EG &eg, const LFSV &lfsv, R &r) const
 
template<typename IG , typename LFSV , typename R >
void lambda_boundary (const IG &ig, const LFSV &lfsv, R &r) const
 
template<typename LFSU , typename LFSV , typename LocalPattern >
void pattern_volume (const LFSU &lfsu, const LFSV &lfsv, LocalPattern &pattern) const
 

Detailed Description

template<class Data, class WBuilder = MimeticBrezziW<typename Data::ctype,Data::dimension>>
class Dune::PDELab::DiffusionMFD< Data, WBuilder >

a local operator for solving the diffusion equation

\begin{align*} - \nabla\cdot\{K(x) \nabla u\} + a_0 u &=& f \mbox{ in } \Omega, \\ u &=& g \mbox{ on } \partial\Omega_D \\ -(K(x)\nabla u) \cdot \nu &=& j \mbox{ on } \partial\Omega_N \\ \end{align*}

with a mimetic finite difference method on all types of grids in any dimension

Template Parameters
Datacontains methods K, a_0, f, g and j giving the equation data and bcType to define the boundary condition type
WBuilderbuilds the local scalar product matrix

Member Enumeration Documentation

template<class Data , class WBuilder = MimeticBrezziW<typename Data::ctype,Data::dimension>>
anonymous enum
Enumerator
doPatternVolume 
template<class Data , class WBuilder = MimeticBrezziW<typename Data::ctype,Data::dimension>>
anonymous enum
Enumerator
doAlphaVolume 
template<class Data , class WBuilder = MimeticBrezziW<typename Data::ctype,Data::dimension>>
anonymous enum
Enumerator
doSkeletonTwoSided 
template<class Data , class WBuilder = MimeticBrezziW<typename Data::ctype,Data::dimension>>
anonymous enum
Enumerator
doAlphaSkeleton 
template<class Data , class WBuilder = MimeticBrezziW<typename Data::ctype,Data::dimension>>
anonymous enum
Enumerator
doAlphaBoundary 
template<class Data , class WBuilder = MimeticBrezziW<typename Data::ctype,Data::dimension>>
anonymous enum
Enumerator
doAlphaVolumePostSkeleton 
template<class Data , class WBuilder = MimeticBrezziW<typename Data::ctype,Data::dimension>>
anonymous enum
Enumerator
doLambdaVolume 
template<class Data , class WBuilder = MimeticBrezziW<typename Data::ctype,Data::dimension>>
anonymous enum
Enumerator
doLambdaBoundary 
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
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
inherited

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

Enumerator
doPatternSkeleton 
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
inherited

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

Enumerator
doAlphaVolume 
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
inherited

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

Enumerator
doAlphaSkeleton 
anonymous enum
inherited

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

Enumerator
doAlphaBoundary 
anonymous enum
inherited

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

Enumerator
doLambdaVolume 
anonymous enum
inherited

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

Enumerator
doLambdaVolumePostSkeleton 
anonymous enum
inherited

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

Enumerator
doLambdaSkeleton 
anonymous enum
inherited

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

Enumerator
doLambdaBoundary 
anonymous enum
inherited

Whether to visit the skeleton methods from both sides.

Enumerator
doSkeletonTwoSided 

Constructor & Destructor Documentation

template<class Data , class WBuilder = MimeticBrezziW<typename Data::ctype,Data::dimension>>
Dune::PDELab::DiffusionMFD< Data, WBuilder >::DiffusionMFD ( const Data &  data_,
const WBuilder &  wbuilder_ = WBuilder() 
)
inline

Member Function Documentation

template<class Data , class WBuilder = MimeticBrezziW<typename Data::ctype,Data::dimension>>
template<typename IG , typename LFSU , typename X , typename LFSV , typename R >
void Dune::PDELab::DiffusionMFD< Data, WBuilder >::alpha_boundary ( const IG &  ig,
const LFSU &  lfsu_s,
const X &  x_s,
const LFSV &  lfsv_s,
R &  r_s 
) const
inline
template<class Data , class WBuilder = MimeticBrezziW<typename Data::ctype,Data::dimension>>
template<typename IG , typename LFSU , typename X , typename LFSV , typename R >
void Dune::PDELab::DiffusionMFD< Data, WBuilder >::alpha_skeleton ( const IG &  ig,
const LFSU &  lfsu_s,
const X &  x_s,
const LFSV &  lfsv_s,
const LFSU &  lfsu_n,
const X &  x_n,
const LFSV &  lfsv_n,
R &  r_s,
R &  r_n 
) const
inline
template<class Data , class WBuilder = MimeticBrezziW<typename Data::ctype,Data::dimension>>
template<typename EG , typename LFSU , typename X , typename LFSV , typename R >
void Dune::PDELab::DiffusionMFD< Data, WBuilder >::alpha_volume ( const EG &  eg,
const LFSU &  lfsu,
const X &  x,
const LFSV &  lfsv,
R &  r 
) const
inline
template<class Data , class WBuilder = MimeticBrezziW<typename Data::ctype,Data::dimension>>
template<typename EG , typename LFSU , typename X , typename LFSV , typename R >
void Dune::PDELab::DiffusionMFD< Data, WBuilder >::alpha_volume_post_skeleton ( const EG &  eg,
const LFSU &  lfsu,
const X &  x,
const LFSV &  lfsv,
R &  r 
) const
inline

References e, and f.

template<class Data , class WBuilder = MimeticBrezziW<typename Data::ctype,Data::dimension>>
template<typename IG , typename LFSU , typename X , typename LFSV , typename Y >
void Dune::PDELab::DiffusionMFD< Data, WBuilder >::jacobian_apply_boundary ( const IG &  ig,
const LFSU &  lfsu_s,
const X &  x_s,
const LFSV &  lfsv_s,
Y &  y_s 
) const
inline
template<class Data , class WBuilder = MimeticBrezziW<typename Data::ctype,Data::dimension>>
template<typename IG , typename LFSU , typename X , typename LFSV , typename Y >
void Dune::PDELab::DiffusionMFD< Data, WBuilder >::jacobian_apply_skeleton ( const IG &  ig,
const LFSU &  lfsu_s,
const X &  x_s,
const LFSV &  lfsv_s,
const LFSU &  lfsu_n,
const X &  x_n,
const LFSV &  lfsv_n,
Y &  y_s,
Y &  y_n 
) const
inline
template<class Data , class WBuilder = MimeticBrezziW<typename Data::ctype,Data::dimension>>
template<typename EG , typename LFSU , typename X , typename LFSV , typename Y >
void Dune::PDELab::DiffusionMFD< Data, WBuilder >::jacobian_apply_volume ( const EG &  eg,
const LFSU &  lfsu,
const X &  x,
const LFSV &  lfsv,
Y &  y 
) const
inline
template<class Data , class WBuilder = MimeticBrezziW<typename Data::ctype,Data::dimension>>
template<typename EG , typename LFSU , typename X , typename LFSV , typename Y >
void Dune::PDELab::DiffusionMFD< Data, WBuilder >::jacobian_apply_volume_post_skeleton ( const EG &  eg,
const LFSU &  lfsu,
const X &  x,
const LFSV &  lfsv,
Y &  y 
) const
inline

References e, and f.

template<class Data , class WBuilder = MimeticBrezziW<typename Data::ctype,Data::dimension>>
template<typename IG , typename LFSU , typename X , typename LFSV , typename M >
void Dune::PDELab::DiffusionMFD< Data, WBuilder >::jacobian_boundary ( const IG &  ig,
const LFSU &  lfsu_s,
const X &  x_s,
const LFSV &  lfsv_s,
M &  mat_ss 
) const
inline
template<class Data , class WBuilder = MimeticBrezziW<typename Data::ctype,Data::dimension>>
template<typename IG , typename LFSU , typename X , typename LFSV , typename M >
void Dune::PDELab::DiffusionMFD< Data, WBuilder >::jacobian_skeleton ( const IG &  ig,
const LFSU &  lfsu_s,
const X &  x_s,
const LFSV &  lfsv_s,
const LFSU &  lfsu_n,
const X &  x_n,
const LFSV &  lfsv_n,
M &  mat_ss,
M &  mat_sn,
M &  mat_ns,
M &  mat_nn 
) const
inline
template<class Data , class WBuilder = MimeticBrezziW<typename Data::ctype,Data::dimension>>
template<typename EG , typename LFSU , typename X , typename LFSV , typename M >
void Dune::PDELab::DiffusionMFD< Data, WBuilder >::jacobian_volume ( const EG &  eg,
const LFSU &  lfsu,
const X &  x,
const LFSV &  lfsv,
M &  mat 
) const
inline
template<class Data , class WBuilder = MimeticBrezziW<typename Data::ctype,Data::dimension>>
template<typename EG , typename LFSU , typename X , typename LFSV , typename M >
void Dune::PDELab::DiffusionMFD< Data, WBuilder >::jacobian_volume_post_skeleton ( const EG &  eg,
const LFSU &  lfsu,
const X &  x,
const LFSV &  lfsv,
M &  mat 
) const
inline

References e, and f.

template<class Data , class WBuilder = MimeticBrezziW<typename Data::ctype,Data::dimension>>
template<typename IG , typename LFSV , typename R >
void Dune::PDELab::DiffusionMFD< Data, WBuilder >::lambda_boundary ( const IG &  ig,
const LFSV &  lfsv,
R &  r 
) const
inline

References e.

template<class Data , class WBuilder = MimeticBrezziW<typename Data::ctype,Data::dimension>>
template<typename EG , typename LFSV , typename R >
void Dune::PDELab::DiffusionMFD< Data, WBuilder >::lambda_volume ( const EG &  eg,
const LFSV &  lfsv,
R &  r 
) const
inline
template<typename LFSU , typename LFSV , typename LocalPattern >
void Dune::PDELab::FullVolumePattern::pattern_volume ( const LFSU &  lfsu,
const LFSV &  lfsv,
LocalPattern &  pattern 
) const
inlineinherited

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