dune-pdelab  2.5-dev
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 doPatternVolume = true;
91  static const bool doPatternVolumePostSkeleton = true;
92  static const bool doPatternSkeleton = true;
93  static const bool doPatternBoundary = true;
94  static const bool doAlphaVolume = true;
95  static const bool doAlphaVolumePostSkeleton = true;
96  static const bool doAlphaSkeleton = true;
97  static const bool doAlphaBoundary = true;
98  static const bool doLambdaVolume = true;
99  static const bool doLambdaVolumePostSkeleton = true;
100  static const bool doLambdaSkeleton = true;
101  static const bool doLambdaBoundary = true;
102 
104  //
107  //
108 
110 
122  template<typename LFSU, typename LFSV, typename LocalPattern>
123  void pattern_volume
124  ( const LFSU& lfsu, const LFSV& lfsv,
125  LocalPattern& pattern) const
126  {}
127 
130 
142  template<typename LFSU, typename LFSV, typename LocalPattern>
144  ( const LFSU& lfsu, const LFSV& lfsv,
145  LocalPattern& pattern) const
146  {}
147 
149 
169  template<typename LFSU, typename LFSV, typename LocalPattern>
170  void pattern_skeleton
171  ( const LFSU& lfsu_s, const LFSV& lfsv_s,
172  const LFSU& lfsu_n, const LFSV& lfsv_n,
173  LocalPattern& pattern_sn,
174  LocalPattern& pattern_ns) const
175  {}
176 
178 
193  template<typename LFSU, typename LFSV, typename LocalPattern>
194  void pattern_boundary
195  ( const LFSU& lfsu_s, const LFSV& lfsv_s,
196  LocalPattern& pattern_ss) const
197  {}
198 
200 
202  //
205  //
206 
208 
229  template<typename EG, typename LFSU, typename X, typename LFSV,
230  typename R>
231  void alpha_volume
232  ( const EG& eg,
233  const LFSU& lfsu, const X& x, const LFSV& lfsv,
234  R& r) const
235  {}
236 
239 
259  template<typename EG, typename LFSU, typename X, typename LFSV,
260  typename R>
262  ( const EG& eg,
263  const LFSU& lfsu, const X& x, const LFSV& lfsv,
264  R& r) const
265  {}
266 
268 
298  template<typename IG, typename LFSU, typename X, typename LFSV,
299  typename R>
300  void alpha_skeleton
301  ( const IG& ig,
302  const LFSU& lfsu_s, const X& x_s, const LFSV& lfsv_s,
303  const LFSU& lfsu_n, const X& x_n, const LFSV& lfsv_n,
304  R& r_s, R& r_n) const
305  {}
306 
308 
331  template<typename IG, typename LFSU, typename X, typename LFSV,
332  typename R>
333  void alpha_boundary
334  ( const IG& ig,
335  const LFSU& lfsu_s, const X& x_s, const LFSV& lfsv_s,
336  R& r_s) const
337  {}
338 
340 
342  //
345  //
346 
348 
360  template<typename EG, typename LFSV, typename R>
361  void lambda_volume(const EG& eg, const LFSV& lfsv, R& r) const
362  {}
363 
366 
380  template<typename EG, typename LFSV, typename R>
381  void lambda_volume_post_skeleton(const EG& eg, const LFSV& lfsv, R& r) const
382  {}
383 
385 
403  template<typename IG, typename LFSV, typename R>
404  void lambda_skeleton(const IG& ig,
405  const LFSV& lfsv_s, const LFSV& lfsv_n,
406  R& r_s, R& r_n) const
407  {}
408 
410 
425  template<typename IG, typename LFSV, typename R>
426  void lambda_boundary(const IG& ig, const LFSV& lfsv_s, R& r_s) const
427  {}
428 
430 
432  //
435  //
436 
438 
468  template<typename EG, typename LFSU, typename X, typename LFSV,
469  typename Y>
471  ( const EG& eg,
472  const LFSU& lfsu, const X& z, const LFSV& lfsv,
473  Y& y) const
474  {}
475 
478 
508  template<typename EG, typename LFSU, typename X, typename LFSV,
509  typename Y>
511  ( const EG& eg,
512  const LFSU& lfsu, const X& z, const LFSV& lfsv,
513  Y& y) const
514  {}
515 
518 
561  template<typename IG, typename LFSU, typename X, typename LFSV,
562  typename Y>
564  ( const IG& ig,
565  const LFSU& lfsu_s, const X& z_s, const LFSV& lfsv_s,
566  const LFSU& lfsu_n, const X& z_n, const LFSV& lfsv_n,
567  Y& y_s, Y& y_n) const
568  {}
569 
571 
605  template<typename IG, typename LFSU, typename X, typename LFSV,
606  typename Y>
608  ( const IG& ig,
609  const LFSU& lfsu_s, const X& z_s, const LFSV& lfsv_s,
610  Y& y_s) const
611  {}
612 
614 
615 
617  //
620  //
621 
623 
653  template<typename EG, typename LFSU, typename X, typename LFSV,
654  typename Y>
656  ( const EG& eg,
657  const LFSU& lfsu, const X& x, const X& z, const LFSV& lfsv,
658  Y& y) const
659  {}
660 
663 
693  template<typename EG, typename LFSU, typename X, typename LFSV,
694  typename Y>
696  ( const EG& eg,
697  const LFSU& lfsu, const X& x, const X& z, const LFSV& lfsv,
698  Y& y) const
699  {}
700 
703 
752  template<typename IG, typename LFSU, typename X, typename LFSV,
753  typename Y>
755  ( const IG& ig,
756  const LFSU& lfsu_s, const X& x_s, const X& z_s, const LFSV& lfsv_s,
757  const LFSU& lfsu_n, const X& x_n, const X& z_n, const LFSV& lfsv_n,
758  Y& y_s, Y& y_n) const
759  {}
760 
762 
797  template<typename IG, typename LFSU, typename X, typename LFSV,
798  typename Y>
800  ( const IG& ig,
801  const LFSU& lfsu_s, const X& x_s, const X& z_s, const LFSV& lfsv_s,
802  Y& y_s) const
803  {}
804 
806 
807 
808 
810  //
813  //
814 
816 
830  template<typename EG, typename LFSU, typename X, typename LFSV,
831  typename LocalMatrix>
832  void jacobian_volume
833  ( const EG& eg,
834  const LFSU& lfsu, const X& x, const LFSV& lfsv,
835  LocalMatrix& mat) const
836  {}
837 
839 
854  template<typename EG, typename LFSU, typename X, typename LFSV,
855  typename LocalMatrix>
857  ( const EG& eg,
858  const LFSU& lfsu, const X& x, const LFSV& lfsv,
859  LocalMatrix& mat) const
860  {}
861 
863 
895  template<typename IG, typename LFSU, typename X, typename LFSV,
896  typename LocalMatrix>
897  void jacobian_skeleton
898  ( const IG& ig,
899  const LFSU& lfsu_s, const X& x_s, const LFSV& lfsv_s,
900  const LFSU& lfsu_n, const X& x_n, const LFSV& lfsv_n,
901  LocalMatrix& mat_ss, LocalMatrix& mat_sn,
902  LocalMatrix& mat_ns, LocalMatrix& mat_nn) const
903  {}
904 
906 
925  template<typename IG, typename LFSU, typename X, typename LFSV,
926  typename LocalMatrix>
927  void jacobian_boundary
928  ( const IG& ig,
929  const LFSU& lfsu_s, const X& x_s, const LFSV& lfsv_s,
930  LocalMatrix& mat_ss) const
931  {}
932 
934  };
935 
937  }
938 }
939 
940 #endif // DUNE_PDELAB_LOCALOPERATOR_INTERFACE_HH
static const bool doAlphaVolume
Definition: localoperator/interface.hh:94
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:564
void pattern_boundary(const LFSU &lfsu_s, const LFSV &lfsv_s, LocalPattern &pattern_ss) const
get a boundary intersection&#39;s contribution to the sparsity pattern
Definition: localoperator/interface.hh:195
const IG & ig
Definition: constraints.hh:148
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&#39;s contribution to alpha
Definition: localoperator/interface.hh:301
void pattern_volume_post_skeleton(const LFSU &lfsu, const LFSV &lfsv, LocalPattern &pattern) const
get an element&#39;s contribution to the sparsity pattern after the intersections have been handled ...
Definition: localoperator/interface.hh:144
static const bool doPatternVolumePostSkeleton
Definition: localoperator/interface.hh:91
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&#39;s contribution to the sparsity pattern
Definition: localoperator/interface.hh:171
static const bool doPatternVolume
Definition: localoperator/interface.hh:90
static const bool doAlphaSkeleton
Definition: localoperator/interface.hh:96
static const bool doLambdaVolume
Definition: localoperator/interface.hh:98
static const bool doLambdaVolumePostSkeleton
Definition: localoperator/interface.hh:99
static const bool doLambdaBoundary
Definition: localoperator/interface.hh:101
void jacobian_volume(const EG &eg, const LFSU &lfsu, const X &x, const LFSV &lfsv, LocalMatrix &mat) const
get an element&#39;s jacobian
Definition: localoperator/interface.hh:833
For backward compatibility – Do not use this!
Definition: adaptivity.hh:27
static const bool doPatternSkeleton
Definition: localoperator/interface.hh:92
void lambda_volume_post_skeleton(const EG &eg, const LFSV &lfsv, R &r) const
get an element&#39;s contribution to lambda after the intersections have been handled ...
Definition: localoperator/interface.hh:381
static const bool doAlphaVolumePostSkeleton
Definition: localoperator/interface.hh:95
void lambda_boundary(const IG &ig, const LFSV &lfsv_s, R &r_s) const
get a boundary intersections&#39;s contribution to lambda
Definition: localoperator/interface.hh:426
static const bool doLambdaSkeleton
Definition: localoperator/interface.hh:100
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&#39;s contribution to alpha
Definition: localoperator/interface.hh:334
void alpha_volume(const EG &eg, const LFSU &lfsu, const X &x, const LFSV &lfsv, R &r) const
get an element&#39;s contribution to alpha
Definition: localoperator/interface.hh:232
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&#39;s jacobian for a linear problem.
Definition: localoperator/interface.hh:608
void jacobian_volume_post_skeleton(const EG &eg, const LFSU &lfsu, const X &x, const LFSV &lfsv, LocalMatrix &mat) const
get an element&#39;s jacobian after the intersections have been handled
Definition: localoperator/interface.hh:857
A dense matrix for storing data associated with the degrees of freedom of a pair of LocalFunctionSpac...
Definition: localmatrix.hh:184
Class to document the stationary local operator interface.
Definition: localoperator/interface.hh:85
Default flags for all local operators.
Definition: flags.hh:18
void lambda_volume(const EG &eg, const LFSV &lfsv, R &r) const
get an element&#39;s contribution to lambda
Definition: localoperator/interface.hh:361
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&#39;s jacobians
Definition: localoperator/interface.hh:898
void jacobian_apply_volume(const EG &eg, const LFSU &lfsu, const X &z, const LFSV &lfsv, Y &y) const
Applies an element&#39;s jacobian to a vector for a linear problem.
Definition: localoperator/interface.hh:471
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&#39;s contribution to lambda
Definition: localoperator/interface.hh:404
void alpha_volume_post_skeleton(const EG &eg, const LFSU &lfsu, const X &x, const LFSV &lfsv, R &r) const
get an element&#39;s contribution to alpha after the intersections have been handled
Definition: localoperator/interface.hh:262
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:511
static const bool doAlphaBoundary
Definition: localoperator/interface.hh:97
static const bool doPatternBoundary
Definition: localoperator/interface.hh:93
void pattern_volume(const LFSU &lfsu, const LFSV &lfsv, LocalPattern &pattern) const
get an element&#39;s contribution to the sparsity pattern
Definition: localoperator/interface.hh:124
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&#39;s jacobian
Definition: localoperator/interface.hh:928