Skip to content
Snippets Groups Projects
Commit 7535e1b2 authored by Adrian Burri's avatar Adrian Burri
Browse files

Simplified typedef structure

[[Imported from SVN: r2717]]
parent 7295db67
No related branches found
No related tags found
No related merge requests found
...@@ -43,9 +43,9 @@ namespace Dune { ...@@ -43,9 +43,9 @@ namespace Dune {
} }
//- CombinedBaseFunctionSet //- CombinedBaseFunctionSet
template <class BaseFunctionSetImp, int N, DofStoragePolicy policy> template <class DiscreteFunctionSpaceImp, int N, DofStoragePolicy policy>
template <int diffOrd> template <int diffOrd>
void CombinedBaseFunctionSet<BaseFunctionSetImp, N, policy>:: void CombinedBaseFunctionSet<DiscreteFunctionSpaceImp, N, policy>::
evaluate(int baseFunct, evaluate(int baseFunct,
const FieldVector<deriType, diffOrd> &diffVariable, const FieldVector<deriType, diffOrd> &diffVariable,
const DomainType & x, RangeType & phi) const const DomainType & x, RangeType & phi) const
...@@ -55,9 +55,9 @@ namespace Dune { ...@@ -55,9 +55,9 @@ namespace Dune {
expand(baseFunct, containedResult_, phi); expand(baseFunct, containedResult_, phi);
} }
template <class BaseFunctionSetImp, int N, DofStoragePolicy policy> template <class DiscreteFunctionSpaceImp, int N, DofStoragePolicy policy>
template <int diffOrd, class QuadratureType> template <int diffOrd, class QuadratureType>
void CombinedBaseFunctionSet<BaseFunctionSetImp, N, policy>:: void CombinedBaseFunctionSet<DiscreteFunctionSpaceImp, N, policy>::
evaluate(int baseFunct, evaluate(int baseFunct,
const FieldVector<deriType, diffOrd> &diffVariable, const FieldVector<deriType, diffOrd> &diffVariable,
QuadratureType & quad, QuadratureType & quad,
...@@ -68,24 +68,24 @@ namespace Dune { ...@@ -68,24 +68,24 @@ namespace Dune {
expand(baseFunct, containedResult_, phi); expand(baseFunct, containedResult_, phi);
} }
template <class BaseFunctionSetImp, int N, DofStoragePolicy policy> template <class DiscreteFunctionSpaceImp, int N, DofStoragePolicy policy>
inline int CombinedBaseFunctionSet<BaseFunctionSetImp, N, policy>:: inline int CombinedBaseFunctionSet<DiscreteFunctionSpaceImp, N, policy>::
containedDof(int combinedBaseNumber) const containedDof(int combinedBaseNumber) const
{ {
//return global%N; //return global%N;
return combinedBaseNumber/N; return combinedBaseNumber/N;
} }
template <class BaseFunctionSetImp, int N, DofStoragePolicy policy> template <class DiscreteFunctionSpaceImp, int N, DofStoragePolicy policy>
inline int CombinedBaseFunctionSet<BaseFunctionSetImp, N, policy>:: inline int CombinedBaseFunctionSet<DiscreteFunctionSpaceImp, N, policy>::
component(int combinedBaseNumber) const component(int combinedBaseNumber) const
{ {
//return global%N; //return global%N;
return combinedBaseNumber%N; return combinedBaseNumber%N;
} }
template <class BaseFunctionSetImp, int N, DofStoragePolicy policy> template <class DiscreteFunctionSpaceImp, int N, DofStoragePolicy policy>
void CombinedBaseFunctionSet<BaseFunctionSetImp, N, policy>:: void CombinedBaseFunctionSet<DiscreteFunctionSpaceImp, N, policy>::
expand(int baseFunct, const ContainedRangeType& arg, RangeType& dest) const expand(int baseFunct, const ContainedRangeType& arg, RangeType& dest) const
{ {
dest = 0.0; dest = 0.0;
...@@ -93,8 +93,8 @@ namespace Dune { ...@@ -93,8 +93,8 @@ namespace Dune {
dest[component(baseFunct)] = arg[0]; dest[component(baseFunct)] = arg[0];
} }
template <class BaseFunctionSetImp, int N, DofStoragePolicy policy> template <class DiscreteFunctionSpaceImp, int N, DofStoragePolicy policy>
void CombinedBaseFunctionSet<BaseFunctionSetImp, N, policy>:: void CombinedBaseFunctionSet<DiscreteFunctionSpaceImp, N, policy>::
evaluateContained(int baseFunct, evaluateContained(int baseFunct,
const DomainType& x, const DomainType& x,
ContainedRangeType& phi) const ContainedRangeType& phi) const
...@@ -104,8 +104,8 @@ namespace Dune { ...@@ -104,8 +104,8 @@ namespace Dune {
baseFunctionSet_.eval(baseFunct, x, phi); baseFunctionSet_.eval(baseFunct, x, phi);
} }
template <class BaseFunctionSetImp, int N, DofStoragePolicy policy> template <class DiscreteFunctionSpaceImp, int N, DofStoragePolicy policy>
void CombinedBaseFunctionSet<BaseFunctionSetImp, N, policy>:: void CombinedBaseFunctionSet<DiscreteFunctionSpaceImp, N, policy>::
jacobianContained(int baseFunct, jacobianContained(int baseFunct,
const DomainType& x, const DomainType& x,
ContainedJacobianRangeType& phi) const ContainedJacobianRangeType& phi) const
......
...@@ -58,13 +58,14 @@ namespace Dune { ...@@ -58,13 +58,14 @@ namespace Dune {
struct CombinedSpaceTraits { struct CombinedSpaceTraits {
private: private:
typedef DiscreteFunctionSpaceImp ContainedDiscreteFunctionSpaceType; typedef DiscreteFunctionSpaceImp ContainedDiscreteFunctionSpaceType;
// typedef ContainedDiscreteFunctionSpaceType::MapperType ContainedMapperType;
typedef typename ContainedDiscreteFunctionSpaceType::Traits typedef typename ContainedDiscreteFunctionSpaceType::Traits
ContainedTraits; ContainedSpaceTraits;
typedef typename ContainedTraits::FunctionSpaceType typedef typename ContainedSpaceTraits::FunctionSpaceType
ContainedFunctionSpaceType; ContainedFunctionSpaceType;
typedef typename ContainedTraits::BaseFunctionSetType typedef typename ContainedSpaceTraits::BaseFunctionSetType
ContainedBaseFunctionSetType; ContainedBaseFunctionSetType;
typedef typename ContainedSpaceTraits::MapperType ContainedMapperType;
enum { ContainedDimRange = ContainedFunctionSpaceType::DimRange, enum { ContainedDimRange = ContainedFunctionSpaceType::DimRange,
ContainedDimDomain = ContainedFunctionSpaceType::DimDomain }; ContainedDimDomain = ContainedFunctionSpaceType::DimDomain };
...@@ -80,21 +81,27 @@ namespace Dune { ...@@ -80,21 +81,27 @@ namespace Dune {
typedef CombinedSpace< typedef CombinedSpace<
DiscreteFunctionSpaceImp, N, policy> DiscreteFunctionSpaceType; DiscreteFunctionSpaceImp, N, policy> DiscreteFunctionSpaceType;
typedef FunctionSpace<DomainFieldType, RangeFieldType, ContainedDimDomain, typedef FunctionSpace<
ContainedDimRange*N> FunctionSpaceType; DomainFieldType, RangeFieldType,
ContainedDimDomain, ContainedDimRange*N> FunctionSpaceType;
typedef CombinedBaseFunctionSet< typedef CombinedBaseFunctionSet<
ContainedBaseFunctionSetType, N, policy> BaseFunctionSetType; DiscreteFunctionSpaceImp, N, policy> BaseFunctionSetType;
typedef CombinedMapper<DiscreteFunctionSpaceImp, N, policy> MapperType; typedef CombinedMapper<DiscreteFunctionSpaceImp, N, policy> MapperType;
typedef typename FunctionSpaceType::RangeType RangeType; typedef typename FunctionSpaceType::RangeType RangeType;
typedef typename FunctionSpaceType::DomainType DomainType; typedef typename FunctionSpaceType::DomainType DomainType;
typedef typename FunctionSpaceType::RangeFieldType RangeFieldType; typedef typename FunctionSpaceType::JacobianRangeType JacobianRangeType;
typedef typename FunctionSpaceType::DomainFieldType DomainFieldType;
typedef typename ContainedTraits::GridType GridType; typedef typename ContainedSpaceTraits::GridType GridType;
typedef typename ContainedTraits::IteratorType IteratorType; typedef typename ContainedSpaceTraits::IteratorType IteratorType;
enum { DimRange = FunctionSpaceType::DimRange,
DimDomain = FunctionSpaceType::DimDomain };
public:
//- Friends
friend class DiscreteFunctionSpaceType; friend class DiscreteFunctionSpaceType;
friend class BaseFunctionSetType;
friend class MapperType;
}; };
//! Class to combine N scalar spaces //! Class to combine N scalar spaces
...@@ -197,54 +204,25 @@ namespace Dune { ...@@ -197,54 +204,25 @@ namespace Dune {
static const int spaceId_; static const int spaceId_;
}; // end class CombinedSpace }; // end class CombinedSpace
//! Traits class for CombinedBaseFunctionSet
template <class BaseFunctionSetImp, int N, DofStoragePolicy policy>
struct CombinedBaseFunctionSetTraits {
private:
typedef typename BaseFunctionSetImp::DiscreteFunctionSpaceType
ContainedFunctionSpaceType;
public:
typedef CombinedBaseFunctionSet<BaseFunctionSetImp, N, policy>
BaseFunctionSetType;
typedef CombinedSpace<ContainedFunctionSpaceType, N, policy>
DiscreteFunctionSpaceType;
typedef typename DiscreteFunctionSpaceType::RangeType RangeType;
typedef typename DiscreteFunctionSpaceType::DomainType DomainType;
typedef typename DiscreteFunctionSpaceType::JacobianRangeType
JacobianRangeType;
typedef typename DiscreteFunctionSpaceType::HessianRangeType
HessianRangeType;
typedef typename DiscreteFunctionSpaceType::ContainedRangeType
ContainedRangeType;
typedef typename DiscreteFunctionSpaceType::ContainedJacobianRangeType
ContainedJacobianRangeType;
enum { DimDomain = DiscreteFunctionSpaceType::DimDomain };
enum { DimRange = DiscreteFunctionSpaceType::DimRange };
};
//! Wrapper class for base function sets. This class is used within //! Wrapper class for base function sets. This class is used within
//! CombinedSpace //! CombinedSpace
template <class BaseFunctionSetImp, int N, DofStoragePolicy policy> template <class DiscreteFunctionSpaceImp, int N, DofStoragePolicy policy>
class CombinedBaseFunctionSet : class CombinedBaseFunctionSet :
public BaseFunctionSetDefault< public BaseFunctionSetDefault<
CombinedBaseFunctionSetTraits<BaseFunctionSetImp, N, policy> CombinedSpaceTraits<DiscreteFunctionSpaceImp, N, policy>
> >
{ {
private:
//- Private typedefs
typedef BaseFunctionSetImp ContainedBaseFunctionSetType;
typedef ContainedBaseFunctionSetType::RangeType ContainedRangeType;
public: public:
//- Typedefs and enums //- Typedefs and enums
enum { numComponents = N }; enum { numComponents = N };
typedef CombinedBaseFunctionSet<BaseFunctionSetImp, N, policy> ThisType; typedef CombinedBaseFunctionSet<
DiscreteFunctionSpaceImp, N, policy> ThisType;
typedef CombinedSpaceTraits<
DiscreteFunctionSpaceImp, N, policy> Traits;
typedef CombinedBaseFunctionSetTraits<BaseFunctionSetImp, N, policy> Traits; typedef typename Traits::DiscreteFunctionSpaceType
typedef typename Traits::DiscreteFunctionSpaceType DiscreteFunctionSpaceType; DiscreteFunctionSpaceType;
typedef typename Traits::ContainedBaseFunctionSetType ContainedBaseFunctionSetType;
typedef typename Traits::RangeType RangeType; typedef typename Traits::RangeType RangeType;
typedef typename Traits::DomainType DomainType; typedef typename Traits::DomainType DomainType;
typedef typename Traits::ContainedRangeType ContainedRangeType; typedef typename Traits::ContainedRangeType ContainedRangeType;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment