1#ifndef DUNE_FEM_SPACE_LAGRANGE_GENERICLAGRANGEPOINTS_HH
2#define DUNE_FEM_SPACE_LAGRANGE_GENERICLAGRANGEPOINTS_HH
8#include <dune/common/fvector.hh>
20 template<
class ImplType,
unsigned int order,
bool bottom = true >
24 template<
unsigned int order,
bool bottom >
29 static const unsigned int dimension = GeometryType::dimension;
33 static const unsigned int polynomialOrder = order;
35 template<
class,
unsigned int,
bool >
38 template<
class,
class,
unsigned int >
45 static const unsigned int numLagrangePoints = 1;
51 template<
unsigned int codim >
57 dofCoordinate( index, dofCoordinate_ );
61 : dofCoordinate_( point.dofCoordinate_ )
64 template<
class LocalCoordinateType >
67 unsigned int &subEntity )
73 template<
class LocalCoordinateType >
76 unsigned int &subEntity,
77 unsigned int &dofNumber )
85 unsigned int &subEntity )
87 dofSubEntity( dofCoordinate_, codim, subEntity );
91 unsigned int &subEntity,
92 unsigned int &dofNumber )
94 dofSubEntity( dofCoordinate_, codim, subEntity, dofNumber );
98 unsigned int subEntity,
105 template<
class LocalCoordinateType >
108 return polynomialOrder;
113 return height( dofCoordinate_ );
116 template<
class FieldType >
117 void local ( FieldVector< FieldType, dimension > &
coordinate )
const
119 const FieldType factor = FieldType( 1 ) / FieldType( polynomialOrder );
120 for(
unsigned int i = 0; i < dimension; ++i )
121 coordinate[ i ] = factor * dofCoordinate_[ i ];
130 static unsigned int maxDofs (
unsigned int codim )
132 return ((codim == 0) ? 1 : 0);
142 static unsigned int numDofs (
unsigned int codim,
unsigned int subEntity )
144 return ((codim == 0) ? 1 : 0);
153 static unsigned int numDofs (
unsigned int codim )
155 return ((codim == 0) ? 1 : 0);
159 template<
class LocalCoordinateType >
163 assert( index <= numLagrangePoints );
170 template<
unsigned int order,
bool bottom >
171 template<
unsigned int codim >
172 struct GenericLagrangePoint< PointGeometry, order, bottom >::Codim
174 static unsigned int maxDofs ()
176 return ((codim == 0) ? 1 : 0);
182 template<
class BaseGeometry,
bool bottom >
189 static const unsigned int dimension = GeometryType::dimension;
193 static const unsigned int polynomialOrder = 0;
195 template<
class,
unsigned int,
bool >
198 template<
class,
class,
unsigned int >
205 static const unsigned int numLagrangePoints = 1;
211 template<
unsigned int codim >
217 dofCoordinate( index, dofCoordinate_ );
221 : dofCoordinate_( point.dofCoordinate_ )
224 template<
class LocalCoordinateType >
227 unsigned int &subEntity )
229 codim = (bottom ? 0 : dimension);
233 template<
class LocalCoordinateType >
236 unsigned int &subEntity,
237 unsigned int &dofNumber )
239 codim = (bottom ? 0 : dimension);
245 unsigned int &subEntity )
247 dofSubEntity( dofCoordinate_, codim, subEntity );
251 unsigned int &subEntity,
252 unsigned int &dofNumber )
254 dofSubEntity( dofCoordinate_, codim, subEntity, dofNumber );
258 unsigned int subEntity,
264 template<
class LocalCoordinateType >
267 return polynomialOrder;
272 return height( dofCoordinate_ );
275 template<
class FieldType >
276 void local ( FieldVector< FieldType, dimension > &
coordinate )
const
278 const FieldType factor = FieldType( 1 ) / FieldType( polynomialOrder );
279 for(
unsigned int i = 0; i < dimension; ++i )
280 coordinate[ i ] = factor * dofCoordinate_[ i ];
289 static unsigned int maxDofs (
unsigned int codim )
292 return ((codim == 0) ? 1 : 0);
294 return ((codim == dimension) ? 1 : 0);
304 static unsigned int numDofs (
unsigned int codim,
unsigned int subEntity )
307 return ((codim == 0) ? 1 : 0);
309 return ((codim == dimension) ? 1 : 0);
318 static unsigned int numDofs (
unsigned int codim )
321 return ((codim == 0) ? 1 : 0);
323 return ((codim == dimension) ? 1 : 0);
327 template<
class LocalCoordinateType >
331 assert( index <= numLagrangePoints );
338 template<
class BaseGeometry,
bool bottom >
339 template<
unsigned int codim >
340 struct GenericLagrangePoint< PyramidGeometry< BaseGeometry >, 0, bottom >::Codim
342 static inline unsigned int maxDofs ()
345 return ((codim == 0) ? 1 : 0);
347 return ((codim == dimension) ? 1 : 0);
353 template<
class BaseGeometry,
unsigned int order,
bool bottom >
359 static const unsigned int dimension = GeometryType :: dimension;
363 static const unsigned int polynomialOrder = order;
365 template<
class,
unsigned int,
bool >
368 template<
class,
class,
unsigned int >
380 static const unsigned int numLagrangePoints
381 = DimensionReductionType::numLagrangePoints + OrderReductionType::numLagrangePoints;
387 template<
unsigned int codim >
393 dofCoordinate( index, dofCoordinate_ );
397 : dofCoordinate_( point.dofCoordinate_ )
400 template<
class LocalCoordinateType >
403 unsigned int &subEntity )
408 OrderReductionType::dofSubEntity(
coordinate, codim, subEntity );
411 if( bottom && (codim > 0) )
412 subEntity += BaseGeometryType::numSubEntities( codim - 1 );
416 DimensionReductionType::dofSubEntity(
coordinate.base(), codim, subEntity );
422 template<
class LocalCoordinateType >
425 unsigned int &subEntity,
426 unsigned int &dofNumber )
431 OrderReductionType::template dofSubEntity(
coordinate, codim, subEntity, dofNumber );
435 subEntity += (codim > 0 ? BaseGeometryType :: numSubEntities( codim - 1 ) : 0);
437 dofNumber += DimensionReductionType::numDofs( codim, subEntity );
441 DimensionReductionType::dofSubEntity(
coordinate.base(), codim, subEntity, dofNumber );
449 unsigned int &subEntity )
451 dofSubEntity( dofCoordinate_, codim, subEntity );
455 unsigned int &subEntity,
456 unsigned int &dofNumber )
458 dofSubEntity( dofCoordinate_, codim, subEntity, dofNumber );
462 unsigned int subEntity,
468 return OrderReductionType::entityDofNumber( codim, subEntity, dof )
469 + DimensionReductionType::numLagrangePoints;
471 const unsigned int numBaseSubEntities
472 = BaseGeometryType::numSubEntities( codim - 1 );
473 if( subEntity >= numBaseSubEntities )
474 return OrderReductionType::entityDofNumber( codim, subEntity - numBaseSubEntities, dof )
475 + DimensionReductionType::numLagrangePoints;
477 return DimensionReductionType::entityDofNumber( codim - 1, subEntity, dof );
481 const unsigned int numBaseEntityDofs
482 = DimensionReductionType::numDofs( codim, subEntity );
483 if( dof >= numBaseEntityDofs )
484 return OrderReductionType::entityDofNumber( codim, subEntity, dof - numBaseEntityDofs )
485 + DimensionReductionType::numLagrangePoints;
487 return DimensionReductionType::entityDofNumber( codim, subEntity, dof );
491 template<
class LocalCoordinateType >
496 unsigned int h = OrderReductionType :: height(
coordinate );
500 return DimensionReductionType :: height(
coordinate.base() );
505 return height( dofCoordinate_ );
508 template<
class FieldType >
509 void local ( FieldVector< FieldType, dimension > &
coordinate )
const
511 const FieldType factor = FieldType( 1 ) / FieldType( polynomialOrder );
512 for(
unsigned int i = 0; i < dimension; ++i )
513 coordinate[ i ] = factor * dofCoordinate_[ i ];
522 static unsigned int maxDofs (
unsigned int codim )
524 const unsigned int maxOrderDofs
525 = OrderReductionType::maxDofs( codim );
527 if( bottom && (codim == 0) )
530 const unsigned int maxDimDofs
531 = DimensionReductionType::maxDofs( bottom ? codim - 1 : codim );
533 return (bottom ?
std::max( maxDimDofs, maxOrderDofs )
534 : maxDimDofs + maxOrderDofs);
544 static unsigned int numDofs (
unsigned int codim,
unsigned int subEntity )
548 if( bottom && (codim == 0) )
549 return OrderReductionType::numDofs( codim, subEntity );
551 const unsigned int numBaseSubEntities
552 = BaseGeometryType::numSubEntities( codim - 1 );
553 if( subEntity < numBaseSubEntities )
554 return DimensionReductionType::numDofs( codim - 1, subEntity );
556 return OrderReductionType::numDofs( codim, subEntity - numBaseSubEntities );
560 return DimensionReductionType::numDofs( codim, subEntity )
561 + OrderReductionType::numDofs( codim, subEntity );
571 static unsigned int numDofs (
unsigned int codim )
575 const unsigned int orderDofs = OrderReductionType::numDofs( codim );
577 return orderDofs + DimensionReductionType::numDofs( codim - 1 );
583 return DimensionReductionType::numDofs( codim )
584 + OrderReductionType::numDofs( codim );
588 template<
class LocalCoordinateType >
595 template<
class LocalCoordinateType >
599 assert( index <= numLagrangePoints );
601 if( index < DimensionReductionType::numLagrangePoints )
604 DimensionReductionType :: dofCoordinate( index,
coordinate.base() );
608 const int orderIndex = index - DimensionReductionType::numLagrangePoints;
609 OrderReductionType::dofCoordinate( orderIndex,
coordinate );
617 template<
class BaseGeometry,
unsigned int order,
bool bottom >
618 template<
unsigned int codim >
619 struct GenericLagrangePoint< PyramidGeometry< BaseGeometry >, order, bottom >::Codim
621 static unsigned int maxDofs ()
623 const unsigned int maxOrderDofs
624 = OrderReductionType::template Codim< codim >::maxDofs();
626 const unsigned int maxDimDofs
627 = DimensionReductionType::template Codim< (bottom ? codim - 1 : codim) >::maxDofs();
630 return std::max( maxDimDofs, maxOrderDofs );
632 return maxDimDofs + maxOrderDofs;
638 template<
class FirstGeometry,
class SecondGeometry,
unsigned int order,
bool bottom >
643 static const unsigned int dimension = GeometryType::dimension;
647 static const unsigned int polynomialOrder = order;
649 template<
class,
unsigned int,
bool >
652 template<
class,
class,
unsigned int >
662 static const unsigned int numLagrangePoints
663 = FirstReductionType::numLagrangePoints * SecondReductionType::numLagrangePoints;
669 template<
unsigned int codim,
unsigned int i >
670 struct CodimIterator;
673 template<
unsigned int codim >
679 dofCoordinate( index, dofCoordinate_ );
683 : dofCoordinate_( point.dofCoordinate_ )
686 template<
class LocalCoordinateType >
689 unsigned int &subEntity )
691 unsigned int firstCodim, secondCodim;
692 unsigned int firstSubEntity, secondSubEntity;
694 FirstReductionType::dofSubEntity(
coordinate.first(), firstCodim, firstSubEntity );
695 SecondReductionType::dofSubEntity(
coordinate.second(), secondCodim, secondSubEntity );
697 codim = firstCodim + secondCodim;
700 for(
unsigned int i = 0; i < secondCodim; ++i )
701 subEntity += FirstGeometry::numSubEntities( codim-i ) * SecondGeometry::numSubEntities( i );
702 subEntity += firstSubEntity + secondSubEntity * FirstGeometry::numSubEntities( firstCodim );
705 template<
class LocalCoordinateType >
708 unsigned int &subEntity,
709 unsigned int &dofNumber )
711 unsigned int firstCodim, secondCodim;
712 unsigned int firstSubEntity, secondSubEntity;
713 unsigned int firstDofNumber, secondDofNumber;
715 FirstReductionType::dofSubEntity(
coordinate.first(), firstCodim, firstSubEntity, firstDofNumber );
716 SecondReductionType::dofSubEntity(
coordinate.second(), secondCodim, secondSubEntity, secondDofNumber );
718 codim = firstCodim + secondCodim;
721 for(
unsigned int i = 0; i < secondCodim; ++i )
722 subEntity += FirstGeometry::numSubEntities( codim-i ) * SecondGeometry::numSubEntities( i );
723 subEntity += firstSubEntity + secondSubEntity * FirstGeometry::numSubEntities( firstCodim );
725 dofNumber = firstDofNumber + secondDofNumber * FirstReductionType::numDofs( firstCodim, firstSubEntity );
730 dofSubEntity( dofCoordinate_, codim, subEntity );
734 unsigned int &subEntity,
735 unsigned int &dofNumber )
737 dofSubEntity( dofCoordinate_, codim, subEntity, dofNumber );
741 unsigned int subEntity,
742 unsigned int dofNumber )
744 unsigned int firstCodim = codim;
745 unsigned int secondCodim = 0;
746 for( ; secondCodim < codim; --firstCodim, ++secondCodim )
748 const unsigned int num
749 = FirstGeometry::numSubEntities( firstCodim ) * SecondGeometry::numSubEntities( secondCodim );
751 if( subEntity < num )
756 const unsigned int n = FirstGeometry::numSubEntities( firstCodim );
757 const unsigned int firstSubEntity = subEntity % n;
758 const unsigned int secondSubEntity = subEntity / n;
760 const unsigned int m = FirstReductionType::numDofs( firstCodim, firstSubEntity );
761 const unsigned int firstDofNumber = dofNumber % m;
762 const unsigned int secondDofNumber = dofNumber / m;
764 const unsigned int firstEntityDofNumber
765 = FirstReductionType::entityDofNumber( firstCodim, firstSubEntity, firstDofNumber );
766 const unsigned int secondEntityDofNumber
767 = SecondReductionType::entityDofNumber( secondCodim, secondSubEntity, secondDofNumber );
769 return firstEntityDofNumber + secondEntityDofNumber * FirstReductionType::numLagrangePoints;
772 template<
class LocalCoordinateType >
775 const unsigned int firstHeight = FirstReductionType::height(
coordinate.first() );
776 const unsigned int secondHeight = SecondReductionType::height(
coordinate.second() );
778 return ((firstHeight < secondHeight) ? firstHeight : secondHeight);
783 return height( dofCoordinate_ );
786 template<
class FieldType >
787 void local ( FieldVector< FieldType, dimension > &
coordinate )
const
789 const FieldType factor = FieldType( 1 ) / FieldType( polynomialOrder );
790 for(
unsigned int i = 0; i < dimension; ++i )
791 coordinate[ i ] = factor * dofCoordinate_[ i ];
800 static unsigned int maxDofs (
unsigned int codim )
802 unsigned int max = 0;
803 for(
unsigned int i = 0; i <= codim; ++i ) {
805 = FirstReductionType :: maxDofs( codim - i )
806 * SecondReductionType :: maxDofs( i );
819 static unsigned int numDofs (
unsigned int codim,
unsigned int subEntity )
821 unsigned int firstCodim = codim;
822 unsigned int secondCodim = 0;
823 for( ; secondCodim <= codim; --firstCodim, ++secondCodim )
825 const unsigned int numSubEntities
826 = FirstGeometry::numSubEntities( firstCodim ) * SecondGeometry :: numSubEntities( secondCodim );
828 if( subEntity < numSubEntities )
830 subEntity -= numSubEntities;
833 const unsigned int n = FirstGeometry::numSubEntities( firstCodim );
834 const unsigned int firstSubEntity = subEntity % n;
835 const unsigned int secondSubEntity = subEntity / n;
837 return FirstReductionType :: numDofs( firstCodim, firstSubEntity )
838 * SecondReductionType :: numDofs( secondCodim, secondSubEntity );
847 static unsigned int numDofs (
unsigned int codim )
849 unsigned int count = 0;
851 unsigned int firstCodim = codim;
852 unsigned int secondCodim = 0;
853 for( ; secondCodim <= codim; --firstCodim, ++secondCodim )
854 count += FirstReductionType :: numDofs( firstCodim )
855 * SecondReductionType :: numDofs( secondCodim );
861 template<
class LocalCoordinateType >
865 assert( index <= numLagrangePoints );
867 const unsigned int firstIndex
868 = index % FirstReductionType :: numLagrangePoints;
869 const unsigned int secondIndex
870 = index / FirstReductionType :: numLagrangePoints;
872 FirstReductionType :: dofCoordinate( firstIndex,
coordinate.first() );
873 SecondReductionType :: dofCoordinate( secondIndex,
coordinate.second() );
879 template<
class FirstGeometry,
class SecondGeometry,
unsigned int order,
bool bottom >
880 template<
unsigned int codim >
881 struct GenericLagrangePoint< ProductGeometry< FirstGeometry, SecondGeometry >, order, bottom >::Codim
883 static unsigned int maxDofs ()
885 return CodimIterator< codim, codim >::maxDofs();
892 template<
class FirstGeometry,
class SecondGeometry,
unsigned int order,
bool bottom >
893 template<
unsigned int codim,
unsigned int i >
894 struct GenericLagrangePoint< ProductGeometry< FirstGeometry, SecondGeometry >, order, bottom >::CodimIterator
896 static unsigned int maxDofs ()
898 typedef typename FirstReductionType::template Codim< codim-i > FirstCodim;
899 typedef typename SecondReductionType::template Codim< i > SecondCodim;
900 const unsigned int n = FirstCodim::maxDofs() * SecondCodim::maxDofs();
902 const unsigned int m = CodimIterator< codim, i-1 >::maxDofs();
907 template<
class FirstGeometry,
class SecondGeometry,
unsigned int order,
bool bottom >
908 template<
unsigned int codim>
909 struct GenericLagrangePoint< ProductGeometry< FirstGeometry, SecondGeometry >, order, bottom >::CodimIterator<codim, 0>
911 static unsigned int maxDofs ()
913 typedef typename FirstReductionType::template Codim< codim > FirstCodim;
914 typedef typename SecondReductionType::template Codim< 0 > SecondCodim;
915 return FirstCodim::maxDofs() * SecondCodim::maxDofs();
double max(const Dune::Fem::Double &v, const double p)
Definition: double.hh:965
Definition: bindguard.hh:11
static const Point & coordinate(const Point &x)
Definition: coordinate.hh:14
static double max(const Double &v, const double p)
Definition: double.hh:398
Definition: genericbasefunctions.hh:15
generic geometry modelling a single point
Definition: genericgeometry.hh:63
generic geometry modelling a pyramid over a base geometry
Definition: genericgeometry.hh:92
generic geometry modelling the product of two base geometries
Definition: genericgeometry.hh:137
Definition: genericlagrangepoints.hh:21
void dofSubEntity(unsigned int &codim, unsigned int &subEntity)
Definition: genericlagrangepoints.hh:84
GenericLagrangePoint(const ThisType &point)
Definition: genericlagrangepoints.hh:60
LocalCoordinate< GeometryType, unsigned int > DofCoordinateType
Definition: genericlagrangepoints.hh:31
static void dofSubEntity(LocalCoordinateType &coordinate, unsigned int &codim, unsigned int &subEntity)
Definition: genericlagrangepoints.hh:65
DofCoordinateType dofCoordinate_
Definition: genericlagrangepoints.hh:48
GenericLagrangePoint(unsigned int index)
Definition: genericlagrangepoints.hh:55
unsigned int height()
Definition: genericlagrangepoints.hh:111
PointGeometry GeometryType
Definition: genericlagrangepoints.hh:28
static unsigned int height(LocalCoordinateType &coordinate)
Definition: genericlagrangepoints.hh:106
static unsigned int numDofs(unsigned int codim)
obtain the total number of DoFs in a codimension
Definition: genericlagrangepoints.hh:153
static unsigned int entityDofNumber(unsigned int codim, unsigned int subEntity, unsigned int dof)
Definition: genericlagrangepoints.hh:97
static void dofCoordinate(unsigned int index, LocalCoordinateType &coordinate)
Definition: genericlagrangepoints.hh:160
static void dofSubEntity(LocalCoordinateType &coordinate, unsigned int &codim, unsigned int &subEntity, unsigned int &dofNumber)
Definition: genericlagrangepoints.hh:74
void dofSubEntity(unsigned int &codim, unsigned int &subEntity, unsigned int &dofNumber)
Definition: genericlagrangepoints.hh:90
static unsigned int maxDofs(unsigned int codim)
obtain the maximal number of DoFs in one entity of a codimension
Definition: genericlagrangepoints.hh:130
static unsigned int numDofs(unsigned int codim, unsigned int subEntity)
obtain the number of DoFs on one entity
Definition: genericlagrangepoints.hh:142
static unsigned int numDofs(unsigned int codim)
obtain the total number of DoFs in a codimension
Definition: genericlagrangepoints.hh:318
void dofSubEntity(unsigned int &codim, unsigned int &subEntity)
Definition: genericlagrangepoints.hh:244
static unsigned int entityDofNumber(unsigned int codim, unsigned int subEntity, unsigned int dof)
Definition: genericlagrangepoints.hh:257
static void dofSubEntity(LocalCoordinateType &coordinate, unsigned int &codim, unsigned int &subEntity)
Definition: genericlagrangepoints.hh:225
PyramidGeometry< BaseGeometryType > GeometryType
Definition: genericlagrangepoints.hh:187
BaseGeometry BaseGeometryType
Definition: genericlagrangepoints.hh:186
static void dofCoordinate(unsigned int index, LocalCoordinateType &coordinate)
Definition: genericlagrangepoints.hh:328
GenericLagrangePoint(unsigned int index)
Definition: genericlagrangepoints.hh:215
unsigned int height()
Definition: genericlagrangepoints.hh:270
void dofSubEntity(unsigned int &codim, unsigned int &subEntity, unsigned int &dofNumber)
Definition: genericlagrangepoints.hh:250
DofCoordinateType dofCoordinate_
Definition: genericlagrangepoints.hh:208
static unsigned int maxDofs(unsigned int codim)
obtain the maximal number of DoFs in one entity of a codimension
Definition: genericlagrangepoints.hh:289
LocalCoordinate< GeometryType, unsigned int > DofCoordinateType
Definition: genericlagrangepoints.hh:191
GenericLagrangePoint(const ThisType &point)
Definition: genericlagrangepoints.hh:220
static unsigned int height(LocalCoordinateType &coordinate)
Definition: genericlagrangepoints.hh:265
static void dofSubEntity(LocalCoordinateType &coordinate, unsigned int &codim, unsigned int &subEntity, unsigned int &dofNumber)
Definition: genericlagrangepoints.hh:234
static unsigned int numDofs(unsigned int codim, unsigned int subEntity)
obtain the number of DoFs on one entity
Definition: genericlagrangepoints.hh:304
static bool useDimReduction(const LocalCoordinateType &coordinate)
Definition: genericlagrangepoints.hh:589
BaseGeometry BaseGeometryType
Definition: genericlagrangepoints.hh:357
static unsigned int entityDofNumber(unsigned int codim, unsigned int subEntity, unsigned int dof)
Definition: genericlagrangepoints.hh:461
static unsigned int height(LocalCoordinateType &coordinate)
Definition: genericlagrangepoints.hh:492
GenericLagrangePoint(const ThisType &point)
Definition: genericlagrangepoints.hh:396
void dofSubEntity(unsigned int &codim, unsigned int &subEntity, unsigned int &dofNumber)
Definition: genericlagrangepoints.hh:454
static unsigned int numDofs(unsigned int codim)
obtain the total number of DoFs in a codimension
Definition: genericlagrangepoints.hh:571
DofCoordinateType dofCoordinate_
Definition: genericlagrangepoints.hh:384
PyramidGeometry< BaseGeometryType > GeometryType
Definition: genericlagrangepoints.hh:358
static void dofCoordinate(unsigned int index, LocalCoordinateType &coordinate)
Definition: genericlagrangepoints.hh:596
static void dofSubEntity(LocalCoordinateType &coordinate, unsigned int &codim, unsigned int &subEntity)
Definition: genericlagrangepoints.hh:401
void dofSubEntity(unsigned int &codim, unsigned int &subEntity)
Definition: genericlagrangepoints.hh:448
static void dofSubEntity(LocalCoordinateType &coordinate, unsigned int &codim, unsigned int &subEntity, unsigned int &dofNumber)
Definition: genericlagrangepoints.hh:423
static unsigned int numDofs(unsigned int codim, unsigned int subEntity)
obtain the number of DoFs on one entity
Definition: genericlagrangepoints.hh:544
static unsigned int maxDofs(unsigned int codim)
obtain the maximal number of DoFs in one entity of a codimension
Definition: genericlagrangepoints.hh:522
unsigned int height()
Definition: genericlagrangepoints.hh:503
GenericLagrangePoint(unsigned int index)
Definition: genericlagrangepoints.hh:391
LocalCoordinate< GeometryType, unsigned int > DofCoordinateType
Definition: genericlagrangepoints.hh:361
static void dofSubEntity(LocalCoordinateType &coordinate, unsigned int &codim, unsigned int &subEntity)
Definition: genericlagrangepoints.hh:687
ProductGeometry< FirstGeometry, SecondGeometry > GeometryType
Definition: genericlagrangepoints.hh:642
static unsigned int entityDofNumber(unsigned int codim, unsigned int subEntity, unsigned int dofNumber)
Definition: genericlagrangepoints.hh:740
DofCoordinateType dofCoordinate_
Definition: genericlagrangepoints.hh:666
static unsigned int height(LocalCoordinateType &coordinate)
Definition: genericlagrangepoints.hh:773
static void dofSubEntity(LocalCoordinateType &coordinate, unsigned int &codim, unsigned int &subEntity, unsigned int &dofNumber)
Definition: genericlagrangepoints.hh:706
void dofSubEntity(unsigned int &codim, unsigned int &subEntity)
Definition: genericlagrangepoints.hh:728
static void dofCoordinate(unsigned int index, LocalCoordinateType &coordinate)
Definition: genericlagrangepoints.hh:862
GenericLagrangePoint(unsigned int index)
Definition: genericlagrangepoints.hh:677
static unsigned int maxDofs(unsigned int codim)
obtain the maximal number of DoFs in one entity of a codimension
Definition: genericlagrangepoints.hh:800
LocalCoordinate< GeometryType, unsigned int > DofCoordinateType
Definition: genericlagrangepoints.hh:645
GenericLagrangePoint(const ThisType &point)
Definition: genericlagrangepoints.hh:682
static unsigned int numDofs(unsigned int codim, unsigned int subEntity)
obtain the number of DoFs on one entity
Definition: genericlagrangepoints.hh:819
static unsigned int numDofs(unsigned int codim)
obtain the total number of DoFs in a codimension
Definition: genericlagrangepoints.hh:847
void dofSubEntity(unsigned int &codim, unsigned int &subEntity, unsigned int &dofNumber)
Definition: genericlagrangepoints.hh:733
unsigned int height()
Definition: genericlagrangepoints.hh:781