NGSolve
4.9
|
00001 #ifndef FILE_SCALARFE 00002 #define FILE_SCALARFE 00003 00004 /*********************************************************************/ 00005 /* File: scalarfe.hpp */ 00006 /* Author: Joachim Schoeberl */ 00007 /* Date: 25. Mar. 2000 */ 00008 /*********************************************************************/ 00009 00010 namespace ngfem 00011 { 00012 00013 00018 template <int D> 00019 class NGS_DLL_HEADER ScalarFiniteElement : public FiniteElement 00020 { 00021 public: 00023 ScalarFiniteElement () { ; } // dimspace = D; } 00025 ScalarFiniteElement (ELEMENT_TYPE aeltype, 00026 int andof = 0, int aorder = 0) 00027 : FiniteElement (aeltype, andof, aorder) 00028 { ; } 00029 00031 virtual ~ScalarFiniteElement () { ; } 00032 00034 virtual string ClassName() const { return "ScalarFiniteElement"; } 00035 00040 const FlatVector<> GetShape (const IntegrationPoint & ip, 00041 LocalHeap & lh) const 00042 { 00043 FlatVector<> shape(ndof, lh); 00044 CalcShape (ip, shape); 00045 return shape; 00046 } 00047 00052 const FlatMatrixFixWidth<D> 00053 GetDShape (const IntegrationPoint & ip, LocalHeap & lh) const 00054 { 00055 FlatMatrixFixWidth<D> dshape(ndof, lh); 00056 CalcDShape (ip, dshape); 00057 return dshape; 00058 } 00059 00060 00062 virtual void CalcShape (const IntegrationPoint & ip, 00063 FlatVector<> shape) const = 0; 00064 00066 virtual void CalcDShape (const IntegrationPoint & ip, 00067 FlatMatrixFixWidth<D> dshape) const; 00068 00070 virtual void CalcMappedDShape (const MappedIntegrationPoint<D,D> & mip, 00071 FlatMatrixFixWidth<D> dshape) const; 00072 00073 00074 00075 00080 const FlatMatrix<> GetDDShape (const IntegrationPoint & ip, LocalHeap & lh) const 00081 { 00082 FlatMatrix<> ddshape(ndof, D*D, lh); 00083 CalcDDShape (ip, ddshape); 00084 return ddshape; 00085 } 00086 00088 virtual void CalcDDShape (const IntegrationPoint & ip, 00089 FlatMatrix<> ddshape) const; 00090 00091 00092 00097 virtual double Evaluate (const IntegrationPoint & ip, FlatVector<> x) const; 00098 00103 virtual Vec<D> EvaluateGrad (const IntegrationPoint & ip, FlatVector<> x) const; 00104 00105 00110 virtual void Evaluate (const IntegrationRule & ir, FlatVector<> coefs, FlatVector<> values) const; 00111 00116 virtual void EvaluateGrad (const IntegrationRule & ir, FlatVector<> coefs, FlatMatrixFixWidth<D> values) const; 00117 00118 00123 virtual void EvaluateTrans (const IntegrationRule & ir, FlatVector<> values, FlatVector<> coefs) const; 00124 00125 00130 virtual void EvaluateGradTrans (const IntegrationRule & ir, FlatMatrixFixWidth<D> values, FlatVector<> coefs) const; 00131 00132 00133 00135 virtual void EvaluateShapeGrid (const IntegrationRuleTP<D> & ir, 00136 const FlatVector<double> coefs, 00137 FlatVector<double> gridvalues, 00138 LocalHeap & lh) const; 00139 00141 virtual void EvaluateShapeGridTrans (const IntegrationRuleTP<D> & ir, 00142 const FlatVector<double> gridvalues, 00143 FlatVector<double> coefs, 00144 LocalHeap & lh) const; 00145 00147 virtual void EvaluateDShapeGrid (const IntegrationRuleTP<D> & ir, 00148 const FlatVector<double> coefs, 00149 FlatMatrixFixWidth<D> gridvalues, 00150 LocalHeap & lh) const; 00151 00153 virtual void EvaluateDShapeGridTrans (const IntegrationRuleTP<D> & ir, 00154 const FlatMatrixFixWidth<D> gridvalues, 00155 FlatVector<double> coefs, 00156 LocalHeap & lh) const; 00157 }; 00158 00159 00160 } 00161 00162 #endif