|
dune-fem 2.12-git
|
Loading...
Searching...
No Matches
space/basisfunctionset/tuple.hh
Go to the documentation of this file.
57 static constexpr int size () { return std::tuple_element< j, std::tuple< std::integral_constant< int, i > ... > >::type::value; }
60 static constexpr std::integer_sequence< int, size< j >() ... > sizes ( std::integer_sequence< int, j ... > )
90 typedef typename std::tuple_element< 0, BasisFunctionSetTupleType >::type::FunctionSpaceType ContainedFunctionSpaceType;
105 typedef std::tuple< std::vector< typename BasisFunctionSets::RangeType > ... > RangeStorageTupleType;
106 typedef std::tuple< std::vector< typename BasisFunctionSets::JacobianRangeType > ... > JacobianStorageTupleType;
107 typedef std::tuple< std::vector< typename BasisFunctionSets::HessianRangeType > ... > HessianStorageTupleType;
142 static constexpr const int dimRange = Std::sum( static_cast< int >( BasisFunctionSets::FunctionSpaceType::dimRange ) ... );
218 typedef typename std::tuple_element< 0, BasisFunctionSetTupleType >::type::EntityType EntityType;
225 static_assert( Std::are_all_same< typename BasisFunctionSets::ReferenceElementType ... >::value,
228 typedef typename std::tuple_element< 0, BasisFunctionSetTupleType >::type::ReferenceElementType ReferenceElementType;
300 Fem::ForLoop< EvaluateAll, 0, setIterationSize >::apply( x, dofs, value, offset_, basisFunctionSetTuple_ );
308 Fem::ForLoop< EvaluateAllRanges, 0, setIterationSize >::apply( x, values, storage_, offset_, basisFunctionSetTuple_ );
313 void evaluateAll ( const QuadratureType &quad, const DofVector &dofs, RangeArray &ranges ) const
324 Fem::ForLoop< JacobianAll, 0, setIterationSize >::apply( x, dofs, jacobian, offset_, basisFunctionSetTuple_ );
332 Fem::ForLoop< JacobianAllRanges, 0, setIterationSize >::apply( x, jacobians, storage_, offset_, basisFunctionSetTuple_ );
337 void jacobianAll ( const QuadratureType &quad, const DofVector &dofs, JacobianArray &jacobians ) const
348 Fem::ForLoop< HessianAll, 0, setIterationSize >::apply( x, dofs, hessian, offset_, basisFunctionSetTuple_ );
353 void hessianAll ( const QuadratureType &quad, const DofVector &dofs, HessianArray &hessians ) const
365 Fem::ForLoop< HessianAllRanges, 0, setIterationSize >::apply( x, hessians, storage_, offset_, basisFunctionSetTuple_ );
395 Fem::ForLoop< Axpy, 0, setIterationSize >::apply( x, valueFactor, dofs, offset_, basisFunctionSetTuple_ );
402 Fem::ForLoop< Axpy, 0, setIterationSize >::apply( x, jacobianFactor, dofs, offset_, basisFunctionSetTuple_ );
409 Fem::ForLoop< Axpy, 0, setIterationSize >::apply( x, hessianFactor, dofs, offset_, basisFunctionSetTuple_ );
414 void axpy ( const Point &x, const RangeType &valueFactor, const JacobianRangeType &jacobianFactor, DofVector &dofs ) const
416 Fem::ForLoop< Axpy, 0, setIterationSize >::apply( x, valueFactor, jacobianFactor, dofs, offset_, basisFunctionSetTuple_ );
492 static void apply ( const Point &x, const DofVector &dofVector, RangeType &values, const OffsetType &offset, const Tuple &tuple )
496 SubVector< const DofVector, OffsetSubMapper > subDofVector( dofVector, OffsetSubMapper( size, offset[ i ] ) );
518 static void apply ( const Point &x, const DofVector &dofVector, JacobianRangeType &values, const OffsetType &offset, const Tuple &tuple )
522 SubVector< const DofVector, OffsetSubMapper > subDofVector( dofVector, OffsetSubMapper( size, offset[ i ] ) );
523 typename std::tuple_element< i, BasisFunctionSetTupleType >::type::JacobianRangeType thisJacobian;
544 static void apply ( const Point &x, const DofVector &dofVector, HessianRangeType &values, const OffsetType &offset, const Tuple &tuple )
548 SubVector< const DofVector, OffsetSubMapper > subDofVector( dofVector, OffsetSubMapper( size, offset[ i ] ) );
549 typename std::tuple_element< i, BasisFunctionSetTupleType >::type::HessianRangeType thisHessian;
566 typedef typename std::tuple_element< i, typename Storage::RangeStorageTupleType >::type ThisStorage;
567 static const int thisDimRange = std::tuple_element< i, BasisFunctionSetTupleType >::type::FunctionSpaceType::dimRange;
573 static void apply ( const Point &x, RangeArray &values, const Storage &s, const OffsetType &offset, const Tuple &tuple )
599 typedef typename std::tuple_element< i, typename Storage::JacobianStorageTupleType >::type ThisStorage;
600 static const int thisDimRange = std::tuple_element< i, BasisFunctionSetTupleType >::type::FunctionSpaceType::dimRange;
606 static void apply ( const Point &x, RangeArray &values, const Storage &s, const OffsetType &offset, const Tuple &tuple )
632 typedef typename std::tuple_element< i, typename Storage::HessianStorageTupleType >::type ThisStorage;
633 static const int thisDimRange = std::tuple_element< i, BasisFunctionSetTupleType >::type::FunctionSpaceType::dimRange;
639 static void apply ( const Point &x, RangeArray &values, const Storage &s, const OffsetType &offset, const Tuple &tuple )
665 typedef typename std::tuple_element< i, BasisFunctionSetTupleType >::type::RangeType ThisRangeType;
666 typedef typename std::tuple_element< i, BasisFunctionSetTupleType >::type::JacobianRangeType ThisJacobianRangeType;
667 typedef typename std::tuple_element< i, BasisFunctionSetTupleType >::type::HessianRangeType ThisHessianRangeType;
673 typedef SubObject< const JacobianRangeType, const ThisJacobianRangeType, rangeOffset > SubJacobianRangeType;
674 typedef SubObject< const HessianRangeType, const ThisHessianRangeType, rangeOffset > SubHessianRangeType;
678 static void apply ( const Point &x, const RangeType &factor, DofVector &dofVector, const OffsetType &offset, const Tuple &tuple )
681 SubVector< DofVector, OffsetSubMapper > subDofVector( dofVector, OffsetSubMapper( size, offset[ i ] ) );
688 static void apply ( const Point &x, const JacobianRangeType &factor, DofVector &dofVector, const OffsetType &offset, const Tuple &tuple )
691 SubVector< DofVector, OffsetSubMapper > subDofVector( dofVector, OffsetSubMapper( size, offset[ i ] ) );
698 static void apply ( const Point &x, const HessianRangeType &factor, DofVector &dofVector, const OffsetType &offset, const Tuple &tuple )
701 SubVector< DofVector, OffsetSubMapper > subDofVector( dofVector, OffsetSubMapper( size, offset[ i ] ) );
708 static void apply ( const Point &x, const RangeType &rangeFactor, const JacobianRangeType &jacobianFactor, DofVector &dofVector, const OffsetType &offset, const Tuple &tuple )
711 SubVector< DofVector, OffsetSubMapper > subDofVector( dofVector, OffsetSubMapper( size, offset[ i ] ) );
714 std::get< i >( tuple ).axpy( x, (ThisRangeType) subRangeFactor, (ThisJacobianRangeType) subJacobianFactor, subDofVector );
static Type apply(T &t)
IteratorRange< typename DF::DofIteratorType > dofs(DF &df)
Iterates over all DOFs.
Definition rangegenerators.hh:76
Definition utility.hh:147
Definition space/basisfunctionset/tuple.hh:34
Definition space/basisfunctionset/tuple.hh:35
Definition space/basisfunctionset/tuple.hh:39
static int numSubBasisFunctionSets()
return number of subBasisFunctionSets
Definition space/basisfunctionset/tuple.hh:435
void hessianAll(const Point &x, const DofVector &dofs, HessianRangeType &hessian) const
Definition space/basisfunctionset/tuple.hh:346
FunctionSpaceType::HessianRangeType HessianRangeType
type of Hessian Matrix
Definition space/basisfunctionset/tuple.hh:213
void axpy(const Point &x, const HessianRangeType &hessianFactor, DofVector &dofs) const
Definition space/basisfunctionset/tuple.hh:407
FunctionSpaceType::RangeFieldType RangeFieldType
type of Range Vector field
Definition space/basisfunctionset/tuple.hh:207
TupleBasisFunctionSet(const BasisFunctionSetTupleType &basisFunctionSetTuple)
Definition space/basisfunctionset/tuple.hh:243
TupleBasisFunctionSet(const BasisFunctionSets &... basisFunctionSets)
Definition space/basisfunctionset/tuple.hh:234
const ReferenceElementType & referenceElement() const
return entity
Definition space/basisfunctionset/tuple.hh:291
void evaluateAll(const QuadratureType &quad, const DofVector &dofs, RangeArray &ranges) const
Definition space/basisfunctionset/tuple.hh:313
const Geometry & geometry() const
Definition space/basisfunctionset/tuple.hh:285
bool valid() const
return true if entity was set
Definition space/basisfunctionset/tuple.hh:273
void evaluateAll(const Point &x, const DofVector &dofs, RangeType &value) const
Definition space/basisfunctionset/tuple.hh:298
int order(std::index_sequence< i ... >) const
Definition space/basisfunctionset/tuple.hh:443
void evaluateAll(const Point &x, RangeArray &values) const
Definition space/basisfunctionset/tuple.hh:305
void jacobianAll(const Point &x, const DofVector &dofs, JacobianRangeType &jacobian) const
Definition space/basisfunctionset/tuple.hh:322
int order() const
return order of basis function set, maximal order in the tupleset
Definition space/basisfunctionset/tuple.hh:255
TupleBasisFunctionSet()
Definition space/basisfunctionset/tuple.hh:231
const SubBasisFunctionSet< i >::type & subBasisFunctionSet() const
return i-th subbasisfunctionSet
Definition space/basisfunctionset/tuple.hh:423
FunctionSpaceType::RangeType RangeType
type of Range Vector
Definition space/basisfunctionset/tuple.hh:204
std::tuple_element< 0, BasisFunctionSetTupleType >::type::EntityType EntityType
type of Entity the basis function set is initialized on
Definition space/basisfunctionset/tuple.hh:218
void axpy(const Point &x, const JacobianRangeType &jacobianFactor, DofVector &dofs) const
Definition space/basisfunctionset/tuple.hh:400
void jacobianAll(const Point &x, JacobianRangeArray &jacobians) const
Definition space/basisfunctionset/tuple.hh:329
std::size_t offset(int i) const
return offset of the i-th subbasisfunctionSet in the whole set
Definition space/basisfunctionset/tuple.hh:429
std::tuple_element< 0, BasisFunctionSetTupleType >::type::ReferenceElementType ReferenceElementType
type of reference element for this BasisFunctionSet
Definition space/basisfunctionset/tuple.hh:228
void axpy(const QuadratureType &quad, const VectorA &valuesA, const VectorB &valuesB, DofVector &dofs) const
Definition space/basisfunctionset/tuple.hh:380
std::size_t size() const
return size of basis function set
Definition space/basisfunctionset/tuple.hh:261
std::tuple_element< 0, BasisFunctionSetTupleType >::type::Geometry Geometry
type of Geometry the basis function set is initialized on
Definition space/basisfunctionset/tuple.hh:223
static const int dimRange
size of domain space
Definition space/basisfunctionset/tuple.hh:198
void axpy(const Point &x, const RangeType &valueFactor, const JacobianRangeType &jacobianFactor, DofVector &dofs) const
Definition space/basisfunctionset/tuple.hh:414
void axpy(const QuadratureType &quad, const Vector &values, DofVector &dofs) const
Definition space/basisfunctionset/tuple.hh:370
CombinationType::FunctionSpaceType FunctionSpaceType
type of analytical combined function space
Definition space/basisfunctionset/tuple.hh:195
void hessianAll(const QuadratureType &quad, const DofVector &dofs, HessianArray &hessians) const
evaluate the hessian of all basis functions and store the result in the hessians array
Definition space/basisfunctionset/tuple.hh:353
void hessianAll(const Point &x, HessianRangeArray &hessians) const
Definition space/basisfunctionset/tuple.hh:362
std::size_t size(std::index_sequence< i ... >) const
Definition space/basisfunctionset/tuple.hh:450
FunctionSpaceType::DomainType DomainType
type of Domain Vector
Definition space/basisfunctionset/tuple.hh:201
Indices< BasisFunctionSets::FunctionSpaceType::dimRange ... > RangeIndices
helper class to compute static rangeoffsets
Definition space/basisfunctionset/tuple.hh:132
FunctionSpaceType::JacobianRangeType JacobianRangeType
type of Jacobian Vector/Matrix
Definition space/basisfunctionset/tuple.hh:210
Dune::GeometryType type() const
Definition space/basisfunctionset/tuple.hh:267
void axpy(const Point &x, const RangeType &valueFactor, DofVector &dofs) const
Definition space/basisfunctionset/tuple.hh:393
void jacobianAll(const QuadratureType &quad, const DofVector &dofs, JacobianArray &jacobians) const
evaluate the jacobian of all basis functions and store the result in the jacobians array
Definition space/basisfunctionset/tuple.hh:337
CombinationTraits< 0, CombineOp > CombinationType
Definition space/basisfunctionset/tuple.hh:184
const EntityType & entity() const
return entity
Definition space/basisfunctionset/tuple.hh:279
Definition space/basisfunctionset/tuple.hh:136
static constexpr int rangeOffset()
Definition space/basisfunctionset/tuple.hh:157
FunctionSpace< typename ContainedFunctionSpaceType::DomainFieldType, typename ContainedFunctionSpaceType::RangeFieldType, dimDomain, dimRange > FunctionSpaceType
type of analytical combined product function space
Definition space/basisfunctionset/tuple.hh:147
static void apply(const int rangeOffset, const ThisRange &thisRange, Range &values)
Definition space/basisfunctionset/tuple.hh:150
static constexpr int rangeOffset()
Definition space/basisfunctionset/tuple.hh:177
static void apply(const int rangeOffset, const ThisRange &thisRange, Range &values)
Definition space/basisfunctionset/tuple.hh:170
Dune::Fem::TupleBasisFunctionSet::CombinationTraits< dummy, TupleSpaceSummation >::FunctionSpaceType
ContainedFunctionSpaceType FunctionSpaceType
type of analytical is same as contained space since its a sum
Definition space/basisfunctionset/tuple.hh:167
Definition space/basisfunctionset/tuple.hh:190
std::tuple_element< i, BasisFunctionSetTupleType >::type type
Definition space/basisfunctionset/tuple.hh:191
interface class representing a family of basis function sets
Definition discontinuousgalerkin/basisfunctionsets.hh:24
T copy(T... args)
T forward(T... args)
Legal Statements / Impressum | Hosted by TU Dresden & Uni Heidelberg | Generated by
1.9.8