Skip to content
Snippets Groups Projects
Commit 2dae124a authored by Nicolas Marsic's avatar Nicolas Marsic
Browse files

Orientation in FunctionSpace.h

parent f230dcc6
No related branches found
No related tags found
No related merge requests found
#ifndef _BASIS_H_ #ifndef _BASIS_H_
#define _BASIS_H_ #define _BASIS_H_
#include "MElement.h"
/** /**
@interface Basis @interface Basis
@brief Common Interface of all Basis @brief Common Interface of all Basis
...@@ -87,6 +89,16 @@ class Basis{ ...@@ -87,6 +89,16 @@ class Basis{
//! in this Basis //! in this Basis
unsigned int getNFunction(void) const; unsigned int getNFunction(void) const;
//! @return Returns the number of
//! @em orientation of this Basis
//! Reference Space
virtual unsigned int getNOrientation(void) const = 0;
//! @param element A MElement
//! @return Returns a number charaterizing
//! the @em orientation of the given element
virtual unsigned int getOrientation(const MElement& element) const = 0;
protected: protected:
//! @internal //! @internal
//! Instantiate a new Basis //! Instantiate a new Basis
......
...@@ -157,18 +157,38 @@ preEvaluateGradFunctions(const fullMatrix<double>& point) const{ ...@@ -157,18 +157,38 @@ preEvaluateGradFunctions(const fullMatrix<double>& point) const{
const fullMatrix<double>& BasisHierarchicalScalar:: const fullMatrix<double>& BasisHierarchicalScalar::
getPreEvaluatedFunctions(const MElement& element) const{ getPreEvaluatedFunctions(const MElement& element) const{
return getPreEvaluatedFunctions(refSpace->getPermutation(element));
}
const fullMatrix<double>& BasisHierarchicalScalar::
getPreEvaluatedGradFunctions(const MElement& element) const{
return getPreEvaluatedGradFunctions(refSpace->getPermutation(element));
}
const fullMatrix<double>& BasisHierarchicalScalar::
getPreEvaluatedFunctions(unsigned int orientation) const{
if(!preEvaluated) if(!preEvaluated)
throw Exception("getPreEvaluatedFunction: function has not been preEvaluated"); throw Exception("getPreEvaluatedFunction: function has not been preEvaluated");
return *preEvaluatedFunction[refSpace->getPermutation(element)]; return *preEvaluatedFunction[orientation];
} }
const fullMatrix<double>& BasisHierarchicalScalar:: const fullMatrix<double>& BasisHierarchicalScalar::
getPreEvaluatedGradFunctions(const MElement& element) const{ getPreEvaluatedGradFunctions(unsigned int orientation) const{
if(!preEvaluatedGrad) if(!preEvaluatedGrad)
throw Exception("getPreEvaluatedGradFunction: gradient has not been preEvaluated"); throw Exception("getPreEvaluatedGradFunction: gradient has not been preEvaluated");
return *preEvaluatedGradFunction[refSpace->getPermutation(element)]; return *preEvaluatedGradFunction[orientation];
}
unsigned int BasisHierarchicalScalar::
getNOrientation(void) const{
return refSpace->getNPermutation();
}
unsigned int BasisHierarchicalScalar::
getOrientation(const MElement& element) const{
return refSpace->getPermutation(element);
} }
void BasisHierarchicalScalar::getGrad(void) const{ void BasisHierarchicalScalar::getGrad(void) const{
......
...@@ -51,6 +51,15 @@ class BasisHierarchicalScalar: public BasisLocalScalar{ ...@@ -51,6 +51,15 @@ class BasisHierarchicalScalar: public BasisLocalScalar{
virtual const fullMatrix<double>& virtual const fullMatrix<double>&
getPreEvaluatedGradFunctions(const MElement& element) const; getPreEvaluatedGradFunctions(const MElement& element) const;
virtual const fullMatrix<double>&
getPreEvaluatedFunctions(unsigned int orientation) const;
virtual const fullMatrix<double>&
getPreEvaluatedGradFunctions(unsigned int orientation) const;
virtual unsigned int getNOrientation(void) const;
virtual unsigned int getOrientation(const MElement& element) const;
std::string toString(void) const; std::string toString(void) const;
protected: protected:
......
...@@ -232,26 +232,51 @@ preEvaluateDivFunctions(const fullMatrix<double>& point) const{ ...@@ -232,26 +232,51 @@ preEvaluateDivFunctions(const fullMatrix<double>& point) const{
const fullMatrix<double>& BasisHierarchicalVector:: const fullMatrix<double>& BasisHierarchicalVector::
getPreEvaluatedFunctions(const MElement& element) const{ getPreEvaluatedFunctions(const MElement& element) const{
return getPreEvaluatedFunctions(refSpace->getPermutation(element));
}
const fullMatrix<double>& BasisHierarchicalVector::
getPreEvaluatedCurlFunctions(const MElement& element) const{
return getPreEvaluatedCurlFunctions(refSpace->getPermutation(element));
}
const fullMatrix<double>& BasisHierarchicalVector::
getPreEvaluatedDivFunctions(const MElement& element) const{
return getPreEvaluatedDivFunctions(refSpace->getPermutation(element));
}
const fullMatrix<double>& BasisHierarchicalVector::
getPreEvaluatedFunctions(unsigned int orientation) const{
if(!preEvaluated) if(!preEvaluated)
throw Exception("getPreEvaluatedFunction: function has not been preEvaluated"); throw Exception("getPreEvaluatedFunction: function has not been preEvaluated");
return *preEvaluatedFunction[refSpace->getPermutation(element)]; return *preEvaluatedFunction[orientation];
} }
const fullMatrix<double>& BasisHierarchicalVector:: const fullMatrix<double>& BasisHierarchicalVector::
getPreEvaluatedCurlFunctions(const MElement& element) const{ getPreEvaluatedCurlFunctions(unsigned int orientation) const{
if(!preEvaluatedCurl) if(!preEvaluatedCurl)
throw Exception("getPreEvaluatedCurlFunction: curl has not been preEvaluated"); throw Exception("getPreEvaluatedCurlFunction: curl has not been preEvaluated");
return *preEvaluatedCurlFunction[refSpace->getPermutation(element)]; return *preEvaluatedCurlFunction[orientation];
} }
const fullMatrix<double>& BasisHierarchicalVector:: const fullMatrix<double>& BasisHierarchicalVector::
getPreEvaluatedDivFunctions(const MElement& element) const{ getPreEvaluatedDivFunctions(unsigned int orientation) const{
if(!preEvaluatedDiv) if(!preEvaluatedDiv)
throw Exception("getPreEvaluatedDivFunction: divergence has not been preEvaluated"); throw Exception("getPreEvaluatedDivFunction: divergence has not been preEvaluated");
return *preEvaluatedDivFunction[refSpace->getPermutation(element)]; return *preEvaluatedDivFunction[orientation];
}
unsigned int BasisHierarchicalVector::
getNOrientation(void) const{
return refSpace->getNPermutation();
}
unsigned int BasisHierarchicalVector::
getOrientation(const MElement& element) const{
return refSpace->getPermutation(element);
} }
void BasisHierarchicalVector::getCurl(void) const{ void BasisHierarchicalVector::getCurl(void) const{
......
...@@ -61,6 +61,18 @@ class BasisHierarchicalVector: public BasisLocalVector{ ...@@ -61,6 +61,18 @@ class BasisHierarchicalVector: public BasisLocalVector{
virtual const fullMatrix<double>& virtual const fullMatrix<double>&
getPreEvaluatedDivFunctions (const MElement& element)const; getPreEvaluatedDivFunctions (const MElement& element)const;
virtual const fullMatrix<double>&
getPreEvaluatedFunctions(unsigned int orientation) const;
virtual const fullMatrix<double>&
getPreEvaluatedCurlFunctions(unsigned int orientation) const;
virtual const fullMatrix<double>&
getPreEvaluatedDivFunctions(unsigned int orientation) const;
virtual unsigned int getNOrientation(void) const;
virtual unsigned int getOrientation(const MElement& element) const;
std::string toString(void) const; std::string toString(void) const;
protected: protected:
......
...@@ -55,6 +55,26 @@ BasisLagrange::getPreEvaluatedGradFunctions(const MElement& element) const{ ...@@ -55,6 +55,26 @@ BasisLagrange::getPreEvaluatedGradFunctions(const MElement& element) const{
throw Exception("BasisLagrange::Not Implemented"); throw Exception("BasisLagrange::Not Implemented");
} }
const fullMatrix<double>&
BasisLagrange::getPreEvaluatedFunctions(unsigned int orientation) const{
throw Exception("BasisLagrange::Not Implemented");
}
const fullMatrix<double>&
BasisLagrange::getPreEvaluatedGradFunctions(unsigned int orientation) const{
throw Exception("BasisLagrange::Not Implemented");
}
unsigned int BasisLagrange::
getNOrientation(void) const{
throw Exception("BasisLagrange::Not Implemented");
}
unsigned int BasisLagrange::
getOrientation(const MElement& element) const{
throw Exception("BasisLagrange::Not Implemented");
}
std::vector<double> BasisLagrange:: std::vector<double> BasisLagrange::
project(const MElement& element, project(const MElement& element,
const std::vector<double>& coef, const std::vector<double>& coef,
......
...@@ -46,6 +46,15 @@ class BasisLagrange: public BasisLocalScalar{ ...@@ -46,6 +46,15 @@ class BasisLagrange: public BasisLocalScalar{
virtual const fullMatrix<double>& virtual const fullMatrix<double>&
getPreEvaluatedGradFunctions(const MElement& element) const; getPreEvaluatedGradFunctions(const MElement& element) const;
virtual const fullMatrix<double>&
getPreEvaluatedFunctions(unsigned int orientation) const;
virtual const fullMatrix<double>&
getPreEvaluatedGradFunctions(unsigned int orientation) const;
virtual unsigned int getNOrientation(void) const;
virtual unsigned int getOrientation(const MElement& element) const;
const fullMatrix<double>& getCoefficient(void) const; const fullMatrix<double>& getCoefficient(void) const;
const fullMatrix<double>& getMonomial(void) const; const fullMatrix<double>& getMonomial(void) const;
......
...@@ -33,6 +33,12 @@ class BasisLocalScalar: public BasisLocal{ ...@@ -33,6 +33,12 @@ class BasisLocalScalar: public BasisLocal{
virtual const fullMatrix<double>& virtual const fullMatrix<double>&
getPreEvaluatedGradFunctions(const MElement& element) const = 0; getPreEvaluatedGradFunctions(const MElement& element) const = 0;
virtual const fullMatrix<double>&
getPreEvaluatedFunctions(unsigned int orientation) const = 0;
virtual const fullMatrix<double>&
getPreEvaluatedGradFunctions(unsigned int orientation) const = 0;
protected: protected:
BasisLocalScalar(void); BasisLocalScalar(void);
}; };
...@@ -93,7 +99,7 @@ class BasisLocalScalar: public BasisLocal{ ...@@ -93,7 +99,7 @@ class BasisLocalScalar: public BasisLocal{
@return Pre Evaluates every basis function @em gradient at the given points @return Pre Evaluates every basis function @em gradient at the given points
** **
@fn BasisLocalScalar::getPreEvaluatedFunctions @fn BasisLocalScalar::getPreEvaluatedFunctions(const MElement&) const
@param element A MElement @param element A MElement
@return Returns a Matrix with the PreEvaluated basis functions @return Returns a Matrix with the PreEvaluated basis functions
(see BasisLocalFunction::preEvaluateFunctions()), with the given (see BasisLocalFunction::preEvaluateFunctions()), with the given
...@@ -108,7 +114,7 @@ class BasisLocalScalar: public BasisLocal{ ...@@ -108,7 +114,7 @@ class BasisLocalScalar: public BasisLocal{
an Exception is thrown an Exception is thrown
** **
@fn BasisLocalScalar::getPreEvaluatedGradFunctions @fn BasisLocalScalar::getPreEvaluatedGradFunctions(const MElement&) const
@param element A MElement @param element A MElement
@return Returns a Matrix with the PreEvaluated basis functions @em gradient @return Returns a Matrix with the PreEvaluated basis functions @em gradient
(see BasisLocalFunction::preEvaluateGradFunctions()), with the given (see BasisLocalFunction::preEvaluateGradFunctions()), with the given
...@@ -121,6 +127,18 @@ class BasisLocalScalar: public BasisLocal{ ...@@ -121,6 +127,18 @@ class BasisLocalScalar: public BasisLocal{
@note @note
If no PreEvaluation of the gradient has been done before calling this function, If no PreEvaluation of the gradient has been done before calling this function,
an Exception is thrown an Exception is thrown
**
@fn BasisLocalScalar::getPreEvaluatedFunctions(unsigned int) const
@param orientation A number definig the orientation of the reference space
@return Same as BasisLocalScalar::getPreEvaluatedFunctions(const MElement&) const
but the orientation is not given by en element but by a number (@c orientation)
**
@fn BasisLocalScalar::getPreEvaluatedGradFunctions(unsigned int) const
@param orientation A number definig the orientation of the reference space
@return Same as BasisLocalScalar::getPreEvaluatedGradFunctions(const MElement&) const
but the orientation is not given by en element but by a number (@c orientation)
*/ */
#endif #endif
...@@ -37,6 +37,15 @@ class BasisLocalVector: public BasisLocal{ ...@@ -37,6 +37,15 @@ class BasisLocalVector: public BasisLocal{
virtual const fullMatrix<double>& virtual const fullMatrix<double>&
getPreEvaluatedDivFunctions(const MElement& element) const = 0; getPreEvaluatedDivFunctions(const MElement& element) const = 0;
virtual const fullMatrix<double>&
getPreEvaluatedFunctions(unsigned int orientation) const = 0;
virtual const fullMatrix<double>&
getPreEvaluatedCurlFunctions(unsigned int orientation) const = 0;
virtual const fullMatrix<double>&
getPreEvaluatedDivFunctions(unsigned int orientation) const = 0;
protected: protected:
BasisLocalVector(void); BasisLocalVector(void);
}; };
...@@ -104,7 +113,7 @@ class BasisLocalVector: public BasisLocal{ ...@@ -104,7 +113,7 @@ class BasisLocalVector: public BasisLocal{
@return Pre Evaluates every basis function @em divergence at the given points @return Pre Evaluates every basis function @em divergence at the given points
** **
@fn BasisLocalVector::getPreEvaluatedFunctions @fn BasisLocalVector::getPreEvaluatedFunctions(const MElement&) const
@param element A MElement @param element A MElement
@return Returns a Matrix with the PreEvaluated basis functions @return Returns a Matrix with the PreEvaluated basis functions
(see BasisLocalFunction::preEvaluateFunctions()), with the given (see BasisLocalFunction::preEvaluateFunctions()), with the given
...@@ -119,7 +128,7 @@ class BasisLocalVector: public BasisLocal{ ...@@ -119,7 +128,7 @@ class BasisLocalVector: public BasisLocal{
an Exception is thrown an Exception is thrown
** **
@fn BasisLocalVector::getPreEvaluatedCurlFunctions @fn BasisLocalVector::getPreEvaluatedCurlFunctions(const MElement&) const
@param element A MElement @param element A MElement
@return Returns a Matrix with the PreEvaluated basis functions @em curl @return Returns a Matrix with the PreEvaluated basis functions @em curl
(see BasisLocalFunction::preEvaluateCurlFunctions()), with the given (see BasisLocalFunction::preEvaluateCurlFunctions()), with the given
...@@ -134,7 +143,7 @@ class BasisLocalVector: public BasisLocal{ ...@@ -134,7 +143,7 @@ class BasisLocalVector: public BasisLocal{
an Exception is thrown an Exception is thrown
** **
@fn BasisLocalVector::getPreEvaluatedFunctions @fn BasisLocalVector::getPreEvaluatedDivFunctions(const MElement&) const
@param element A MElement @param element A MElement
@return Returns a Matrix with the PreEvaluated basis functions @em divergence @return Returns a Matrix with the PreEvaluated basis functions @em divergence
(see BasisLocalFunction::preEvaluateDivFunctions()), with the given (see BasisLocalFunction::preEvaluateDivFunctions()), with the given
...@@ -148,6 +157,23 @@ class BasisLocalVector: public BasisLocal{ ...@@ -148,6 +157,23 @@ class BasisLocalVector: public BasisLocal{
If no PreEvaluation of the divergence has been done before calling this function, If no PreEvaluation of the divergence has been done before calling this function,
an Exception is thrown an Exception is thrown
** **
@fn BasisLocalVector::getPreEvaluatedFunctions(unsigned int) const
@param orientation A number definig the orientation of the reference space
@return Same as BasisLocalVector::getPreEvaluatedFunctions(const MElement&) const
but the orientation is not given by en element but by a number (@c orientation)
**
@fn BasisLocalVector::getPreEvaluatedCurlFunctions(unsigned int) const
@param orientation A number definig the orientation of the reference space
@return Same as BasisLocalVector::getPreEvaluatedCurlFunctions(const MElement&) const
but the orientation is not given by en element but by a number (@c orientation)
**
@fn BasisLocalVector::getPreEvaluatedDivFunctions(unsigned int) const
@param orientation A number definig the orientation of the reference space
@return Same as BasisLocalVector::getPreEvaluatedDivFunctions(const MElement&) const
but the orientation is not given by en element but by a number (@c orientation)
*/ */
#endif #endif
...@@ -81,6 +81,9 @@ class FunctionSpace{ ...@@ -81,6 +81,9 @@ class FunctionSpace{
const GroupOfDof& getGoDFromElement(const MElement& element) const; const GroupOfDof& getGoDFromElement(const MElement& element) const;
unsigned int getNOrientation(void) const;
unsigned int getOrientation(const MElement& element) const;
unsigned int dofNumber(void) const; unsigned int dofNumber(void) const;
unsigned int groupNumber(void) const; unsigned int groupNumber(void) const;
...@@ -195,6 +198,20 @@ class FunctionSpace{ ...@@ -195,6 +198,20 @@ class FunctionSpace{
an Exception is thrown an Exception is thrown
** **
@fn FunctionSpace::getNOrientation
@return Returns the number of
@em orientations of the
FunctionSpace reference space
@todo Multiple basis
**
@fn FunctionSpace::getOrientation
@param element A MElement
@return Returns a number charaterizing
the @em orientation of the given element
@todo Multiple basis
**
@fn FunctionSpace::dofNumber @fn FunctionSpace::dofNumber
@return Returns the number of Dof%s @return Returns the number of Dof%s
given by FunctionSpace::getAllDofs() given by FunctionSpace::getAllDofs()
...@@ -243,6 +260,14 @@ inline unsigned int FunctionSpace::getNFunctionPerCell(const MElement& element) ...@@ -243,6 +260,14 @@ inline unsigned int FunctionSpace::getNFunctionPerCell(const MElement& element)
return fPerCell; return fPerCell;
} }
inline unsigned int FunctionSpace::getNOrientation(void) const{
return localBasis->getNOrientation();
}
inline unsigned int FunctionSpace::getOrientation(const MElement& element) const{
return localBasis->getOrientation(element);
}
inline unsigned int FunctionSpace::dofNumber(void) const{ inline unsigned int FunctionSpace::dofNumber(void) const{
return dof->size(); return dof->size();
} }
......
...@@ -48,6 +48,12 @@ class FunctionSpaceScalar : public FunctionSpace{ ...@@ -48,6 +48,12 @@ class FunctionSpaceScalar : public FunctionSpace{
const fullMatrix<double>& const fullMatrix<double>&
getEvaluatedGradLocalFunctions(const MElement& element) const; getEvaluatedGradLocalFunctions(const MElement& element) const;
const fullMatrix<double>&
getEvaluatedLocalFunctions(unsigned int orientation) const;
const fullMatrix<double>&
getEvaluatedGradLocalFunctions(unsigned int orientation) const;
protected: protected:
FunctionSpaceScalar(void); FunctionSpaceScalar(void);
}; };
...@@ -118,7 +124,7 @@ class FunctionSpaceScalar : public FunctionSpace{ ...@@ -118,7 +124,7 @@ class FunctionSpaceScalar : public FunctionSpace{
3 columns) 3 columns)
** **
@fn FunctionSpaceScalar::getEvaluatedLocalFunctions @fn FunctionSpaceScalar::getEvaluatedLocalFunctions(const MElement&) const
@param element A MElement @param element A MElement
@return Returns the @em values of the @em precomputed @return Returns the @em values of the @em precomputed
Basis Functions associated Basis Functions associated
...@@ -130,7 +136,7 @@ class FunctionSpaceScalar : public FunctionSpace{ ...@@ -130,7 +136,7 @@ class FunctionSpaceScalar : public FunctionSpace{
if not an Exception will be thrown if not an Exception will be thrown
** **
@fn FunctionSpaceScalar::getEvaluatedGradLocalFunctions @fn FunctionSpaceScalar::getEvaluatedGradLocalFunctions(const MElement&) const
@param element A MElement @param element A MElement
@return Returns the @em values of the @em precomputed @return Returns the @em values of the @em precomputed
@em Gradients of the Basis Functions associated @em Gradients of the Basis Functions associated
...@@ -140,6 +146,20 @@ class FunctionSpaceScalar : public FunctionSpace{ ...@@ -140,6 +146,20 @@ class FunctionSpaceScalar : public FunctionSpace{
The returned values @em must be computed by The returned values @em must be computed by
FunctionSpaceScalar::preEvaluateGradLocalFunctions(), FunctionSpaceScalar::preEvaluateGradLocalFunctions(),
if not an Exception will be thrown if not an Exception will be thrown
**
@fn FunctionSpaceScalar::getEvaluatedLocalFunctions(unsigned int) const
@param orientation A number definig the orientation of the reference space
@return Same as
FunctionSpaceScalar::getEvaluatedLocalFunctions(const MElement&) const
but the orientation is not given by en element but by a number (@c orientation)
**
@fn FunctionSpaceScalar::getEvaluatedGradLocalFunctions(unsigned int) const
@param orientation A number definig the orientation of the reference space
@return Same as
FunctionSpaceScalar::getEvaluatedGradLocalFunctions(const MElement&) const
but the orientation is not given by en element but by a number (@c orientation)
*/ */
////////////////////// //////////////////////
...@@ -178,4 +198,26 @@ FunctionSpaceScalar::getEvaluatedGradLocalFunctions(const MElement& element) con ...@@ -178,4 +198,26 @@ FunctionSpaceScalar::getEvaluatedGradLocalFunctions(const MElement& element) con
} }
} }
inline const fullMatrix<double>&
FunctionSpaceScalar::getEvaluatedLocalFunctions(unsigned int orientation) const{
try{
return localBasisScalar->getPreEvaluatedFunctions(orientation);
}
catch(Exception& any){
throw Exception("Local Basis Functions not PreEvaluated");
}
}
inline const fullMatrix<double>&
FunctionSpaceScalar::getEvaluatedGradLocalFunctions(unsigned int orientation) const{
try{
return localBasisScalar->getPreEvaluatedGradFunctions(orientation);
}
catch(Exception& any){
throw Exception("Gradient of Local Basis Functions not PreEvaluated");
}
}
#endif #endif
...@@ -52,6 +52,15 @@ class FunctionSpaceVector : public FunctionSpace{ ...@@ -52,6 +52,15 @@ class FunctionSpaceVector : public FunctionSpace{
const fullMatrix<double>& const fullMatrix<double>&
getEvaluatedDivLocalFunctions(const MElement& element) const; getEvaluatedDivLocalFunctions(const MElement& element) const;
const fullMatrix<double>&
getEvaluatedLocalFunctions(unsigned int orientation) const;
const fullMatrix<double>&
getEvaluatedCurlLocalFunctions(unsigned int orientation) const;
const fullMatrix<double>&
getEvaluatedDivLocalFunctions(unsigned int orientation) const;
protected: protected:
FunctionSpaceVector(void); FunctionSpaceVector(void);
}; };
...@@ -133,7 +142,7 @@ class FunctionSpaceVector : public FunctionSpace{ ...@@ -133,7 +142,7 @@ class FunctionSpaceVector : public FunctionSpace{
3 columns) 3 columns)
** **
@fn FunctionSpaceVector::getEvaluatedLocalFunctions @fn FunctionSpaceVector::getEvaluatedLocalFunctions(const MElement&) const
@param element A MElement @param element A MElement
@return Returns the @em values of the @em precomputed @return Returns the @em values of the @em precomputed
Basis Functions associated Basis Functions associated
...@@ -145,7 +154,7 @@ class FunctionSpaceVector : public FunctionSpace{ ...@@ -145,7 +154,7 @@ class FunctionSpaceVector : public FunctionSpace{
if not an Exception will be thrown if not an Exception will be thrown
** **
@fn FunctionSpaceVector::getEvaluatedCurlLocalFunctions @fn FunctionSpaceVector::getEvaluatedCurlLocalFunctions(const MElement&) const
@param element A MElement @param element A MElement
@return Returns the @em values of the @em precomputed @return Returns the @em values of the @em precomputed
@em Curls of the Basis Functions associated @em Curls of the Basis Functions associated
...@@ -157,7 +166,7 @@ class FunctionSpaceVector : public FunctionSpace{ ...@@ -157,7 +166,7 @@ class FunctionSpaceVector : public FunctionSpace{
if not an Exception will be thrown if not an Exception will be thrown
** **
@fn FunctionSpaceVector::getEvaluatedDivLocalFunctions @fn FunctionSpaceVector::getEvaluatedDivLocalFunctions(const MElement&) const
@param element A MElement @param element A MElement
@return Returns the @em values of the @em precomputed @return Returns the @em values of the @em precomputed
@em Divergences of the Basis Functions associated @em Divergences of the Basis Functions associated
...@@ -167,6 +176,27 @@ class FunctionSpaceVector : public FunctionSpace{ ...@@ -167,6 +176,27 @@ class FunctionSpaceVector : public FunctionSpace{
The returned values @em must be computed by The returned values @em must be computed by
FunctionSpaceVector::preEvaluateDivLocalFunctions(), FunctionSpaceVector::preEvaluateDivLocalFunctions(),
if not an Exception will be thrown if not an Exception will be thrown
**
@fn FunctionSpaceVector::getEvaluatedLocalFunctions(unsigned int) const
@param orientation A number definig the orientation of the reference space
@return Same as
FunctionSpaceVector::getEvaluatedLocalFunctions(const MElement&) const
but the orientation is not given by en element but by a number (@c orientation)
**
@fn FunctionSpaceVector::getEvaluatedCurlLocalFunctions(unsigned int) const
@param orientation A number definig the orientation of the reference space
@return Same as
FunctionSpaceVector::getEvaluatedCurlLocalFunctions(const MElement&) const
but the orientation is not given by en element but by a number (@c orientation)
**
@fn FunctionSpaceVector::getEvaluatedDivLocalFunctions(unsigned int) const
@param orientation A number definig the orientation of the reference space
@return Same as
FunctionSpaceVector::getEvaluatedDivLocalFunctions(const MElement&) const
but the orientation is not given by en element but by a number (@c orientation)
*/ */
////////////////////// //////////////////////
...@@ -221,4 +251,37 @@ FunctionSpaceVector::getEvaluatedDivLocalFunctions(const MElement& element) cons ...@@ -221,4 +251,37 @@ FunctionSpaceVector::getEvaluatedDivLocalFunctions(const MElement& element) cons
} }
} }
inline const fullMatrix<double>&
FunctionSpaceVector::getEvaluatedLocalFunctions(unsigned int orientation) const{
try{
return localBasisVector->getPreEvaluatedFunctions(orientation);
}
catch(Exception& any){
throw Exception("Local Basis Functions not PreEvaluated");
}
}
inline const fullMatrix<double>&
FunctionSpaceVector::getEvaluatedCurlLocalFunctions(unsigned int orientation) const{
try{
return localBasisVector->getPreEvaluatedCurlFunctions(orientation);
}
catch(Exception& any){
throw Exception("Curl of Local Basis Functions not PreEvaluated");
}
}
inline const fullMatrix<double>&
FunctionSpaceVector::getEvaluatedDivLocalFunctions(unsigned int orientation) const{
try{
return localBasisVector->getPreEvaluatedFunctions(orientation);
}
catch(Exception& any){
throw Exception("Divergence of Local Basis Functions not PreEvaluated");
}
}
#endif #endif
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment