|
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 More...
|
|
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 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 |
| get an internal intersection's contribution to the sparsity pattern More...
|
|
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 More...
|
|
|
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 More...
|
|
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 More...
|
|
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 More...
|
|
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 More...
|
|
|
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 More...
|
|
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 More...
|
|
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 More...
|
|
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 More...
|
|
|
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 More...
|
|
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 More...
|
|
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 More...
|
|
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 More...
|
|
|
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 More...
|
|
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 More...
|
|
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 More...
|
|
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 More...
|
|
template<typename Backend, typename Factor, typename Time = double>
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. |
template<typename Backend , typename Factor , typename Time = double>
template<typename IG , typename LFSU , typename X , typename LFSV , typename R >
void Dune::PDELab::ScaledLocalOperator< Backend, Factor, Time >::alpha_boundary |
( |
const IG & |
ig, |
|
|
const LFSU & |
lfsu_s, |
|
|
const X & |
x_s, |
|
|
const LFSV & |
lfsv_s, |
|
|
R & |
r_s |
|
) |
| const |
|
inline |
get a boundary intersections's contribution to alpha
- Parameters
-
- Note
- It is permissible to include contributions of the residual which are independent of
x_s
here (they have to be omitted from lambda_boundary() in that case, of course). This is the difference to jacobian_apply_boundary().
-
x_s
and r_s
are 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().
template<typename Backend , typename Factor , typename Time = double>
template<typename IG , typename LFSU , typename X , typename LFSV , typename R >
void Dune::PDELab::ScaledLocalOperator< Backend, Factor, Time >::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 |
get an internal intersections's contribution to alpha
- Parameters
-
- Note
- It is permissible to include contributions of the residual which are independent of
x_s
and x_n
here (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_s
and r_n
are of type std::vector.
-
The method should not clear
r_s
and r_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().
template<typename Backend , typename Factor , typename Time = double>
template<typename EG , typename LFSU , typename X , typename LFSV , typename R >
get an element's contribution to alpha
- Parameters
-
- Note
- It is permissible to include contributions of the residual which are independent of
x
here (they have to be omitted from lambda_volume() in that case, of course). This is the difference to jacobian_apply_volume().
-
x
and r
are 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).
template<typename Backend , typename Factor , typename Time = double>
template<typename EG , typename LFSU , typename X , typename LFSV , typename R >
void Dune::PDELab::ScaledLocalOperator< Backend, Factor, Time >::alpha_volume_post_skeleton |
( |
const EG & |
eg, |
|
|
const LFSU & |
lfsu, |
|
|
const X & |
x, |
|
|
const LFSV & |
lfsv, |
|
|
R & |
r |
|
) |
| const |
|
inline |
get an element's contribution to alpha after the intersections have been handled
- Parameters
-
- Note
- It is permissible to include contributions of the residual which are independent of
x
here (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().
-
x
and r
are 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).
template<typename Backend , typename Factor , typename Time = double>
template<typename IG , typename LFSU , typename X , typename LFSV , typename Y >
void Dune::PDELab::ScaledLocalOperator< Backend, Factor, Time >::jacobian_apply_boundary |
( |
const IG & |
ig, |
|
|
const LFSU & |
lfsu_s, |
|
|
const X & |
x_s, |
|
|
const LFSV & |
lfsv_s, |
|
|
Y & |
y_s |
|
) |
| const |
|
inline |
apply a boundary intersections's jacobian
- Parameters
-
- 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 in x
.
-
x_s
and y_s
are of type std::vector.
-
The method should not clear
y_s
; it should just add its entries to it.
-
x_s
is 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().
template<typename Backend , typename Factor , typename Time = double>
template<typename IG , typename LFSU , typename X , typename LFSV , typename Y >
void Dune::PDELab::ScaledLocalOperator< Backend, Factor, Time >::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 |
apply an internal intersections's jacobians
- Parameters
-
- Note
- This is different from alpha_skeleton(), since the result will be linear in
x_s
and x_n
, whereas alpha_skeleton() may include contributions to the the residual which are constant in x_s
and x_n
.
-
x_s
, x_n
, y_s
and y_n
are of type std::vector.
-
The method should not clear
y_s
and y_n
; it should just add its entries to them.
-
x_s
and x_n
are 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().
template<typename Backend , typename Factor , typename Time = double>
template<typename EG , typename LFSU , typename X , typename LFSV , typename Y >
void Dune::PDELab::ScaledLocalOperator< Backend, Factor, Time >::jacobian_apply_volume |
( |
const EG & |
eg, |
|
|
const LFSU & |
lfsu, |
|
|
const X & |
x, |
|
|
const LFSV & |
lfsv, |
|
|
Y & |
y |
|
) |
| const |
|
inline |
apply an element's jacobian
- Parameters
-
- 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 in x
.
-
x
and y
are of type std::vector.
-
The method should not clear
y
; it should just add its entries to it.
-
x
is 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).
template<typename Backend , typename Factor , typename Time = double>
template<typename EG , typename LFSU , typename X , typename LFSV , typename Y >
void Dune::PDELab::ScaledLocalOperator< Backend, Factor, Time >::jacobian_apply_volume_post_skeleton |
( |
const EG & |
eg, |
|
|
const LFSU & |
lfsu, |
|
|
const X & |
x, |
|
|
const LFSV & |
lfsv, |
|
|
Y & |
y |
|
) |
| const |
|
inline |
apply an element's jacobian after the intersections have been handled
- Parameters
-
- 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 in x
.
-
x
and y
are of type std::vector.
-
The method should not clear
y
; it should just add its entries to it.
-
x
is 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).
template<typename Backend , typename Factor , typename Time = double>
template<typename IG , typename LFSU , typename X , typename LFSV , typename M >
void Dune::PDELab::ScaledLocalOperator< Backend, Factor, Time >::jacobian_boundary |
( |
const IG & |
ig, |
|
|
const LFSU & |
lfsu_s, |
|
|
const X & |
x_s, |
|
|
const LFSV & |
lfsv_s, |
|
|
M & |
mat_ss |
|
) |
| const |
|
inline |
get a boundary intersections's jacobian
- Parameters
-
- Note
x_s
is 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().
template<typename Backend , typename Factor , typename Time = double>
template<typename IG , typename LFSU , typename X , typename LFSV , typename M >
void Dune::PDELab::ScaledLocalOperator< Backend, Factor, Time >::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 |
apply an internal intersections's jacobians
- Parameters
-
- Note
x_s
and x_n
are 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().
template<typename Backend , typename Factor , typename Time = double>
template<typename EG , typename LFSU , typename X , typename LFSV , typename M >
get an element's jacobian
- Parameters
-
- Note
x
is 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).
template<typename Backend , typename Factor , typename Time = double>
template<typename EG , typename LFSU , typename X , typename LFSV , typename M >
void Dune::PDELab::ScaledLocalOperator< Backend, Factor, Time >::jacobian_volume_post_skeleton |
( |
const EG & |
eg, |
|
|
const LFSU & |
lfsu, |
|
|
const X & |
x, |
|
|
const LFSV & |
lfsv, |
|
|
M & |
mat |
|
) |
| const |
|
inline |
get an element's jacobian after the intersections have been handled
- Parameters
-
- Note
x
is 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).
template<typename Backend , typename Factor , typename Time = double>
template<typename IG , typename LFSV , typename R >
get a boundary intersections's contribution to lambda
- Parameters
-
- Note
r_s
is 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().
template<typename Backend , typename Factor , typename Time = double>
template<typename IG , typename LFSV , typename R >
get an internal intersections's contribution to lambda
- Parameters
-
- Note
r_s
and r_n
are of type std::vector.
-
The method should not clear
r_s
and r_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().
template<typename Backend , typename Factor , typename Time = double>
template<typename EG , typename LFSV , typename R >
get an element's contribution to lambda
- Parameters
-
- Note
r
is 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).
template<typename Backend , typename Factor , typename Time = double>
template<typename EG , typename LFSV , typename R >
get an element's contribution to lambda after the intersections have been handled
- Parameters
-
- Note
r
is 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).
template<typename Backend , typename Factor , typename Time = double>
template<typename LFSU , typename LFSV , typename LocalPattern >
get a boundary intersection's contribution to the sparsity pattern
- Parameters
-
- 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().
template<typename Backend , typename Factor , typename Time = double>
template<typename LFSU , typename LFSV , typename LocalPattern >
void Dune::PDELab::ScaledLocalOperator< Backend, Factor, Time >::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 |
|
inline |
get an internal intersection's contribution to the sparsity pattern
- Parameters
-
- 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().
template<typename Backend , typename Factor , typename Time = double>
template<typename LFSU , typename LFSV , typename LocalPattern >
get an element's contribution to the sparsity pattern
- Parameters
-
- 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).
template<typename Backend , typename Factor , typename Time = double>
template<typename LFSU , typename LFSV , typename LocalPattern >
get an element's contribution to the sparsity pattern after the intersections have been handled
- Parameters
-
- 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).