dune-pdelab  2.5-dev
Public Types | Public Member Functions | List of all members
Dune::PDELab::ConvectionDiffusionCCFV< TP > Class Template Reference

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

Inheritance diagram for Dune::PDELab::ConvectionDiffusionCCFV< TP >:
Inheritance graph

Public Types

enum  { doPatternVolume = true }
 
enum  { doPatternSkeleton = true }
 
enum  { doAlphaVolume = true }
 
enum  { doAlphaSkeleton = true }
 
enum  { doAlphaBoundary = true }
 
enum  { doLambdaVolume = true }
 
enum  { doLambdaSkeleton = false }
 
enum  { doLambdaBoundary = false }
 
typedef TP::Traits::RangeFieldType 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...
 

Public Member Functions

 ConvectionDiffusionCCFV (TP &param_)
 
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
 
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 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 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 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 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 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 LFSV , typename R >
void lambda_volume (const EG &eg, const LFSV &lfsv, R &r) const
 
void setTime (typename TP::Traits::RangeFieldType t)
 set time in parameter class More...
 
void preStep (typename TP::Traits::RangeFieldType time, typename TP::Traits::RangeFieldType dt, int stages)
 to be called once before each time step More...
 
void preStage (typename TP::Traits::RangeFieldType time, int r)
 to be called once before each stage More...
 
void postStage ()
 to be called once at the end of each stage More...
 
TP::Traits::RangeFieldType suggestTimestep (typename TP::Traits::RangeFieldType dt) const
 to be called once before each stage More...
 
void jacobian_apply_boundary (const IG &ig, const LFSU &lfsu_s, const X &x_s, const LFSV &lfsv_s, Y &y_s) const
 apply local jacobian of the boundaryterm More...
 
void jacobian_apply_boundary (const IG &ig, const LFSU &lfsu_s, const X &x_s, const X &z_s, const LFSV &lfsv_s, Y &y_s) const
 apply local jacobian of the boundaryterm More...
 
template<typename LFSU , typename LFSV , typename LocalPattern >
void pattern_skeleton (const LFSU &lfsu_s, const LFSV &lfsv_s, const LFSU &lfsu_n, const LFSV &lfsv_n, LocalPattern &pattern_sn, LocalPattern &pattern_ns) const
 
template<typename LFSU , typename LFSV , typename LocalPattern >
void pattern_volume (const LFSU &lfsu, const LFSV &lfsv, LocalPattern &pattern) const
 
TP::Traits::RangeFieldType getTime () const
 get current time More...
 
void postStep ()
 to be called once at the end of each time step More...
 
int getStage () const
 get current stage More...
 

Detailed Description

template<typename TP>
class Dune::PDELab::ConvectionDiffusionCCFV< TP >

a local operator for solving the linear convection-diffusion equation with CCFV

\begin{align*} \nabla\cdot(-A(x) \nabla u + b(x) u) + c(x)u &=& f \mbox{ in } \Omega, \\ u(t,x) &=& g(t,x) \mbox{ on } \partial\Omega_D \\ (b(x) u - A(x)\nabla u) \cdot n &=& j \mbox{ on } \partial\Omega_N \\ -(A(x)\nabla u) \cdot n &=& o \mbox{ on } \partial\Omega_O \end{align*}

Note:

Template Parameters
TPmodel of ConvectionDiffusionParameterInterface

Member Typedef Documentation

◆ RealType

typedef TP::Traits::RangeFieldType Dune::PDELab::InstationaryLocalOperatorDefaultMethods< TP::Traits::RangeFieldType >::RealType
inherited

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

template<typename TP >
anonymous enum
Enumerator
doPatternVolume 

◆ anonymous enum

template<typename TP >
anonymous enum
Enumerator
doPatternSkeleton 

◆ anonymous enum

template<typename TP >
anonymous enum
Enumerator
doAlphaVolume 

◆ anonymous enum

template<typename TP >
anonymous enum
Enumerator
doAlphaSkeleton 

◆ anonymous enum

template<typename TP >
anonymous enum
Enumerator
doAlphaBoundary 

◆ anonymous enum

template<typename TP >
anonymous enum
Enumerator
doLambdaVolume 

◆ anonymous enum

template<typename TP >
anonymous enum
Enumerator
doLambdaSkeleton 

◆ anonymous enum

template<typename TP >
anonymous enum
Enumerator
doLambdaBoundary 

Constructor & Destructor Documentation

◆ ConvectionDiffusionCCFV()

template<typename TP >
Dune::PDELab::ConvectionDiffusionCCFV< TP >::ConvectionDiffusionCCFV ( TP &  param_)
inline

Member Function Documentation

◆ alpha_boundary()

template<typename TP >
template<typename IG , typename LFSU , typename X , typename LFSV , typename R >
void Dune::PDELab::ConvectionDiffusionCCFV< TP >::alpha_boundary ( const IG &  ig,
const LFSU &  lfsu_s,
const X &  x_s,
const LFSV &  lfsv_s,
R &  r_s 
) const
inline

