dune-pdelab 2.7-git
|
A local operator for solving the Navier-Stokes equations using a DG discretization and a vector-valued finite element map for the velocity grid function space. More...
#include <dune/pdelab/localoperator/dgnavierstokesvelvecfem.hh>
Public Types | |
enum | { doPatternVolume = true } |
enum | { doPatternSkeleton = true } |
enum | { doSkeletonTwoSided = false } |
enum | { doAlphaVolume = true } |
enum | { doAlphaSkeleton = true } |
enum | { doAlphaBoundary = true } |
enum | { doLambdaVolume = true } |
typedef PRM::Traits::RangeField | 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 | |
DGNavierStokesVelVecFEM (PRM &_prm, int _superintegration_order=0) | |
Constructor. | |
void | preStep (Real, Real 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 (PRM::Traits::RangeField t_) |
set time for subsequent evaluation | |
PRM::Traits::RangeField | getTime () const |
get current time | |
void | preStep (RealType time, RealType dt, int stages) |
to be called once before each time step | |
void | postStep () |
to be called once at the end of each time step | |
void | preStage (RealType time, int r) |
to be called once before each stage | |
int | getStage () const |
get current stage | |
void | postStage () |
to be called once at the end of each stage | |
RealType | suggestTimestep (RealType dt) const |
to be called after stage 1 | |
A local operator for solving the Navier-Stokes equations using a DG discretization and a vector-valued finite element map for the velocity grid function space.
PRM | Parameter class for this local operator. |
|
inherited |
|
inherited |
Whether to assemble the pattern on the elements, i.e. whether or not pattern_volume() should be called.
Enumerator | |
---|---|
doPatternVolume |
|
inherited |
|
inherited |
Whether to assemble the pattern on the interior intersections, i.e. whether or not pattern_skeleton() should be called.
Enumerator | |
---|---|
doPatternSkeleton |
|
inherited |
|
inherited |
Whether to call the local operator's alpha_volume(), jacobian_apply_volume() and jacobian_volume().
Enumerator | |
---|---|
doAlphaVolume |
|
inherited |
|
inherited |
Whether to call the local operator's alpha_skeleton(), jacobian_apply_skeleton() and jacobian_skeleton().
Enumerator | |
---|---|
doAlphaSkeleton |
|
inherited |
Whether to call the local operator's alpha_boundary(), jacobian_apply_boundary() and jacobian_boundary().
Enumerator | |
---|---|
doAlphaBoundary |
|
inherited |
Whether to call the local operator's lambda_volume().
Enumerator | |
---|---|
doLambdaVolume |
|
inherited |
|
inherited |
|
inherited |
|
inherited |
|
inline |
Constructor.
[in] | _prm | Parameter class for this local operator |
[in] | _superintegration_order | This 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. |
|
inline |
|
inline |
|
inline |
|
inlineinherited |
get current stage
|
inlineinherited |
get current time
|
inline |
|
inline |
|
inline |
|
inline |
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
to be called once at the end of each stage
|
inlineinherited |
to be called once at the end of each time step
|
inlineinherited |
to be called once before each stage
time | Time of the stage |
r | Number of the stage, r ∈ [1, nstages] inclusive, where nstages is the number of stage in the step given in the previous call to preStep() |
|
inline |
|
inlineinherited |
to be called once before each time step
time | Time at beginning of the step. |
dt | Size of time step. |
stages | Number of stages to do in the step. For the MultiStepMethod this is always 1. |
|
inlineinherited |
set time for subsequent evaluation
This method set the time for subsequent calls to the alpha_*(), lambda_*(), jacobian_*() and jacobian_apply_*() methods.
|
inline |
|
inlineinherited |
to be called after stage 1
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.