DUNE PDELab (git)

interface.hh
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
6#include <dune/pdelab/localoperator/flags.hh>
7
8namespace 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
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: 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: interface.hh:166
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: 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: interface.hh:468
bool skip_entity(const EG &eg) const
whether to assembly methods associated with a given entity
Definition: 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: interface.hh:213
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: 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: 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: 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: 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: 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: interface.hh:609
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: 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: 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: interface.hh:848
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: interface.hh:423
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: 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: interface.hh:905
bool skip_intersection(const IG &ig) const
whether to assembly methods associated with a given intersection
Definition: interface.hh:138
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: 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: interface.hh:237
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: interface.hh:976
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: 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: interface.hh:803
void lambda_volume(const EG &eg, const LFSV &lfsv, R &r) const
get an element's contribution to lambda
Definition: 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: interface.hh:946
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: interface.hh:376
Dune namespace.
Definition: alignedallocator.hh:13
Creative Commons License   |  Legal Statements / Impressum  |  Hosted by TU Dresden  |  generated with Hugo v0.111.3 (Nov 24, 23:30, 2024)