dune-pdelab  2.4-dev
Public Types | Public Member Functions | List of all members
Dune::PDELab::DGNavierStokesVelVecFEM< PRM > Class Template Reference

A local operator for solving the stokes equation using a DG discretization and a vector-valued finite element map for the velocity grid function space. More...

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

Inheritance diagram for Dune::PDELab::DGNavierStokesVelVecFEM< PRM >:
Inheritance graph

Public Types

enum  { doPatternVolume = true }
 
enum  { doPatternSkeleton = true }
 
enum  { doSkeletonTwoSided = false }
 
enum  { doAlphaVolume = true }
 
enum  { doAlphaSkeleton = true }
 
enum  { doAlphaBoundary = true }
 
enum  { doLambdaVolume = true }
 
typedef double 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

 DGNavierStokesVelVecFEM (PRM &_prm, int _superintegration_order=0)
 Constructor. More...
 
void preStep (RealType, RealType dt, int)
 
void setTime (Real t)
 
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 LocalMatrix >
void jacobian_volume (const EG &eg, const LFSU &lfsu, const X &x, const LFSV &lfsv, LocalMatrix &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 LocalMatrix >
void jacobian_skeleton (const IG &ig, const LFSU &lfsu_s, const X &, const LFSV &lfsv_s, const LFSU &lfsu_n, const X &, const LFSV &lfsv_n, LocalMatrix &mat_ss, LocalMatrix &mat_sn, LocalMatrix &mat_ns, LocalMatrix &mat_nn) const
 
template<typename IG , typename LFSU , typename X , typename LFSV , typename R >
void alpha_boundary (const IG &ig, const LFSU &lfsu, const X &x, const LFSV &lfsv, R &r) const
 
template<typename IG , typename LFSU , typename X , typename LFSV , typename LocalMatrix >
void jacobian_boundary (const IG &ig, const LFSU &lfsu, const X &x, const LFSV &lfsv, LocalMatrix &mat) const
 
template<typename EG , typename LFSV , typename R >
void lambda_volume (const EG &eg, const LFSV &lfsv, R &r) const
 
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
 
void setTime (doublet_)
 set time for subsequent evaluation More...
 
double getTime () const
 get current time More...
 
void postStep ()
 to be called once at the end of each time step More...
 
void preStage (RealType time, int r)
 to be called once before each stage More...
 
int getStage () const
 get current stage More...
 
void postStage ()
 to be called once at the end of each stage More...
 
RealType suggestTimestep (RealType dt) const
 to be called after stage 1 More...
 

Detailed Description

template<typename PRM>
class Dune::PDELab::DGNavierStokesVelVecFEM< PRM >

A local operator for solving the stokes equation using a DG discretization and a vector-valued finite element map for the velocity grid function space.

Template Parameters
PRMParameter class for this local operator.

Member Typedef Documentation

Member Enumeration Documentation

template<typename PRM >
anonymous enum
Enumerator
doPatternVolume 
template<typename PRM >
anonymous enum
Enumerator
doPatternSkeleton 
template<typename PRM >
anonymous enum
Enumerator
doSkeletonTwoSided 
template<typename PRM >
anonymous enum
Enumerator
doAlphaVolume 
template<typename PRM >
anonymous enum
Enumerator
doAlphaSkeleton 
template<typename PRM >
anonymous enum
Enumerator
doAlphaBoundary 
template<typename PRM >
anonymous enum
Enumerator
doLambdaVolume 

Constructor & Destructor Documentation

template<typename PRM >
Dune::PDELab::DGNavierStokesVelVecFEM< PRM >::DGNavierStokesVelVecFEM ( PRM &  _prm,
int  _superintegration_order = 0 
)
inline

Constructor.

Parameters
[in]_prmParameter class for this local operator
[in]_superintegration_orderThis number will be added to the order of quadrature in every integration. It is only needed, when one of the parameters (e.g rho, mu) is not constant or the mappings from the reference elements to the cells are nonlinear. Boundary conditions are assumed to have the same order as the corresponding finite element.

Member Function Documentation

template<typename PRM >
template<typename IG , typename LFSU , typename X , typename LFSV , typename R >
void Dune::PDELab::DGNavierStokesVelVecFEM< PRM >::alpha_boundary ( const IG &  ig,
const LFSU &  lfsu,
const X &  x,
const LFSV &  lfsv,
R &  r 
) const
inline
template<typename PRM >
template<typename IG , typename LFSU , typename X , typename LFSV , typename R >
void Dune::PDELab::DGNavierStokesVelVecFEM< PRM >::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

References dim.

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

References dim.

int Dune::PDELab::InstationaryLocalOperatorDefaultMethods< double >::getStage ( ) const
inlineinherited

get current stage

Returns
The current stage number previously set by preStage().
double Dune::PDELab::InstationaryLocalOperatorDefaultMethods< double >::getTime ( ) const
inlineinherited

get current time

Returns
The time previously set by setTime().
template<typename PRM >
template<typename IG , typename LFSU , typename X , typename LFSV , typename LocalMatrix >
void Dune::PDELab::DGNavierStokesVelVecFEM< PRM >::jacobian_boundary ( const IG &  ig,
const LFSU &  lfsu,
const X &  x,
const LFSV &  lfsv,
LocalMatrix mat 
) const
inline
template<typename PRM >
template<typename IG , typename LFSU , typename X , typename LFSV , typename LocalMatrix >
void Dune::PDELab::DGNavierStokesVelVecFEM< PRM >::jacobian_skeleton ( const IG &  ig,
const LFSU &  lfsu_s,
const X &  ,
const LFSV &  lfsv_s,
const LFSU &  lfsu_n,
const X &  ,
const LFSV &  lfsv_n,
LocalMatrix mat_ss,
LocalMatrix mat_sn,
LocalMatrix mat_ns,
LocalMatrix mat_nn 
) const
inline

References dim.

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

References dim.

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

References dim.

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
template<typename LFSU , typename LFSV , typename LocalPattern >
void Dune::PDELab::FullVolumePattern::pattern_volume ( const LFSU &  lfsu,
const LFSV &  lfsv,
LocalPattern &  pattern 
) const
inlineinherited
void Dune::PDELab::InstationaryLocalOperatorDefaultMethods< double >::postStage ( )
inlineinherited

to be called once at the end of each stage

void Dune::PDELab::InstationaryLocalOperatorDefaultMethods< double >::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.
void Dune::PDELab::InstationaryLocalOperatorDefaultMethods< double >::preStage ( RealType  time,
int  r 
)
inlineinherited

to be called once before each stage

Parameters
timeTime of the stage
rNumber of the stage, r ∈ [1, nstages] inclusive, where nstages is the number of stage in the step given in the previous call to preStep()
Note
For ExplicitOneStepMethod the time given here for stage 1 may be incorrect, since the time step size is only finally determined after the first stage has been assembled.
For the MultiStepMethod, this is called once after preStep() with r=1.
template<typename PRM >
void Dune::PDELab::DGNavierStokesVelVecFEM< PRM >::preStep ( RealType  ,
RealType  dt,
int   
)
inline
void Dune::PDELab::InstationaryLocalOperatorDefaultMethods< double >::setTime ( double  t_)
inlineinherited

set time for subsequent evaluation

This method set the time for subsequent calls to the alpha_*(), lambda_*(), jacobian_*() and jacobian_apply_*() methods.

Note
For ExplicitOneStepMethod the time given here in the first stage may be incorrect, since the time step size is only finally determined after the first stage has been assembled.

Referenced by Dune::PDELab::DGNavierStokes< PRM >::setTime(), and Dune::PDELab::DGNavierStokesVelVecFEM< PRM >::setTime().

template<typename PRM >
void Dune::PDELab::DGNavierStokesVelVecFEM< PRM >::setTime ( Real  t)
inline
RealType Dune::PDELab::InstationaryLocalOperatorDefaultMethods< double >::suggestTimestep ( RealType  dt) const
inlineinherited

to be called after stage 1

Note
Only used by the ExplicitOneStepMethod.

This may be called on the spatial local operator in the case of an explicit one step scheme. It is called after stage 1 has been assembled (so the time given to preStep() may not apply anymore in this case). All the alpha_*() and lambda_*() methods should have been called, so they are a good place to generate the information returned here.


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