dune-pdelab
2.7-git
|
A local operator to take the weighted sum of other local operators. More...
#include <dune/pdelab/localoperator/weightedsum.hh>
Classes | |
struct | WeightedContainer |
Protected Types | |
using | Base = CombinedOperator< WeightedSumLocalOperator< K, Args... >, Args... > |
using | ArgPtrs = typename Base::ArgPtrs |
using | ArgRefs = typename Base::ArgRefs |
using | Weights = FieldVector< K, sizeof...(Args)> |
Protected Member Functions | |
template<typename... FArgs> | |
void | getWeights (FieldVector< K, sizeof...(FArgs)> &aweights, std::tuple< FArgs... > fargs) const |
template<typename... FArgs> | |
void | setWeights (const FieldVector< K, sizeof...(FArgs)> &aweights, std::tuple< FArgs... > fargs) const |
template<typename F , typename... FArgs> | |
void | applyLops (F &&f, FArgs &... fargs) const |
void | applyLops (FArgs &... args) const |
Protected Attributes | |
friend | Base |
Weights | weights |
ArgPtrs | lops |
Construction and modification | |
void | setSummand (typename std::tuple_element_t< i, ArgRefs > summand) |
set the i'th component of the sum More... | |
std::tuple_element_t< i, ArgRefs > | getSummand () |
get the i'th component of the sum More... | |
Control flags | |
enum | |
Whether to assemble the pattern on the elements, i.e. whether or not pattern_volume() should be called. More... | |
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. More... | |
enum | |
Whether to assemble the pattern on the interior intersections, i.e. whether or not pattern_skeleton() should be called. More... | |
enum | |
Whether to assemble the pattern on the boundary intersections, i.e. whether or not pattern_boundary() should be called. More... | |
enum | |
Whether to call the local operator's alpha_volume(), jacobian_apply_volume() and jacobian_volume(). More... | |
enum | |
Whether to call the local operator's alpha_volume_post_skeleton(), jacobian_apply_volume_post_skeleton() and jacobian_volume_post_skeleton(). More... | |
enum | |
Whether to call the local operator's alpha_skeleton(), jacobian_apply_skeleton() and jacobian_skeleton(). More... | |
enum | |
Whether to call the local operator's alpha_boundary(), jacobian_apply_boundary() and jacobian_boundary(). More... | |
enum | |
Whether to call the local operator's lambda_volume(). More... | |
enum | |
Whether to call the local operator's lambda_volume_post_skeleton(). More... | |
enum | |
Whether to call the local operator's lambda_skeleton(). More... | |
enum | |
Whether to call the local operator's lambda_boundary(). More... | |
enum | |
Whether to visit the skeleton methods from both sides. More... | |
enum | |
Whether this is a linear operator. More... | |
Methods for the sparsity pattern | |
void | pattern_volume (const LFSU &lfsu, const LFSV &lfsv, LocalPattern &pattern) const |
get an element's contribution to the sparsity pattern More... | |
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... | |
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... | |
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... | |
Methods for the residual – non-constant parts | |
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... | |
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... | |
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... | |
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... | |
Methods for the residual – constant parts | |
void | lambda_volume (const EG &eg, const LFSV &lfsv, R &r) const |
get an element's contribution to lambda More... | |
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... | |
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... | |
void | lambda_boundary (const IG &ig, const LFSV &lfsv_s, R &r_s) const |
get a boundary intersections's contribution to lambda More... | |
Methods for the application of the jacobian | |
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... | |
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... | |
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... | |
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... | |
Methods to extract the jacobian | |
void | jacobian_volume (const EG &eg, const LFSU &lfsu, const X &x, const LFSV &lfsv, LocalMatrix &mat) const |
get an element's jacobian More... | |
void | jacobian_volume_post_skeleton (const EG &eg, const LFSU &lfsu, const X &x, const LFSV &lfsv, LocalMatrix &mat) const |
get an element's jacobian after the intersections have been handled More... | |
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, LocalMatrix &mat_ss, LocalMatrix &mat_sn, LocalMatrix &mat_ns, LocalMatrix &mat_nn) const |
apply an internal intersections's jacobians More... | |
void | jacobian_boundary (const IG &ig, const LFSU &lfsu_s, const X &x_s, const LFSV &lfsv_s, LocalMatrix &mat_ss) const |
get a boundary intersections's jacobian More... | |
Methods for instationary problems | |
void | setTime (RealType t) |
set time for subsequent evaluation More... | |
RealType | getTime () const |
get current time More... | |
void | preStep (RealType time, RealType dt, int stages) |
to be called once before each time step 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... | |
typedef std::tuple_element< 0, std::tuple< Args... > >::type::RealType | RealType |
Export type used for time values. More... | |
Construction and modification | |
WeightedSumLocalOperator (ArgPtrs &&lops, const Weights &weights_) | |
WeightedSumLocalOperator (const Weights &weights_=Weights(1)) | |
construct a WeightedSumLocalOperator More... | |
WeightedSumLocalOperator (Args &... lops_, const Weights &weights_=Weights(1)) | |
WeightedSumLocalOperator (Args &&... lops_, const Weights &weights_=Weights(1)) | |
void | setWeight (K w, std::size_t i) |
set the weight for the i'th component of the sum More... | |
K | getWeight (std::size_t i) |
get the weight for the i'th component of the sum More... | |
A local operator to take the weighted sum of other local operators.
If the weight for one summand is zero, calls to that local operators evaluation and pattern methods are eliminated at run-time.
K | Type of the scaling factors. |
Args | variadic list of local operators |
|
inherited |
Export type used for time values.
|
inherited |
Whether to assemble the pattern on the elements, i.e. whether or not pattern_volume() should be called.
|
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.
|
inherited |
Whether to assemble the pattern on the interior intersections, i.e. whether or not pattern_skeleton() should be called.
|
inherited |
Whether to assemble the pattern on the boundary intersections, i.e. whether or not pattern_boundary() should be called.
|
inherited |
Whether to call the local operator's alpha_volume(), jacobian_apply_volume() and jacobian_volume().
|
inherited |
Whether to call the local operator's alpha_volume_post_skeleton(), jacobian_apply_volume_post_skeleton() and jacobian_volume_post_skeleton().
|
inherited |
Whether to call the local operator's alpha_skeleton(), jacobian_apply_skeleton() and jacobian_skeleton().
|
inherited |
Whether to call the local operator's alpha_boundary(), jacobian_apply_boundary() and jacobian_boundary().
|
inherited |
Whether to call the local operator's lambda_volume().
|
inherited |
Whether to call the local operator's lambda_volume_post_skeleton().
|
inherited |
Whether to call the local operator's lambda_skeleton().
|
inherited |
Whether to call the local operator's lambda_boundary().
|
inherited |
Whether to visit the skeleton methods from both sides.
|
inherited |
Whether this is a linear operator.
|
inlineinherited |
get a boundary intersections's contribution to alpha
|
inlineinherited |
get an internal intersections's contribution to alpha
|
inlineinherited |
get an element's contribution to alpha
|
inlineinherited |
get an element's contribution to alpha after the intersections have been handled
|
inlineprotectedinherited |
|
inlineinherited |
get current stage
|
inlineinherited |
get the i'th component of the sum
|
inlineinherited |
get current time
|
inlineinherited |
apply a boundary intersections's jacobian
|
inlineinherited |
apply an internal intersections's jacobians
|
inlineinherited |
apply an element's jacobian
|
inlineinherited |
apply an element's jacobian after the intersections have been handled
|
inlineinherited |
get a boundary intersections's jacobian
|
inlineinherited |
apply an internal intersections's jacobians
|
inlineinherited |
get an element's jacobian
|
inlineinherited |
get an element's jacobian after the intersections have been handled
|
inlineinherited |
get a boundary intersections's contribution to lambda
|
inlineinherited |
get an internal intersections's contribution to lambda
|
inlineinherited |
get an element's contribution to lambda
|
inlineinherited |
get an element's contribution to lambda after the intersections have been handled
|
inlineinherited |
get a boundary intersection's contribution to the sparsity pattern
|
inlineinherited |
get an internal intersection's contribution to the sparsity pattern
|
inlineinherited |
get an element's contribution to the sparsity pattern
|
inlineinherited |
get an element's contribution to the sparsity pattern after the intersections have been handled
|
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
|
inlineinherited |
to be called once before each time step
|
inlineinherited |
set the i'th component of the sum
|
inlineinherited |
set time for subsequent evaluation
|
inlineinherited |
to be called after stage 1
|
protectedinherited |