|
dune-pdelab 2.10-git
|
A local operator that scales the result of another local operator. More...
#include <dune/pdelab/localoperator/scaled.hh>
Control flags | |
| enum | { doPatternVolume = Backend::doPatternVolume } |
| Whether to assemble the pattern on the elements, i.e. whether or not pattern_volume() should be called. More... | |
| enum | { doPatternVolumePostSkeleton = Backend::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 = Backend::doPatternSkeleton } |
| Whether to assemble the pattern on the interior intersections, i.e. whether or not pattern_skeleton() should be called. More... | |
| enum | { doPatternBoundary = Backend::doPatternBoundary } |
| Whether to assemble the pattern on the boundary intersections, i.e. whether or not pattern_boundary() should be called. More... | |
| enum | { doAlphaVolume = Backend::doAlphaVolume } |
| Whether to call the local operator's alpha_volume(), jacobian_apply_volume() and jacobian_volume(). More... | |
| enum | { doAlphaVolumePostSkeleton = Backend::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 = Backend::doAlphaSkeleton } |
| Whether to call the local operator's alpha_skeleton(), jacobian_apply_skeleton() and jacobian_skeleton(). More... | |
| enum | { doAlphaBoundary = Backend::doAlphaBoundary } |
| Whether to call the local operator's alpha_boundary(), jacobian_apply_boundary() and jacobian_boundary(). More... | |
| enum | { doLambdaVolume = Backend::doLambdaVolume } |
| Whether to call the local operator's lambda_volume(). More... | |
| enum | { doLambdaVolumePostSkeleton = Backend::doLambdaVolumePostSkeleton } |
| Whether to call the local operator's lambda_volume_post_skeleton(). More... | |
| enum | { doLambdaSkeleton = Backend::doLambdaSkeleton } |
| Whether to call the local operator's lambda_skeleton(). More... | |
| enum | { doLambdaBoundary = Backend::doLambdaBoundary } |
| Whether to call the local operator's lambda_boundary(). More... | |
| enum | { doSkeletonTwoSided = Backend::doSkeletonTwoSided } |
| Whether to visit the skeleton methods from both sides. More... | |
Methods for temporal local operators | |
| typedef Time | RealType |
| void | setTime (Time t) |
| set time for subsequent evaluation | |
| Time | getTime () const |
| get current time | |
| void | preStep (Time time, Time 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 (Time 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 | |
| Time | suggestTimestep (Time dt) const |
| to be called after stage 1 | |
Construction and modification | |
| ScaledLocalOperator (Backend &backend, Factor factor_=0) | |
| construct a ScaledLocalOperator | |
| ScaledLocalOperator (Factor factor_=0) | |
| construct a ScaledLocalOperator | |
| void | setFactor (Factor factor_) |
| set the scaling factor | |
| Factor | getFactor () const |
| get the scaling factor | |
| void | setBackend (Backend &backend) |
| set the backend | |
| Backend & | getBackend () const |
| get a reference to the backend | |
Methods for the sparsity pattern | |
| template<typename LFSU , typename LFSV , typename LocalPattern > | |
| void | pattern_volume (const LFSU &lfsu, const LFSV &lfsv, LocalPattern &pattern) const |
| get an element's contribution to the sparsity pattern | |
| template<typename LFSU , typename LFSV , typename LocalPattern > | |
| void | pattern_volume_post_skeleton (const LFSU &lfsu, const LFSV &lfsv, LocalPattern &pattern) const |
| get an element's contribution to the sparsity pattern after the intersections have been handled | |
| 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 |
| get an internal intersection's contribution to the sparsity pattern | |
| template<typename LFSU , typename LFSV , typename LocalPattern > | |
| void | pattern_boundary (const LFSU &lfsu_s, const LFSV &lfsv_s, LocalPattern &pattern_ss) const |
| get a boundary intersection's contribution to the sparsity pattern | |
Methods for the residual – non-constant parts | |
| 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 |
| get an element's contribution to alpha | |
| 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 |
| get an element's contribution to alpha after the intersections have been handled | |
| 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 |
| get an internal intersections's contribution to alpha | |
| 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 |
| get a boundary intersections's contribution to alpha | |
Methods for the residual – constant parts | |
| template<typename EG , typename LFSV , typename R > | |
| void | lambda_volume (const EG &eg, const LFSV &lfsv, R &r) const |
| get an element's contribution to lambda | |
| template<typename EG , typename LFSV , typename R > | |
| void | lambda_volume_post_skeleton (const EG &eg, const LFSV &lfsv, R &r) const |
| get an element's contribution to lambda after the intersections have been handled | |
| template<typename IG , typename LFSV , typename R > | |
| void | lambda_skeleton (const IG &ig, const LFSV &lfsv_s, const LFSV &lfsv_n, R &r_s, R &r_n) const |
| get an internal intersections's contribution to lambda | |
| template<typename IG , typename LFSV , typename R > | |
| void | lambda_boundary (const IG &ig, const LFSV &lfsv_s, R &r_s) const |
| get a boundary intersections's contribution to lambda | |
Methods for the application of the jacobian | |
| 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 |
| apply an element's jacobian | |
| 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 |
| apply an element's jacobian after the intersections have been handled | |
| 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 |
| apply an internal intersections's jacobians | |
| 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 |
| apply a boundary intersections's jacobian | |
Methods to extract the jacobian | |
| 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 |
| get an element's jacobian | |
| 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 |
| get an element's jacobian after the intersections have been handled | |
| 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 |
| apply an internal intersections's jacobians | |
| 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 |
| get a boundary intersections's jacobian | |
Detailed Description
class Dune::PDELab::ScaledLocalOperator< Backend, Factor, Time >
A local operator that scales the result of another local operator.
This local operator takes another local operator as a backend and a scaling factor. It forwards calls to the evaluation methods to the backend local operator, but scales the result by the scaling factor before returning it. Calls to the instationary methods setTime() et. al. are forwarded as well, without modification to the behaviour.
If the scaling factor equal zero, calls to the evaluation methods of the backend operator are eliminated at run time. Note that "equals
zero" is determined by the expression factor==0, so if you have values that are nearly zero and you want them to be treated as zero, you should force the factor to zero yourself before passing it to this class.
- Template Parameters
-
Backend Type of the backend operator. Factor Type of the scaling factor. Time Type of time values.
Member Typedef Documentation
◆ RealType
| typedef Time Dune::PDELab::ScaledLocalOperator< Backend, Factor, Time >::RealType |
Member Enumeration Documentation
◆ anonymous enum
| anonymous enum |
Whether to assemble the pattern on the elements, i.e. whether or not pattern_volume() should be called.
| Enumerator | |
|---|---|
| doPatternVolume | |
◆ anonymous enum
| anonymous enum |
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 |
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 |
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 |
Whether to call the local operator's alpha_volume(), jacobian_apply_volume() and jacobian_volume().
| Enumerator | |
|---|---|
| doAlphaVolume | |
◆ anonymous enum
| anonymous enum |
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 |
Whether to call the local operator's alpha_skeleton(), jacobian_apply_skeleton() and jacobian_skeleton().
| Enumerator | |
|---|---|
| doAlphaSkeleton | |
◆ anonymous enum
| anonymous enum |
Whether to call the local operator's alpha_boundary(), jacobian_apply_boundary() and jacobian_boundary().
| Enumerator | |
|---|---|
| doAlphaBoundary | |
◆ anonymous enum
| anonymous enum |
Whether to call the local operator's lambda_volume().
| Enumerator | |
|---|---|
| doLambdaVolume | |
◆ anonymous enum
| anonymous enum |
Whether to call the local operator's lambda_volume_post_skeleton().
| Enumerator | |
|---|---|
| doLambdaVolumePostSkeleton | |
◆ anonymous enum
| anonymous enum |
Whether to call the local operator's lambda_skeleton().
| Enumerator | |
|---|---|
| doLambdaSkeleton | |
◆ anonymous enum
| anonymous enum |
Whether to call the local operator's lambda_boundary().
| Enumerator | |
|---|---|
| doLambdaBoundary | |
◆ anonymous enum
| anonymous enum |
Constructor & Destructor Documentation
◆ ScaledLocalOperator() [1/2]
|
inline |
construct a ScaledLocalOperator
- Parameters
-
backend Reference to the backend local operator factor_ Scaling factor
◆ ScaledLocalOperator() [2/2]
|
inline |
construct a ScaledLocalOperator
- Note
- This constructor does not set a backend local operator – you must call setBackend() before you can use this object
- Parameters
-
factor_ Scaling factor
Member Function Documentation
◆ alpha_boundary()
|
inline |
get a boundary intersections's contribution to alpha
- Parameters
-
ig IntersectionGeometry describing the intersection. lfsu_s LocalFunctionSpace of the trial GridFunctionSpace in the inside entity. x_s Local position in the trial GridFunctionSpace in the inside entity. lfsv_s LocalFunctionSpace of the test GridFunctionSpace in the inside entity. r_s Local part of the residual in the inside entity.
- Note
- It is permissible to include contributions of the residual which are independent of
x_shere (they have to be omitted from lambda_boundary() in that case, of course). This is the difference to jacobian_apply_boundary(). -
x_sandr_sare of type std::vector. -
The method should not clear
r_s; it should just add its entries to it.
This method is controlled by the flag doAlphaBoundary. For a given element, it's calls happen intermingled with the calls to alpha_skeleton(), but after the call to alpha_volume() and before the call to alpha_volume_post_skeleton().
◆ alpha_skeleton()
|
inline |
get an internal intersections's contribution to alpha
- Parameters
-
ig IntersectionGeometry describing the intersection. lfsu_s LocalFunctionSpace of the trial GridFunctionSpace in the inside entity. x_s Local position in the trial GridFunctionSpace in the inside entity. lfsv_s LocalFunctionSpace of the test GridFunctionSpace in the inside entity. lfsu_n LocalFunctionSpace of the trial GridFunctionSpace in the outside entity. x_n Local position in the trial GridFunctionSpace in the outside entity. lfsv_n LocalFunctionSpace of the test GridFunctionSpace in the outside entity. r_s Local part of the residual in the inside entity. r_n Local part of the residual in the outside entity.
- Note
- It is permissible to include contributions of the residual which are independent of
x_sandx_nhere (they have to be omitted from lambda_skeleton() in that case, of course). This is the difference to jacobian_apply_skeleton(). -
x_s,x_n,r_sandr_nare of type std::vector. -
The method should not clear
r_sandr_n; it should just add its entries to them.
This method is controlled by the flag doAlphaSkeleton. For a given element, it's calls happen intermingled with the calls to alpha_boundary(), but after the call to alpha_volume() and before the call to alpha_volume_post_skeleton().
◆ alpha_volume()
|
inline |
get an element's contribution to alpha
- Parameters
-
eg ElementGeometry describing the entity. lfsu LocalFunctionSpace of the trial GridFunctionSpace. x Local position in the trial GridFunctionSpace. lfsv LocalFunctionSpace of the test GridFunctionSpace. r Local part of the residual.
- Note
- It is permissible to include contributions of the residual which are independent of
xhere (they have to be omitted from lambda_volume() in that case, of course). This is the difference to jacobian_apply_volume(). -
xandrare of type std::vector. -
The method should not clear
r; it should just add its entries to it.
This method is controlled by the flag doAlphaVolume. For a given element, it is called before the alpha_skeleton() and/or alpha_boundary() methods are called (if they are called at all).
◆ alpha_volume_post_skeleton()
|
inline |
get an element's contribution to alpha after the intersections have been handled
- Parameters
-
eg ElementGeometry describing the entity. lfsu LocalFunctionSpace of the trial GridFunctionSpace. x Local position in the trial GridFunctionSpace. lfsv LocalFunctionSpace of the test GridFunctionSpace. r Local part of the residual.
- Note
- It is permissible to include contributions of the residual which are independent of
xhere (they have to be omitted from lambda_volume_post_skeleton() in that case, of course). This is the difference to jacobian_apply_volume_post_skeleton(). -
xandrare of type std::vector. -
The method should not clear
r; it should just add its entries to it.
This method is controlled by the flag doAlphaVolumePostSkeleton. For a given element, it is called after the alpha_skeleton() and/or alpha_boundary() methods are called (if they are called at all).
◆ getBackend()
|
inline |
get a reference to the backend
◆ getFactor()
|
inline |
get the scaling factor
◆ getStage()
|
inline |
get current stage
- Returns
- The current stage number previously set by preStage().
◆ getTime()
|
inline |
get current time
- Returns
- The time previously set by setTime().
◆ jacobian_apply_boundary()
|
inline |
apply a boundary intersections's jacobian
- Parameters
-
ig IntersectionGeometry describing the intersection. lfsu_s LocalFunctionSpace of the trial GridFunctionSpace in the inside entity. x_s Local position in the trial GridFunctionSpace in the inside entity. lfsv_s LocalFunctionSpace of the test GridFunctionSpace in the inside entity. y_s Local part of the residual in the inside entity.
- Note
- This is different from alpha_boundary(), since the result will be linear in
x, whereas alpha_boundary() may include contributions to the the residual which are constant inx. -
x_sandy_sare of type std::vector. -
The method should not clear
y_s; it should just add its entries to it. -
x_sis both the position where the jacobian is evaluated (for non-linear problems) as well as the vector the jacobian is applied to.
This method is controlled by the flag doAlphaBoundary. For a given element, it's calls happen intermingled with the calls to jacobian_apply_skeleton(), but after the call to jacobian_apply_volume() and before the call to jacobian_apply_volume_post_skeleton().
◆ jacobian_apply_skeleton()
|
inline |
apply an internal intersections's jacobians
- Parameters
-
ig IntersectionGeometry describing the intersection. lfsu_s LocalFunctionSpace of the trial GridFunctionSpace in the inside entity. x_s Local position in the trial GridFunctionSpace in the inside entity. lfsv_s LocalFunctionSpace of the test GridFunctionSpace in the inside entity. lfsu_n LocalFunctionSpace of the trial GridFunctionSpace in the outside entity. x_n Local position in the trial GridFunctionSpace in the outside entity. lfsv_n LocalFunctionSpace of the test GridFunctionSpace in the outside entity. y_s Where to store the inside entity's result. y_n Where to store the outside entity's result.
- Note
- This is different from alpha_skeleton(), since the result will be linear in
x_sandx_n, whereas alpha_skeleton() may include contributions to the the residual which are constant inx_sandx_n. -
x_s,x_n,y_sandy_nare of type std::vector. -
The method should not clear
y_sandy_n; it should just add its entries to them. -
x_sandx_nare both the positions where the jacobian is evaluated (for non-linear problems) as well as the vectors the jacobian is applied to.
This method is controlled by the flag doAlphaSkeleton. For a given element, it's calls happen intermingled with the calls to jacobian_apply_boundary(), but after the call to jacobian_apply_volume() and before the call to jacobian_apply_volume_post_skeleton().
◆ jacobian_apply_volume()
|
inline |
apply an element's jacobian
- Parameters
-
eg ElementGeometry describing the entity. lfsu LocalFunctionSpace of the trial GridFunctionSpace. x Local position in the trial GridFunctionSpace. lfsv LocalFunctionSpace of the test GridFunctionSpace. y Where to store the result.
- Note
- This is different from alpha_volume(), since the result will be linear in
x, whereas alpha_volume() may include contributions to the the residual which are constant inx. -
xandyare of type std::vector. -
The method should not clear
y; it should just add its entries to it. -
xis both the position where the jacobian is evaluated (for non-linear problems) as well as the vector the jacobian is applied to.
This method is controlled by the flag doAlphaVolume. For a given element, it is called before the jacobian_apply_skeleton() and/or jacobian_apply_boundary() methods are called (if they are called at all).
◆ jacobian_apply_volume_post_skeleton()
|
inline |
apply an element's jacobian after the intersections have been handled
- Parameters
-
eg ElementGeometry describing the entity. lfsu LocalFunctionSpace of the trial GridFunctionSpace. x Local position in the trial GridFunctionSpace. lfsv LocalFunctionSpace of the test GridFunctionSpace. y Where to store the result.
- Note
- This is different from alpha_volume_post_skeleton(), since the result will be linear in
x, whereas alpha_volume_post_skeleton() may include contributions to the the residual which are constant inx. -
xandyare of type std::vector. -
The method should not clear
y; it should just add its entries to it. -
xis both the position where the jacobian is evaluated (for non-linear problems) as well as the vector the jacobian is applied to.
This method is controlled by the flag doAlphaVolumePostSkeleton. For a given element, it is called after the jacobian_apply_skeleton() and/or jacobian_apply_boundary() methods are called (if they are called at all).
◆ jacobian_boundary()
|
inline |
get a boundary intersections's jacobian
- Parameters
-
ig IntersectionGeometry describing the intersection. lfsu_s LocalFunctionSpace of the trial GridFunctionSpace in the inside entity. x_s Local position in the trial GridFunctionSpace in the inside entity. lfsv_s LocalFunctionSpace of the test GridFunctionSpace in the inside entity. mat_ss Where to store the contribution to the inside entity's jacobian.
- Note
x_sis of type std::vector.-
The method should not clear
mat_ss; it should just add its entries to it.
This method is controlled by the flag doAlphaBoundary. For a given element, it's calls happen intermingled with the calls to jacobian_skeleton(), but after the call to jacobian_volume() and before the call to jacobian_volume_post_skeleton().
◆ jacobian_skeleton()
|
inline |
apply an internal intersections's jacobians
- Parameters
-
ig IntersectionGeometry describing the intersection. lfsu_s LocalFunctionSpace of the trial GridFunctionSpace in the inside entity. x_s Local position in the trial GridFunctionSpace in the inside entity. lfsv_s LocalFunctionSpace of the test GridFunctionSpace in the inside entity. lfsu_n LocalFunctionSpace of the trial GridFunctionSpace in the outside entity. x_n Local position in the trial GridFunctionSpace in the outside entity. lfsv_n LocalFunctionSpace of the test GridFunctionSpace in the outside entity. mat_ss Where to store the contribution to the inside entity's jacobian. mat_sn Where to store the contribution to the interaction jacobian between the inside and the outside entity. mat_ns Where to store the contribution to the interaction jacobian between the outside and the inside entity. mat_nn Where to store the contribution to the outside entity's jacobian.
- Note
x_sandx_nare of type std::vector.-
The method should not clear
mat_ss,mat_sn,mat_ns,mat_nn; it should just add its entries to them.
This method is controlled by the flag doAlphaSkeleton. For a given element, it's calls happen intermingled with the calls to jacobian_boundary(), but after the call to jacobian_volume() and before the call to jacobian_volume_post_skeleton().
◆ jacobian_volume()
|
inline |
get an element's jacobian
- Parameters
-
eg ElementGeometry describing the entity. lfsu LocalFunctionSpace of the trial GridFunctionSpace. x Local position in the trial GridFunctionSpace. lfsv LocalFunctionSpace of the test GridFunctionSpace. mat Where to store the contribution to the jacobian.
- Note
xis of type std::vector.-
The method should not clear
mat; it should just add its entries to it.
This method is controlled by the flag doAlphaVolume. For a given element, it is called before the jacobian_skeleton() and/or jacobian_boundary() methods are called (if they are called at all).
◆ jacobian_volume_post_skeleton()
|
inline |
get an element's jacobian after the intersections have been handled
- Parameters
-
eg ElementGeometry describing the entity. lfsu LocalFunctionSpace of the trial GridFunctionSpace. x Local position in the trial GridFunctionSpace. lfsv LocalFunctionSpace of the test GridFunctionSpace. mat Where to store the contribution to the jacobian.
- Note
xis of type std::vector.-
The method should not clear
mat; it should just add its entries to it.
This method is controlled by the flag doAlphaVolumePostSkeleton. For a given element, it is called after the jacobian_skeleton() and/or jacobian_boundary() methods are called (if they are called at all).
◆ lambda_boundary()
|
inline |
get a boundary intersections's contribution to lambda
- Parameters
-
ig IntersectionGeometry describing the intersection. inside entity. lfsv_s LocalFunctionSpace of the test GridFunctionSpace in the inside entity. r_s Local part of the residual in the inside entity.
- Note
r_sis of type std::vector.-
The method should not clear
r_s; it should just add its entries to it.
This method is controlled by the flag doLambdaBoundary. For a given element, it's calls happen intermingled with the calls to lambda_skeleton(), but after the call to lambda_volume() and before the call to lambda_volume_post_skeleton().
◆ lambda_skeleton()
|
inline |
get an internal intersections's contribution to lambda
- Parameters
-
ig IntersectionGeometry describing the intersection. inside entity. lfsv_s LocalFunctionSpace of the test GridFunctionSpace in the inside entity. lfsv_n LocalFunctionSpace of the test GridFunctionSpace in the outside entity. r_s Local part of the residual in the inside entity. r_n Local part of the residual in the outside entity.
- Note
r_sandr_nare of type std::vector.-
The method should not clear
r_sandr_n; it should just add its entries to them.
This method is controlled by the flag doLambdaSkeleton. For a given element, it's calls happen intermingled with the calls to lambda_boundary(), but after the call to lambda_volume() and before the call to lambda_volume_post_skeleton().
◆ lambda_volume()
|
inline |
get an element's contribution to lambda
- Parameters
-
eg ElementGeometry describing the entity. lfsv LocalFunctionSpace of the test GridFunctionSpace. r Local part of the residual.
- Note
ris of type std::vector.-
The method should not clear
r; it should just add its entries to it.
This method is controlled by the flag doLambdaVolume. For a given element, it is called before the lambda_skeleton() and/or lambda_boundary() methods are called (if they are called at all).
◆ lambda_volume_post_skeleton()
|
inline |
get an element's contribution to lambda after the intersections have been handled
- Parameters
-
eg ElementGeometry describing the entity. lfsv LocalFunctionSpace of the test GridFunctionSpace. r Local part of the residual.
- Note
ris of type std::vector.-
The method should not clear
r; it should just add its entries to it.
This method is controlled by the flag doLambdaVolumePostSkeleton. For a given element, it is called after the lambda_skeleton() and/or lambda_boundary() methods are called (if they are called at all).
◆ pattern_boundary()
|
inline |
get a boundary intersection's contribution to the sparsity pattern
- Parameters
-
lfsu_s LocalFunctionSpace of the trial GridFunctionSpace in the inside entity. lfsv_s LocalFunctionSpace of the test GridFunctionSpace in the inside entity. pattern_ss Local sparsity pattern for the inside entity.
- Note
- The method should not clear the pattern; it should just add its entries to it.
This method is controlled by the flag doPatternBoundary. For a given element, it's calls happen intermingled with the calls to pattern_skeleton(), but after the call to pattern_volume() and before the call to pattern_volume_post_skeleton().
◆ pattern_skeleton()
|
inline |
get an internal intersection's contribution to the sparsity pattern
- Parameters
-
lfsu_s LocalFunctionSpace of the trial GridFunctionSpace in the inside entity. lfsv_s LocalFunctionSpace of the test GridFunctionSpace in the inside entity. lfsu_n LocalFunctionSpace of the trial GridFunctionSpace in the outside entity. lfsv_n LocalFunctionSpace of the test GridFunctionSpace in the outside entity. pattern_sn Local sparsity pattern. pattern_ns Local sparsity pattern.
- Note
- The method should not clear the patterns; it should just add its entries to them.
This method is controlled by the flag doPatternSkeleton. For a given element, it's calls happen intermingled with the calls to pattern_boundary(), but after the call to pattern_volume() and before the call to pattern_volume_post_skeleton().
◆ pattern_volume()
|
inline |
get an element's contribution to the sparsity pattern
- Parameters
-
lfsu LocalFunctionSpace of the trial GridFunctionSpace. lfsv LocalFunctionSpace of the test GridFunctionSpace. pattern Local sparsity pattern.
- Note
- The method should not clear the pattern; it should just add its entries to it.
This method is controlled by the flag doPatternVolume. For a given element, it is called before the pattern_skeleton() and/or pattern_boundary() methods are called (if they are called at all).
◆ pattern_volume_post_skeleton()
|
inline |
get an element's contribution to the sparsity pattern after the intersections have been handled
- Parameters
-
lfsu LocalFunctionSpace of the trial GridFunctionSpace. lfsv LocalFunctionSpace of the test GridFunctionSpace. pattern Local sparsity pattern.
- Note
- The method should not clear the pattern; it should just add its entries to it.
This method is controlled by the flag doPatternVolume. For a given element, it is called before the pattern_skeleton() and/or pattern_boundary() methods are called (if they are called at all).
◆ postStage()
|
inline |
to be called once at the end of each stage
◆ postStep()
|
inline |
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()
|
inline |
to be called once before each stage
- Parameters
-
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()
- 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.
◆ preStep()
|
inline |
to be called once before each time step
- Parameters
-
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.
- Note
- For ExplicitOneStepMethod the dt given here may be incorrect, since the time step size is only finally determined after the first stage has been assembled.
- For the MultiStepMethod the number of stages is given as 1. There are no since there are no times of evaluation in the middle of the step, a multi-step method is similar to a one step method with one stage.
◆ setBackend()
|
inline |
set the backend
◆ setFactor()
|
inline |
set the scaling factor
◆ setTime()
|
inline |
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.
◆ suggestTimestep()
|
inline |
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:
Legal Statements / Impressum | Hosted by TU Dresden & Uni Heidelberg | Generated by
1.9.8