00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef _LINEARBASISFUNCTION_HPP_
00029 #define _LINEARBASISFUNCTION_HPP_
00030
00031 #include "ChastePoint.hpp"
00032
00033
00038 template <unsigned ELEMENT_DIM>
00039 class LinearBasisFunction
00040 {
00041 public:
00042
00052 static double ComputeBasisFunction(const ChastePoint<ELEMENT_DIM>& rPoint, unsigned basisIndex);
00053
00066 static c_vector<double, ELEMENT_DIM> ComputeBasisFunctionDerivative(const ChastePoint<ELEMENT_DIM>& rPoint, unsigned basisIndex);
00067
00068 static void ComputeBasisFunctions(const ChastePoint<ELEMENT_DIM>& rPoint, c_vector<double, ELEMENT_DIM+1>& rReturnValue);
00069 static void ComputeBasisFunctionDerivatives(const ChastePoint<ELEMENT_DIM>& rPoint,
00070 c_matrix<double, ELEMENT_DIM, ELEMENT_DIM+1>& rReturnValue);
00071
00072 static void ComputeTransformedBasisFunctionDerivatives(const ChastePoint<ELEMENT_DIM>& rPoint,
00073 const c_matrix<double, ELEMENT_DIM, ELEMENT_DIM>& rInverseJacobian,
00074 c_matrix<double, ELEMENT_DIM, ELEMENT_DIM+1>& rReturnValue);
00075 };
00076
00080 template <>
00081 class LinearBasisFunction<0>
00082 {
00083 public:
00084 static double ComputeBasisFunction(const ChastePoint<0>& rPoint, unsigned basisIndex);
00085 static void ComputeBasisFunctions(const ChastePoint<0>& rPoint,c_vector<double,1>& rReturnValue);
00086 };
00087
00088
00089 #endif //_LINEARBASISFUNCTION_HPP_