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