◆ alpha_skeleton()

template<typename TP >
template<typename IG , typename LFSU , typename X , typename LFSV , typename R >
void Dune::PDELab::ConvectionDiffusionCCFV< TP >::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

◆ alpha_volume()

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

◆ alpha_volume_post_skeleton()

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

◆ getStage()

int Dune::PDELab::InstationaryLocalOperatorDefaultMethods< TP::Traits::RangeFieldType >::getStage ( ) const
inlineinherited

get current stage

Returns
The current stage number previously set by preStage().

◆ getTime()

TP::Traits::RangeFieldType Dune::PDELab::InstationaryLocalOperatorDefaultMethods< TP::Traits::RangeFieldType >::getTime ( ) const
inlineinherited

get current time

Returns
The time previously set by setTime().

◆ jacobian_apply_boundary() [1/2]

void Dune::PDELab::NumericalNonlinearJacobianApplyBoundary< ConvectionDiffusionCCFV< TP > >::jacobian_apply_boundary ( const IG &  ig,
const LFSU &  lfsu_s,
const X &  x_s,
const X &  z_s,
const LFSV &  lfsv_s,
Y &  y_s 
) const
inlineinherited

apply local jacobian of the boundaryterm

◆ jacobian_apply_boundary() [2/2]

void Dune::PDELab::NumericalJacobianApplyBoundary< ConvectionDiffusionCCFV< TP > >::jacobian_apply_boundary ( const IG &  ig,
const LFSU &  lfsu_s,
const X &  x_s,
const LFSV &  lfsv_s,
Y &  y_s 
) const
inlineinherited

apply local jacobian of the boundaryterm

◆ jacobian_apply_skeleton()

template<typename TP >
template<typename IG , typename LFSU , typename X , typename LFSV , typename Y >
void Dune::PDELab::ConvectionDiffusionCCFV< TP >::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

◆ jacobian_apply_volume()

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

◆ jacobian_boundary()

template<typename TP >
template<typename IG , typename LFSU , typename X , typename LFSV , typename M >
void Dune::PDELab::ConvectionDiffusionCCFV< TP >::jacobian_boundary ( const IG &  ig,
const LFSU &  lfsu_s,
const X &  x_s,
const LFSV &  lfsv_s,
M &  mat_ss 
) const
inline

◆ jacobian_skeleton()

template<typename TP >
template<typename IG , typename LFSU , typename X , typename LFSV , typename M >
void Dune::PDELab::ConvectionDiffusionCCFV< TP >::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

◆ jacobian_volume()

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

◆ lambda_volume()

template<typename TP >
template<typename EG , typename LFSV , typename R >
void Dune::PDELab::ConvectionDiffusionCCFV< TP >::lambda_volume ( const EG &  eg,
const LFSV &  lfsv,
R &  r 
) const
inline

◆ pattern_skeleton()

template<typename LFSU , typename LFSV , typename LocalPattern >
void Dune::PDELab::FullSkeletonPattern::pattern_skeleton ( const LFSU &  lfsu_s,
const LFSV &  lfsv_s,
const LFSU &  lfsu_n,
const LFSV &  lfsv_n,
LocalPattern &  pattern_sn,
LocalPattern &  pattern_ns 
) const
inlineinherited

◆ 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 TP >
void Dune::PDELab::ConvectionDiffusionCCFV< TP >::postStage ( )
inline

to be called once at the end of each stage

◆ postStep()

void Dune::PDELab::InstationaryLocalOperatorDefaultMethods< TP::Traits::RangeFieldType >::postStep ( )
inlineinherited

to be called once at the end of each time step

Note
With the OneStepMethod and the ExplicitOneStepMetod, for reasons unknown this is only called for temporal but not for spatial local operators. With the MultiStepMethod this is called for all local operators.

◆ preStage()

template<typename TP >
void Dune::PDELab::ConvectionDiffusionCCFV< TP >::preStage ( typename TP::Traits::RangeFieldType  time,
int  r 
)
inline

to be called once before each stage

◆ preStep()

template<typename TP >
void Dune::PDELab::ConvectionDiffusionCCFV< TP >::preStep ( typename TP::Traits::RangeFieldType  time,
typename TP::Traits::RangeFieldType  dt,
int  stages 
)
inline

to be called once before each time step

◆ setTime()

template<typename TP >
void Dune::PDELab::ConvectionDiffusionCCFV< TP >::setTime ( typename TP::Traits::RangeFieldType  t)
inline

set time in parameter class

◆ suggestTimestep()

template<typename TP >
TP::Traits::RangeFieldType Dune::PDELab::ConvectionDiffusionCCFV< TP >::suggestTimestep ( typename TP::Traits::RangeFieldType  dt) const
inline

to be called once before each stage


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