dune-pdelab  2.7-git
localoperator/interface.hh
Go to the documentation of this file.
1 // -*- tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*-
2 // vi: set et ts=8 sw=2 sts=2:
3 #ifndef DUNE_PDELAB_LOCALOPERATOR_INTERFACE_HH
4 #define DUNE_PDELAB_LOCALOPERATOR_INTERFACE_HH
5 
7 
8 namespace Dune {
9  namespace PDELab {
13 
15 
87  {
88  public:
89 
90  static const bool doSkipEntity = false;
91  static const bool doSkipIntersection = false;
92  static const bool doPatternVolume = true;
93  static const bool doPatternVolumePostSkeleton = true;
94  static const bool doPatternSkeleton = true;
95  static const bool doPatternBoundary = true;
96  static const bool doAlphaVolume = true;
97  static const bool doAlphaVolumePostSkeleton = true;
98  static const bool doAlphaSkeleton = true;
99  static const bool doAlphaBoundary = true;
100  static const bool doLambdaVolume = true;
101  static const bool doLambdaVolumePostSkeleton = true;
102  static const bool doLambdaSkeleton = true;
103  static const bool doLambdaBoundary = true;
104 
106  //
109  //
110 
112 
120  template<typename EG>
122  ( const EG& eg) const
123  {
124  return false;
125  }
126 
128 
136  template<typename IG>
138  ( const IG& ig) const
139  {
140  return false;
141  }
142 
144 
146  //
149  //
150 
152 
164  template<typename LFSU, typename LFSV, typename LocalPattern>
166  ( const LFSU& lfsu, const LFSV& lfsv,
167  LocalPattern& pattern) const
168  {}
169 
172 
184  template<typename LFSU, typename LFSV, typename LocalPattern>
186  ( const LFSU& lfsu, const LFSV& lfsv,
187  LocalPattern& pattern) const
188  {}
189 
191 
211  template<typename LFSU, typename LFSV, typename LocalPattern>
213  ( const LFSU& lfsu_s, const LFSV& lfsv_s,
214  const LFSU& lfsu_n, const LFSV& lfsv_n,
215  LocalPattern& pattern_sn,
216  LocalPattern& pattern_ns) const
217  {}
218 
220 
235  template<typename LFSU, typename LFSV, typename LocalPattern>
237  ( const LFSU& lfsu_s, const LFSV& lfsv_s,
238  LocalPattern& pattern_ss) const
239  {}
240 
242 
244  //
247  //
248 
250 
271  template<typename EG, typename LFSU, typename X, typename LFSV,
272  typename R>
274  ( const EG& eg,
275  const LFSU& lfsu, const X& x, const LFSV& lfsv,
276  R& r) const
277  {}
278 
281 
301  template<typename EG, typename LFSU, typename X, typename LFSV,
302  typename R>
304  ( const EG& eg,
305  const LFSU& lfsu, const X& x, const LFSV& lfsv,
306  R& r) const
307  {}
308 
310 
340  template<typename IG, typename LFSU, typename X, typename LFSV,
341  typename R>
343  ( const IG& ig,
344  const LFSU& lfsu_s, const X& x_s, const LFSV& lfsv_s,
345  const LFSU& lfsu_n, const X& x_n, const LFSV& lfsv_n,
346  R& r_s, R& r_n) const
347  {}
348 
350 
373  template<typename IG, typename LFSU, typename X, typename LFSV,
374  typename R>
376  ( const IG& ig,
377  const LFSU& lfsu_s, const X& x_s, const LFSV& lfsv_s,
378  R& r_s) const
379  {}
380 
382 
384  //
387  //
388 
390 
402  template<typename EG, typename LFSV, typename R>
403  void lambda_volume(const EG& eg, const LFSV& lfsv, R& r) const
404  {}
405 
408 
422  template<typename EG, typename LFSV, typename R>
423  void lambda_volume_post_skeleton(const EG& eg, const LFSV& lfsv, R& r) const
424  {}
425 
427 
445  template<typename IG, typename LFSV, typename R>
446  void lambda_skeleton(const IG& ig,
447  const LFSV& lfsv_s, const LFSV& lfsv_n,
448  R& r_s, R& r_n) const
449  {}
450 
452 
467  template<typename IG, typename LFSV, typename R>
468  void lambda_boundary(const IG& ig, const LFSV& lfsv_s, R& r_s) const
469  {}
470 
472 
474  //
477  //
478 
480 
513  template<typename EG, typename LFSU, typename X, typename LFSV,
514  typename Y>
516  ( const EG& eg,
517  const LFSU& lfsu, const X& z, const LFSV& lfsv,
518  Y& y) const
519  {}
520 
523 
553  template<typename EG, typename LFSU, typename X, typename LFSV,
554  typename Y>
556  ( const EG& eg,
557  const LFSU& lfsu, const X& z, const LFSV& lfsv,
558  Y& y) const
559  {}
560 
563 
606  template<typename IG, typename LFSU, typename X, typename LFSV,
607  typename Y>
609  ( const IG& ig,
610  const LFSU& lfsu_s, const X& z_s, const LFSV& lfsv_s,
611  const LFSU& lfsu_n, const X& z_n, const LFSV& lfsv_n,
612  Y& y_s, Y& y_n) const
613  {}
614 
616 
650  template<typename IG, typename LFSU, typename X, typename LFSV,
651  typename Y>
653  ( const IG& ig,
654  const LFSU& lfsu_s, const X& z_s, const LFSV& lfsv_s,
655  Y& y_s) const
656  {}
657 
659 
660 
662  //
665  //
666 
668 
701  template<typename EG, typename LFSU, typename X, typename Z, typename LFSV,
702  typename Y>
704  ( const EG& eg,
705  const LFSU& lfsu, const X& x, const Z& z, const LFSV& lfsv,
706  Y& y) const
707  {}
708 
711 
741  template<typename EG, typename LFSU, typename X, typename Z, typename LFSV,
742  typename Y>
744  ( const EG& eg,
745  const LFSU& lfsu, const X& x, const Z& z, const LFSV& lfsv,
746  Y& y) const
747  {}
748 
751 
800  template<typename IG, typename LFSU, typename X, typename Z, typename LFSV,
801  typename Y>
803  ( const IG& ig,
804  const LFSU& lfsu_s, const X& x_s, const Z& z_s, const LFSV& lfsv_s,
805  const LFSU& lfsu_n, const X& x_n, const Z& z_n, const LFSV& lfsv_n,
806  Y& y_s, Y& y_n) const
807  {}
808 
810 
845  template<typename IG, typename LFSU, typename X, typename Z, typename LFSV,
846  typename Y>
848  ( const IG& ig,
849  const LFSU& lfsu_s, const X& x_s, const Z& z_s, const LFSV& lfsv_s,
850  Y& y_s) const
851  {}
852 
854 
855 
856 
858  //
861  //
862 
864 
878  template<typename EG, typename LFSU, typename X, typename LFSV,
879  typename LocalMatrix>
881  ( const EG& eg,
882  const LFSU& lfsu, const X& x, const LFSV& lfsv,
883  LocalMatrix& mat) const
884  {}
885 
887 
902  template<typename EG, typename LFSU, typename X, typename LFSV,
903  typename LocalMatrix>
905  ( const EG& eg,
906  const LFSU& lfsu, const X& x, const LFSV& lfsv,
907  LocalMatrix& mat) const
908  {}
909 
911 
943  template<typename IG, typename LFSU, typename X, typename LFSV,
944  typename LocalMatrix>
946  ( const IG& ig,
947  const LFSU& lfsu_s, const X& x_s, const LFSV& lfsv_s,
948  const LFSU& lfsu_n, const X& x_n, const LFSV& lfsv_n,
949  LocalMatrix& mat_ss, LocalMatrix& mat_sn,
950  LocalMatrix& mat_ns, LocalMatrix& mat_nn) const
951  {}
952 
954 
973  template<typename IG, typename LFSU, typename X, typename LFSV,
974  typename LocalMatrix>
976  ( const IG& ig,
977  const LFSU& lfsu_s, const X& x_s, const LFSV& lfsv_s,
978  LocalMatrix& mat_ss) const
979  {}
980 
982  };
983 
985  }
986 }
987 
988 #endif // DUNE_PDELAB_LOCALOPERATOR_INTERFACE_HH
const IG & ig
Definition: constraints.hh:149
For backward compatibility – Do not use this!
Definition: adaptivity.hh:28
A dense matrix for storing data associated with the degrees of freedom of a pair of LocalFunctionSpac...
Definition: localmatrix.hh:184
Default flags for all local operators.
Definition: flags.hh:19
Class to document the stationary local operator interface.
Definition: localoperator/interface.hh:87
void pattern_volume(const LFSU &lfsu, const LFSV &lfsv, LocalPattern &pattern) const
get an element's contribution to the sparsity pattern
Definition: localoperator/interface.hh:166
static const bool doPatternVolume
Definition: localoperator/interface.hh:92
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
Definition: localoperator/interface.hh:304
void lambda_boundary(const IG &ig, const LFSV &lfsv_s, R &r_s) const
get a boundary intersections's contribution to lambda
Definition: localoperator/interface.hh:468
bool skip_entity(const EG &eg) const
whether to assembly methods associated with a given entity
Definition: localoperator/interface.hh:122
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
Definition: localoperator/interface.hh:213
static const bool doAlphaVolumePostSkeleton
Definition: localoperator/interface.hh:97
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
Definition: localoperator/interface.hh:343
void jacobian_volume(const EG &eg, const LFSU &lfsu, const X &x, const LFSV &lfsv, LocalMatrix &mat) const
get an element's jacobian
Definition: localoperator/interface.hh:881
void jacobian_apply_volume_post_skeleton(const EG &eg, const LFSU &lfsu, const X &z, const LFSV &lfsv, Y &y) const
Definition: localoperator/interface.hh:556
void jacobian_apply_boundary(const IG &ig, const LFSU &lfsu_s, const X &z_s, const LFSV &lfsv_s, Y &y_s) const
apply a boundary intersections's jacobian for a linear problem.
Definition: localoperator/interface.hh:653
void jacobian_apply_volume(const EG &eg, const LFSU &lfsu, const X &x, const Z &z, const LFSV &lfsv, Y &y) const
Applies an element's jacobian to a vector for a nonlinear problem.
Definition: localoperator/interface.hh:704
void jacobian_apply_skeleton(const IG &ig, const LFSU &lfsu_s, const X &z_s, const LFSV &lfsv_s, const LFSU &lfsu_n, const X &z_n, const LFSV &lfsv_n, Y &y_s, Y &y_n) const
Definition: localoperator/interface.hh:609
static const bool doLambdaVolumePostSkeleton
Definition: localoperator/interface.hh:101
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
Definition: localoperator/interface.hh:186
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
Definition: localoperator/interface.hh:274
void jacobian_apply_boundary(const IG &ig, const LFSU &lfsu_s, const X &x_s, const Z &z_s, const LFSV &lfsv_s, Y &y_s) const
apply a boundary intersections's jacobian for a nonlinear problem.
Definition: localoperator/interface.hh:848
static const bool doPatternBoundary
Definition: localoperator/interface.hh:95
static const bool doAlphaBoundary
Definition: localoperator/interface.hh:99
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
Definition: localoperator/interface.hh:423
static const bool doPatternSkeleton
Definition: localoperator/interface.hh:94
void jacobian_apply_volume_post_skeleton(const EG &eg, const LFSU &lfsu, const X &x, const Z &z, const LFSV &lfsv, Y &y) const
Definition: localoperator/interface.hh:744
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
Definition: localoperator/interface.hh:905
bool skip_intersection(const IG &ig) const
whether to assembly methods associated with a given intersection
Definition: localoperator/interface.hh:138
static const bool doLambdaVolume
Definition: localoperator/interface.hh:100
static const bool doLambdaSkeleton
Definition: localoperator/interface.hh:102
static const bool doAlphaVolume
Definition: localoperator/interface.hh:96
void jacobian_apply_volume(const EG &eg, const LFSU &lfsu, const X &z, const LFSV &lfsv, Y &y) const
Applies an element's jacobian to a vector for a linear problem.
Definition: localoperator/interface.hh:516
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
Definition: localoperator/interface.hh:237
static const bool doSkipEntity
Definition: localoperator/interface.hh:90
static const bool doAlphaSkeleton
Definition: localoperator/interface.hh:98
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
Definition: localoperator/interface.hh:976
static const bool doPatternVolumePostSkeleton
Definition: localoperator/interface.hh:93
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
Definition: localoperator/interface.hh:446
void jacobian_apply_skeleton(const IG &ig, const LFSU &lfsu_s, const X &x_s, const Z &z_s, const LFSV &lfsv_s, const LFSU &lfsu_n, const X &x_n, const Z &z_n, const LFSV &lfsv_n, Y &y_s, Y &y_n) const
Definition: localoperator/interface.hh:803
void lambda_volume(const EG &eg, const LFSV &lfsv, R &r) const
get an element's contribution to lambda
Definition: localoperator/interface.hh:403
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
Definition: localoperator/interface.hh:946
static const bool doSkipIntersection
Definition: localoperator/interface.hh:91
static const bool doLambdaBoundary
Definition: localoperator/interface.hh:103
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
Definition: localoperator/interface.hh:376