dune-fem  2.8-git
lagrangepoints.hh
Go to the documentation of this file.
1 #ifndef DUNE_FEM_SPACE_LAGRANGE_LAGRANGEPOINTS_HH
2 #define DUNE_FEM_SPACE_LAGRANGE_LAGRANGEPOINTS_HH
3 
4 // dune-common includes
6 
7 // dune-geometry includes
8 #include <dune/geometry/referenceelements.hh>
9 
10 // dune-fem includes
13 
14 // local includes
15 #include "genericgeometry.hh"
16 #include "genericlagrangepoints.hh"
17 
18 
19 namespace Dune
20 {
21 
22  namespace Fem
23  {
24 
33  template< unsigned int topologyId, unsigned int dim, unsigned int polOrder >
35  : public GenericLagrangePoint< typename GeometryWrapper< topologyId, dim >::ImplType, polOrder >
36  {
39 
40  public:
41  static const unsigned int dimension = BaseType::dimension;
42 
43  typedef typename BaseType::DofCoordinateType DofCoordinateType;
44 
45  static const unsigned int polynomialOrder = BaseType::polynomialOrder;
46  static const unsigned int numLagrangePoints = BaseType::numLagrangePoints;
47 
48  template< unsigned int codim >
49  struct Codim
50  {
51  static unsigned int maxDofs ()
52  {
53  return BaseType::template Codim< codim >::maxDofs();
54  }
55  };
56 
57  LagrangePoint ( unsigned int index )
58  : BaseType( index )
59  {}
60 
61  LagrangePoint ( const BaseType &point )
62  : BaseType( point )
63  {}
64 
65  void dofSubEntity ( unsigned int &codim, unsigned int &subEntity )
66  {
67  BaseType::dofSubEntity( codim, subEntity );
68  }
69 
70  void dofSubEntity ( unsigned int &codim, unsigned int &subEntity, unsigned int &dofNumber )
71  {
72  BaseType::dofSubEntity( codim, subEntity, dofNumber );
73  }
74 
75  static unsigned int
76  entityDofNumber ( unsigned int codim, unsigned int subEntity, unsigned int dof )
77  {
78  return BaseType::entityDofNumber( codim, subEntity, dof );
79  }
80  };
81 
82  template< unsigned int dim, unsigned int maxPolOrder >
84  {
86  protected:
88 
89  public:
90  static const unsigned int dimension = dim;
91 
92  static const unsigned int maxPolynomialOrder = maxPolOrder;
93 
95  virtual ~LagrangePointInterface() = default;
96 
97  virtual unsigned int entityDofNumber ( unsigned int codim,
98  unsigned int subEntity,
99  unsigned int dofNumber ) const = 0;
100 
101  virtual GeometryType geometryType () const = 0;
102 
109  virtual unsigned int maxDofs ( unsigned int codim ) const = 0;
110 
111  static int maxOrder ()
112  {
113  return maxPolynomialOrder;
114  }
115 
123  virtual unsigned int numDofs ( unsigned int codim, unsigned int subEntity ) const = 0;
124 
131  virtual unsigned int numDofs ( unsigned int codim ) const = 0;
132 
133  virtual int order () const
134  {
135  return maxPolynomialOrder;
136  }
137  };
138 
139  template< unsigned int topologyId, unsigned int dim, unsigned int maxPolOrder, int polOrder >
141  public LagrangePointInterface< dim, maxPolOrder >
142  {
144  public:
146 
147  virtual ~LagrangePointImplementation() = default;
148 
149  virtual unsigned int
150  entityDofNumber ( unsigned int codim, unsigned int subEntity, unsigned int dofNumber ) const
151  {
152  return LagrangePointType::entityDofNumber( codim, subEntity, dofNumber );
153  }
154 
155  virtual GeometryType geometryType () const
156  {
157  return GeometryType( topologyId, dim );
158  }
159 
162  virtual unsigned int maxDofs ( unsigned int codim ) const
163  {
164  return LagrangePointType::maxDofs( codim );
165  }
166 
169  virtual unsigned int
170  numDofs ( unsigned int codim, unsigned int subEntity ) const
171  {
172  return LagrangePointType::numDofs( codim, subEntity );
173  }
174 
177  virtual unsigned int numDofs ( unsigned int codim ) const
178  {
179  return LagrangePointType::numDofs( codim );
180  }
181 
182  virtual int order () const { return polOrder; }
183  };
184 
195  template< class FieldImp, int dim, unsigned int maxPolOrder >
197  : public IntegrationPointListImp< FieldImp, dim >
198  {
201 
202  public:
204  typedef FieldImp FieldType;
205 
207  static const int dimension = dim;
208 
210  static const unsigned int maxPolynomialOrder = maxPolOrder;
211 
213  typedef FieldVector< FieldType, dimension > CoordinateType;
214 
215  private:
218 
219  const LagrangePointInterfaceType &lagrangePointImpl () const
220  {
221  assert( lagrangePointImpl_ ) ;
222  return *lagrangePointImpl_;
223  }
224 
225  public:
226  explicit LagrangePointListInterface ( const size_t id )
227  : BaseType( id ),
228  dofInfos_(),
229  lagrangePointImpl_( 0 )
230  {}
231 
233  {
234  delete lagrangePointImpl_;
235  }
236 
238 
240  {
241  assert( lagrangePointImpl_ == 0 );
242  lagrangePointImpl_ = lpImpl ;
243  }
244 
245  const LocalKey &dofInfo ( unsigned int index ) const
246  {
247  return dofInfos_[ index ];
248  }
249 
250  void dofSubEntity ( unsigned int index,
251  unsigned int &codim,
252  unsigned int &subEntity,
253  unsigned int &dofNumber ) const
254  {
255  const LocalKey &dofInfo = this->dofInfo( index );
256  codim = dofInfo.codim();
257  subEntity = dofInfo.subEntity();
258  dofNumber = dofInfo.index();
259  }
260 
261  unsigned int entityDofNumber ( unsigned int codim,
262  unsigned int subEntity,
263  unsigned int dofNumber ) const
264  {
265  return lagrangePointImpl().entityDofNumber( codim, subEntity, dofNumber );
266  }
267 
268  GeometryType geometryType () const
269  {
270  return lagrangePointImpl().geometryType();
271  }
272 
279  unsigned int maxDofs ( unsigned int codim ) const
280  {
281  return lagrangePointImpl().maxDofs( codim );
282  }
283 
284  static int maxOrder ()
285  {
287  }
288 
296  unsigned int numDofs ( unsigned int codim, unsigned int subEntity ) const
297  {
298  return lagrangePointImpl().numDofs( codim, subEntity );
299  }
300 
307  unsigned int numDofs ( unsigned int codim ) const
308  {
309  return lagrangePointImpl().numDofs( codim );
310  }
311 
312  int order () const
313  {
314  return lagrangePointImpl().order();
315  }
316 
317  protected:
318  void addDofInfo ( const LocalKey &dofInfo )
319  {
320  dofInfos_.push_back( dofInfo );
321  }
322 
323  private:
324  std::vector< LocalKey > dofInfos_;
325  const LagrangePointInterfaceType* lagrangePointImpl_;
326  };
327 
328 
329  template< class FieldImp, unsigned int topologyId, unsigned int dim, unsigned int maxPolOrder >
331  : public LagrangePointListInterface< FieldImp, dim, maxPolOrder >
332  {
335 
336  public:
338  typedef FieldImp FieldType;
339 
341  enum { dimension = dim };
342 
344  static const int maxPolynomialOrder = maxPolOrder ;
345 
347  typedef FieldVector< FieldType, dimension > CoordinateType;
348 
349  private:
350  template <int pOrd>
351  struct CreateLagrangePoint
352  {
353  typedef LagrangePoint< topologyId, dimension, pOrd > LagrangePointType;
354  enum { numLagrangePoints = LagrangePointType::numLagrangePoints };
355 
356  static void apply( ThisType& lp, const int order )
357  {
358  // if order is not equal to pOrd, do nothing
359  if( order != pOrd ) return ;
360 
361  for( unsigned int i = 0; i < numLagrangePoints; ++i )
362  {
363  LagrangePointType pt( i );
364 
365  CoordinateType local;
366  pt.local( local );
367  lp.addIntegrationPoint( local );
368 
369  unsigned int codim, subEntity, dofNumber;
370  pt.dofSubEntity( codim, subEntity, dofNumber );
371  lp.addDofInfo( LocalKey( subEntity, codim, dofNumber ) );
372  }
373 
375  LagrangePointImplementationType;
376  lp.setLagrangePointImpl( new LagrangePointImplementationType() );
377  }
378  };
379  public:
381  : BaseType( id )
382  {
384  }
385 
386  LagrangePointListImplementation ( const GeometryType &geo, const int order, const size_t id )
387  : BaseType( id )
388  {
390 
391  // assert this after lagrangePointImpl has been created since
392  // this->geometry() uses this class
393  assert( order <= maxPolynomialOrder );
394  assert( geo == this->geometryType() );
395  }
396 
397  LagrangePointListImplementation ( const ThisType& ) = delete;
398  };
399 
400 
401  template< class FieldImp, unsigned int topologyId, unsigned int dim, unsigned int maxPolOrder >
403 
404 
405 
406 
407  template< class Field, int dim, unsigned int maxPolOrder >
409  {
411  typedef Field FieldType;
412 
414  static const unsigned int maxPolynomialOrder = maxPolOrder;
415 
417  static const int dimension = dim;
418 
420  static const int codimension = 0;
421 
423  template< typename ct, int quaddim >
425  {
428 
431 
434 
437 
440 
443 
446 
447  typedef int QuadratureKeyType ;
448  };
449 
452 
455  };
456 
457 
458 
459  template< class GridPart, unsigned int maxPolOrder >
460  class LagrangePointSet;
461 
462 
463 
464  // SubEntityLagrangePointIterator
465  // ------------------------------
466 
467  template< class GridPart, int codim, unsigned int polOrder >
469  {
471 
472  public:
473  typedef GridPart GridPartType;
474 
475  typedef typename GridPartType::ctype FieldType;
476 
477  static const int dimension = GridPartType::dimension;
478  static const int codimension = codim;
479 
480  static const unsigned int polynomialOrder = polOrder;
481 
482  typedef FieldVector< FieldType, dimension > pointType;
483 
485 
486  private:
487  typedef Dune::ReferenceElement< FieldType, dimension > ReferenceElementType;
488  typedef Dune::ReferenceElements< FieldType, dimension > ReferenceElementsType;
489 
490  SubEntityLagrangePointIterator ( const LagrangePointSetType &lagrangePointSet,
491  const unsigned int subEntity,
492  const bool beginIterator )
493  : lagrangePointSet_( &lagrangePointSet ),
494  refElement_( &ReferenceElementsType::general( lagrangePointSet_->geometryType() ) ),
495  subEntity_( subEntity ),
496  codim_( beginIterator ? codimension : dimension+1 ),
497  subIndex_( 0 ),
498  numSubIndices_( 1 ),
499  subSubEntity_( subEntity_ ),
500  dofNumber_( 0 ),
501  numDofs_( lagrangePointSet_->numDofs( codimension, subSubEntity_ ) )
502  {
503  if( beginIterator )
504  assertDof();
505  }
506 
507  public:
509  : lagrangePointSet_( 0 ),
510  refElement_( 0 ),
511  codim_( dimension+1 ),
512  subEntity_( 0 ),
513  subIndex_( 0 ),
514  dofNumber_( 0 )
515  {}
516 
517  unsigned int operator* () const
518  {
519  assert( lagrangePointSet_ );
520  assert( codim_ <= dimension );
521 
522  return lagrangePointSet_->entityDofNumber( codim_, subSubEntity_, dofNumber_ );
523  }
524 
526  {
527  assert( codim_ <= dimension );
528  ++dofNumber_;
529  assertDof();
530  return *this;
531  }
532 
533  bool operator== ( const ThisType& other ) const
534  {
535  if( (other.codim_ != codim_)
536  || (other.subIndex_ != subIndex_)
537  || (other.dofNumber_ != dofNumber_) )
538  return false;
539 
540  return (other.lagrangePointSet_ == lagrangePointSet_)
541  && (other.subEntity_ == subEntity_);
542  }
543 
544  bool operator!= ( const ThisType& other ) const
545  {
546  return !(*this == other);
547  }
548 
549  static ThisType begin ( const LagrangePointSetType &lagrangePointSet,
550  unsigned int subEntity )
551  {
552  return ThisType( lagrangePointSet, subEntity, true );
553  }
554 
555  static ThisType end ( const LagrangePointSetType &lagrangePointSet,
556  unsigned int subEntity )
557  {
558  return ThisType( lagrangePointSet, subEntity, false );
559  }
560 
561  private:
562  void assertDof ()
563  {
564  assert( lagrangePointSet_ );
565  assert( refElement_ );
566 
567  while( dofNumber_ >= numDofs_ )
568  {
569  const ReferenceElementType &refElement = *refElement_;
570 
571  dofNumber_ = 0;
572  ++subIndex_;
573  while( subIndex_ >= numSubIndices_ )
574  {
575  subIndex_ = 0;
576  if( ++codim_ > dimension )
577  return;
578  numSubIndices_ = refElement.size( subEntity_, codimension, codim_ );
579  }
580  subSubEntity_ = refElement.subEntity( subEntity_, codimension, subIndex_, codim_ );
581  numDofs_ = lagrangePointSet_->numDofs( codim_, subSubEntity_ );
582  }
583  }
584 
585  const LagrangePointSetType *lagrangePointSet_;
586  const ReferenceElementType *refElement_;
587  unsigned int subEntity_;
588 
589  int codim_;
590  unsigned int subIndex_, numSubIndices_;
591  unsigned int subSubEntity_;
592  unsigned int dofNumber_, numDofs_;
593  };
594 
595 
596 
597  // SubEntityLagrangePointIterator for codimension 0
598  // ------------------------------------------------
599 
600  template< class GridPart, unsigned int polOrder >
601  class SubEntityLagrangePointIterator< GridPart, 0, polOrder >
602  {
604 
605  public:
606  typedef GridPart GridPartType;
607 
608  typedef typename GridPartType::ctype FieldType;
609 
610  static const int dimension = GridPartType::dimension;
611  static const int codimension = 0;
612 
613  static const unsigned int polynomialOrder = polOrder;
614 
615  typedef FieldVector< FieldType, dimension > pointType;
616 
618 
619  private:
620  SubEntityLagrangePointIterator ( const LagrangePointSetType &lagrangePointSet,
621  const unsigned int subEntity,
622  const bool beginIterator )
623  : lagrangePointSet_( &lagrangePointSet ),
624  numDofs_( lagrangePointSet_->size() ),
625  index_( beginIterator ? 0 : numDofs_ )
626  {
627  assert( subEntity == 0 );
628  }
629 
630  public:
632  : lagrangePointSet_( 0 ),
633  numDofs_( 0 ),
634  index_( 0 )
635  {}
636 
637  unsigned int operator* () const
638  {
639  assert( lagrangePointSet_ );
640  assert( index_ < numDofs_ );
641  return index_;
642  }
643 
645  {
646  assert( index_ < numDofs_ );
647  ++index_;
648  return *this;
649  }
650 
651  bool operator== ( const ThisType& other ) const
652  {
653  return (other.index_ == index_)
654  && (other.lagrangePointSet_ == lagrangePointSet_);
655  }
656 
657  bool operator!= ( const ThisType& other ) const
658  {
659  return !(*this == other);
660  }
661 
662 
663  static ThisType begin ( const LagrangePointSetType &lagrangePointSet,
664  unsigned int subEntity )
665  {
666  return ThisType( lagrangePointSet, subEntity, true );
667  }
668 
669  static ThisType end ( const LagrangePointSetType &lagrangePointSet,
670  unsigned int subEntity )
671  {
672  return ThisType( lagrangePointSet, subEntity, false );
673  }
674 
675  private:
676  const LagrangePointSetType *lagrangePointSet_;
677  unsigned int numDofs_, index_;
678  };
679 
680 
681 
682  template< class GridPart, unsigned int maxPolOrder >
684  : public CachingPointList< GridPart, 0, LagrangePointSetTraits< typename GridPart::ctype, GridPart::dimension, maxPolOrder > >
685  {
688 
689  public:
691 
692  typedef GridPart GridPartType;
693 
694  typedef typename GridPartType::ctype FieldType;
695 
696  static const int dimension = BaseType::dimension;
697 
699 
700  typedef typename BaseType::CoordinateType CoordinateType;
702 
703  template< unsigned int codim >
704  struct Codim
705  {
709  };
710 
711  private:
712  typedef typename BaseType::IntegrationPointListType::IntegrationPointListType
713  LagrangePointListType;
714 
715  public:
717  LagrangePointSet ( const GeometryType &geometry, const int polynomialOrder )
718  : BaseType( geometry, polynomialOrder ), lagrangePointList_( this->quadImp().ipList() )
719  {}
720 
722  LagrangePointSet ( const ThisType &other )
723  : BaseType( other ), lagrangePointList_( this->quadImp().ipList() )
724  {}
725 
726  ThisType& operator=( const ThisType& ) = delete;
727 
728  const LocalKey &localKey ( unsigned int index ) const
729  {
730  return lagrangePointList_.dofInfo( index );
731  }
732 
733  void dofSubEntity ( unsigned int index, unsigned int &codim,
734  unsigned int &subEntity ) const
735  {
736  unsigned int dofNumber;
737  lagrangePointList_.dofSubEntity( index, codim, subEntity, dofNumber );
738  }
739 
740  void dofSubEntity ( unsigned int index, unsigned int &codim,
741  unsigned int &subEntity, unsigned int &dofNumber ) const
742  {
743  lagrangePointList_.dofSubEntity( index, codim, subEntity, dofNumber );
744  }
745 
746  unsigned int entityDofNumber ( unsigned int codim, unsigned int subEntity,
747  unsigned int dofNumber ) const
748  {
749  return lagrangePointList_.entityDofNumber( codim, subEntity, dofNumber );
750  }
751 
752  unsigned int maxDofs ( unsigned int codim ) const
753  {
754  return lagrangePointList_.maxDofs( codim );
755  }
756 
757  unsigned int numDofs ( unsigned int codim, unsigned int subEntity ) const
758  {
759  return lagrangePointList_.numDofs( codim, subEntity );
760  }
761 
762  unsigned int numDofs ( unsigned int codim ) const
763  {
764  return lagrangePointList_.numDofs( codim );
765  }
766 
768  std::size_t size () const
769  {
770  return this->nop();
771  }
772 
773  template< unsigned int codim >
775  beginSubEntity ( unsigned int subEntity ) const
776  {
777  return Codim< codim >::SubEntityIteratorType::begin( *this, subEntity );
778  }
779 
780  template< unsigned int codim >
782  endSubEntity ( unsigned int subEntity ) const
783  {
784  return Codim< codim >::SubEntityIteratorType::end( *this, subEntity );
785  }
786 
787  private:
788  const LagrangePointListType &lagrangePointList_;
789  };
790 
791  } // namespace Fem
792 
793 } // namespace Dune
794 
795 #endif // #ifndef DUNE_FEM_SPACE_LAGRANGE_LAGRANGEPOINTS_HH
Definition: bindguard.hh:11
static DUNE_PRIVATE void apply(Args &&... args)
Definition: forloop.hh:23
integration point list supporting base function caching
Definition: cachingpointlist.hh:103
actual interface class for integration point lists
Definition: quadrature.hh:161
IntegrationPointListType ::CoordinateType CoordinateType
type of coordinate
Definition: quadrature.hh:180
Generic implementation of an IntegrationPointList.
Definition: quadratureimp.hh:33
void addIntegrationPoint(const CoordinateType &point)
Adds an integration point to the list.
Definition: quadratureimp.hh:169
size_t id() const
obtain the identifier of the integration point list
Definition: quadratureimp.hh:122
FieldVector< FieldType, dim > CoordinateType
type of local coordinates
Definition: quadratureimp.hh:46
Definition: genericlagrangepoints.hh:21
A single lagrange point.
Definition: lagrangepoints.hh:36
void dofSubEntity(unsigned int &codim, unsigned int &subEntity)
Definition: lagrangepoints.hh:65
static const unsigned int numLagrangePoints
Definition: lagrangepoints.hh:46
static unsigned int entityDofNumber(unsigned int codim, unsigned int subEntity, unsigned int dof)
Definition: lagrangepoints.hh:76
static const unsigned int polynomialOrder
Definition: lagrangepoints.hh:45
static const unsigned int dimension
Definition: lagrangepoints.hh:41
LagrangePoint(unsigned int index)
Definition: lagrangepoints.hh:57
void dofSubEntity(unsigned int &codim, unsigned int &subEntity, unsigned int &dofNumber)
Definition: lagrangepoints.hh:70
LagrangePoint(const BaseType &point)
Definition: lagrangepoints.hh:61
BaseType::DofCoordinateType DofCoordinateType
Definition: lagrangepoints.hh:43
Definition: lagrangepoints.hh:50
static unsigned int maxDofs()
Definition: lagrangepoints.hh:51
Definition: lagrangepoints.hh:84
virtual unsigned int maxDofs(unsigned int codim) const =0
obtain the maximal number of DoFs in one entity of a codimension
virtual unsigned int entityDofNumber(unsigned int codim, unsigned int subEntity, unsigned int dofNumber) const =0
static const unsigned int maxPolynomialOrder
Definition: lagrangepoints.hh:92
virtual GeometryType geometryType() const =0
static const unsigned int dimension
Definition: lagrangepoints.hh:90
virtual unsigned int numDofs(unsigned int codim, unsigned int subEntity) const =0
obtain the number of DoFs on one entity
virtual ~LagrangePointInterface()=default
destructor
static int maxOrder()
Definition: lagrangepoints.hh:111
virtual unsigned int numDofs(unsigned int codim) const =0
obtain the total number of DoFs in a codimension
virtual int order() const
Definition: lagrangepoints.hh:133
Definition: lagrangepoints.hh:142
virtual unsigned int maxDofs(unsigned int codim) const
obtain the maximal number of DoFs in one entity of a codimension
Definition: lagrangepoints.hh:162
virtual unsigned int entityDofNumber(unsigned int codim, unsigned int subEntity, unsigned int dofNumber) const
Definition: lagrangepoints.hh:150
virtual GeometryType geometryType() const
Definition: lagrangepoints.hh:155
virtual ~LagrangePointImplementation()=default
virtual int order() const
Definition: lagrangepoints.hh:182
virtual unsigned int numDofs(unsigned int codim, unsigned int subEntity) const
Definition: lagrangepoints.hh:170
virtual unsigned int numDofs(unsigned int codim) const
Definition: lagrangepoints.hh:177
Set of lagrange points.
Definition: lagrangepoints.hh:198
void dofSubEntity(unsigned int index, unsigned int &codim, unsigned int &subEntity, unsigned int &dofNumber) const
Definition: lagrangepoints.hh:250
~LagrangePointListInterface()
Definition: lagrangepoints.hh:232
unsigned int maxDofs(unsigned int codim) const
obtain the maximal number of DoFs in one entity of a codimension
Definition: lagrangepoints.hh:279
void setLagrangePointImpl(const LagrangePointInterfaceType *lpImpl)
Definition: lagrangepoints.hh:239
FieldVector< FieldType, dimension > CoordinateType
type of points
Definition: lagrangepoints.hh:213
unsigned int numDofs(unsigned int codim, unsigned int subEntity) const
obtain the number of DoFs on one entity
Definition: lagrangepoints.hh:296
static const int dimension
dimension of points
Definition: lagrangepoints.hh:207
LagrangePointListInterface(const size_t id)
Definition: lagrangepoints.hh:226
LagrangePointListInterface(const ThisType &)=delete
const LocalKey & dofInfo(unsigned int index) const
Definition: lagrangepoints.hh:245
GeometryType geometryType() const
obtain GeometryType for this integration point list
Definition: lagrangepoints.hh:268
FieldImp FieldType
field type of points
Definition: lagrangepoints.hh:204
unsigned int entityDofNumber(unsigned int codim, unsigned int subEntity, unsigned int dofNumber) const
Definition: lagrangepoints.hh:261
static int maxOrder()
Definition: lagrangepoints.hh:284
static const unsigned int maxPolynomialOrder
polynomial order of corresponding base functions
Definition: lagrangepoints.hh:210
int order() const
obtain order of the integration point list
Definition: lagrangepoints.hh:312
void addDofInfo(const LocalKey &dofInfo)
Definition: lagrangepoints.hh:318
unsigned int numDofs(unsigned int codim) const
obtain the total number of DoFs in a codimension
Definition: lagrangepoints.hh:307
Definition: lagrangepoints.hh:332
@ dimension
Definition: lagrangepoints.hh:341
LagrangePointListImplementation(const size_t id)
Definition: lagrangepoints.hh:380
FieldVector< FieldType, dimension > CoordinateType
type of points
Definition: lagrangepoints.hh:347
LagrangePointListImplementation(const ThisType &)=delete
FieldImp FieldType
field type of points
Definition: lagrangepoints.hh:338
static const int maxPolynomialOrder
polynomial order of corresponding base functions
Definition: lagrangepoints.hh:344
LagrangePointListImplementation(const GeometryType &geo, const int order, const size_t id)
Definition: lagrangepoints.hh:386
Definition: lagrangepoints.hh:409
static const int codimension
codimension of point set
Definition: lagrangepoints.hh:420
static const unsigned int maxPolynomialOrder
polynomial order of corresponding base functions
Definition: lagrangepoints.hh:414
Fem::IntegrationPointList< FieldType, dimension, PointListTraits > IntegrationPointListType
type of used integration point list
Definition: lagrangepoints.hh:451
static const int dimension
dimension of points
Definition: lagrangepoints.hh:417
Field FieldType
field type of coordinates
Definition: lagrangepoints.hh:411
IntegrationPointListType::CoordinateType CoordinateType
type of global coordinate
Definition: lagrangepoints.hh:454
default defines for used point lists
Definition: lagrangepoints.hh:425
LagrangePointListImplementation< ct,(1<<(dimension-1)) -1, dimension, maxPolynomialOrder > PyramidQuadratureType
Definition: lagrangepoints.hh:442
LagrangePointListInterface< ct, quaddim, maxPolynomialOrder > IntegrationPointListType
type of integration point list implemementation
Definition: lagrangepoints.hh:445
LagrangePointListImplementation< ct, 0, 0, maxPolynomialOrder > PointQuadratureType
Definition: lagrangepoints.hh:427
int QuadratureKeyType
Definition: lagrangepoints.hh:447
LagrangePointListImplementation< ct, 0, dimension, maxPolynomialOrder > SimplexQuadratureType
Definition: lagrangepoints.hh:433
LagrangePointListImplementation< ct, 0, 1, maxPolynomialOrder > LineQuadratureType
Definition: lagrangepoints.hh:430
LagrangePointListImplementation< ct,(1<<(dimension-1)), dimension, maxPolynomialOrder > PrismQuadratureType
Definition: lagrangepoints.hh:439
Definition: lagrangepoints.hh:685
BaseType::CoordinateType CoordinateType
Definition: lagrangepoints.hh:700
Codim< codim >::SubEntityIteratorType beginSubEntity(unsigned int subEntity) const
Definition: lagrangepoints.hh:775
unsigned int numDofs(unsigned int codim, unsigned int subEntity) const
Definition: lagrangepoints.hh:757
unsigned int maxDofs(unsigned int codim) const
Definition: lagrangepoints.hh:752
GridPartType::ctype FieldType
Definition: lagrangepoints.hh:694
ThisType & operator=(const ThisType &)=delete
Codim< codim >::SubEntityIteratorType endSubEntity(unsigned int subEntity) const
Definition: lagrangepoints.hh:782
void dofSubEntity(unsigned int index, unsigned int &codim, unsigned int &subEntity) const
Definition: lagrangepoints.hh:733
GridPart GridPartType
Definition: lagrangepoints.hh:692
void dofSubEntity(unsigned int index, unsigned int &codim, unsigned int &subEntity, unsigned int &dofNumber) const
Definition: lagrangepoints.hh:740
LagrangePointSet(const GeometryType &geometry, const int polynomialOrder)
constructor
Definition: lagrangepoints.hh:717
unsigned int numDofs(unsigned int codim) const
Definition: lagrangepoints.hh:762
const LocalKey & localKey(unsigned int index) const
Definition: lagrangepoints.hh:728
static const int dimension
Definition: lagrangepoints.hh:696
LagrangePointSet(const ThisType &other)
copy constructor
Definition: lagrangepoints.hh:722
unsigned int entityDofNumber(unsigned int codim, unsigned int subEntity, unsigned int dofNumber) const
Definition: lagrangepoints.hh:746
@ maxPolynomialOrder
Definition: lagrangepoints.hh:698
std::size_t size() const
get number of Lagrange points
Definition: lagrangepoints.hh:768
LagrangePointSetTraits< typename GridPart::ctype, GridPart::dimension, maxPolOrder > Traits
Definition: lagrangepoints.hh:690
Traits::CoordinateType PointType
Definition: lagrangepoints.hh:701
Definition: lagrangepoints.hh:469
static const int codimension
Definition: lagrangepoints.hh:478
GridPartType::ctype FieldType
Definition: lagrangepoints.hh:475
bool operator!=(const ThisType &other) const
Definition: lagrangepoints.hh:544
bool operator==(const ThisType &other) const
Definition: lagrangepoints.hh:533
FieldVector< FieldType, dimension > pointType
Definition: lagrangepoints.hh:482
GridPart GridPartType
Definition: lagrangepoints.hh:473
LagrangePointSet< GridPartType, polynomialOrder > LagrangePointSetType
Definition: lagrangepoints.hh:484
static ThisType begin(const LagrangePointSetType &lagrangePointSet, unsigned int subEntity)
Definition: lagrangepoints.hh:549
static ThisType end(const LagrangePointSetType &lagrangePointSet, unsigned int subEntity)
Definition: lagrangepoints.hh:555
ThisType & operator++()
Definition: lagrangepoints.hh:525
unsigned int operator*() const
Definition: lagrangepoints.hh:517
SubEntityLagrangePointIterator()
Definition: lagrangepoints.hh:508
static const int dimension
Definition: lagrangepoints.hh:477
static const unsigned int polynomialOrder
Definition: lagrangepoints.hh:480
FieldVector< FieldType, dimension > pointType
Definition: lagrangepoints.hh:615
LagrangePointSet< GridPartType, polynomialOrder > LagrangePointSetType
Definition: lagrangepoints.hh:617
static ThisType end(const LagrangePointSetType &lagrangePointSet, unsigned int subEntity)
Definition: lagrangepoints.hh:669
GridPart GridPartType
Definition: lagrangepoints.hh:606
static ThisType begin(const LagrangePointSetType &lagrangePointSet, unsigned int subEntity)
Definition: lagrangepoints.hh:663
GridPartType::ctype FieldType
Definition: lagrangepoints.hh:608
Definition: lagrangepoints.hh:705
SubEntityLagrangePointIterator< GridPartType, codim, maxPolynomialOrder > SubEntityIteratorType
type of iterator over DoF numbers in a subentity
Definition: lagrangepoints.hh:708
Definition: localkey.hh:21
unsigned int subEntity() const
Definition: localkey.hh:26
unsigned int index() const
Definition: localkey.hh:28
unsigned int codim() const
Definition: localkey.hh:27