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
00029
00030
00031 #ifndef SUNDANCE_EDGELOCALIZEDBASIS_H
00032 #define SUNDANCE_EDGELOCALIZEDBASIS_H
00033
00034 #include "SundanceDefs.hpp"
00035 #include "Teuchos_RefCountPtr.hpp"
00036 #include "SundanceBasisFamilyBase.hpp"
00037
00038 namespace Sundance
00039 {
00040
00041
00042
00043 class EdgeLocalizedBasis : public ScalarBasis
00044 {
00045 public:
00046
00047 EdgeLocalizedBasis();
00048
00049
00050
00051
00052 bool supportsCellTypePair(
00053 const CellType& maximalCellType,
00054 const CellType& cellType
00055 ) const ;
00056
00057
00058 void print(std::ostream& os) const ;
00059
00060
00061 int order() const {return 0;}
00062
00063
00064 int nReferenceDOFsWithoutFacets(
00065 const CellType& maximalCellType,
00066 const CellType& cellType
00067 ) const ;
00068
00069
00070 void getReferenceDOFs(
00071 const CellType& maximalCellType,
00072 const CellType& cellType,
00073 Array<Array<Array<int> > >& dofs) const ;
00074
00075
00076 void refEval(
00077 const CellType& cellType,
00078 const Array<Point>& pts,
00079 const SpatialDerivSpecifier& deriv,
00080 Array<Array<Array<double> > >& result,
00081 int verbosity=0) const ;
00082
00083
00084
00085 GET_RCP(BasisFamilyBase);
00086
00087 private:
00088
00089
00090 void evalOnLine(const Point& pt,
00091 const MultiIndex& deriv,
00092 Array<double>& result) const ;
00093
00094
00095 void evalOnTriangle(const Point& pt,
00096 const MultiIndex& deriv,
00097 Array<double>& result) const ;
00098
00099 void evalOnTet(const Point& pt,
00100 const MultiIndex& deriv,
00101 Array<double>& result) const ;
00102
00103 };
00104 }
00105
00106 #endif