diff --git a/Numeric/pyramidalBasis.cpp b/Numeric/pyramidalBasis.cpp index f7baa6508c4e696f7c11625a3802b952651dfcc0..a977a06d6e5f0cd45d3cef115f7e2ec77e0a34a1 100644 --- a/Numeric/pyramidalBasis.cpp +++ b/Numeric/pyramidalBasis.cpp @@ -13,11 +13,7 @@ pyramidalBasis::pyramidalBasis(int tag) : nodalBasis(tag) bergot = new BergotBasis(order); - int n = order+1; - int num_points = n*(n+1)*(2*n+1)/6; - if (serendip && (order > 2)) { - num_points -= (order-2)*((order-2)+1)*(2*(order-2)+1)/6; - } + int num_points = points.size1(); VDMinv.resize(num_points, num_points); double *fval = new double[num_points]; @@ -43,6 +39,10 @@ pyramidalBasis::~pyramidalBasis() +int pyramidalBasis::getNumShapeFunctions() const { return points.size1(); } + + + void pyramidalBasis::f(double u, double v, double w, double *val) const { @@ -62,7 +62,7 @@ void pyramidalBasis::f(double u, double v, double w, double *val) const -void pyramidalBasis::f(const fullMatrix<double> &coord, fullMatrix<double> &sf) +void pyramidalBasis::f(const fullMatrix<double> &coord, fullMatrix<double> &sf) const { const int N = bergot->size(), NPts = coord.size1(); diff --git a/Numeric/pyramidalBasis.h b/Numeric/pyramidalBasis.h index d04f309b501c94b613c5f32d7fa6408a466982f4..b570a9b1e1d311269de84021c117341ef230d1f9 100644 --- a/Numeric/pyramidalBasis.h +++ b/Numeric/pyramidalBasis.h @@ -27,10 +27,12 @@ class pyramidalBasis: public nodalBasis ~pyramidalBasis(); virtual void f(double u, double v, double w, double *val) const; - virtual void f(const fullMatrix<double> &coord, fullMatrix<double> &sf); + virtual void f(const fullMatrix<double> &coord, fullMatrix<double> &sf) const; virtual void df(double u, double v, double w, double grads[][3]) const; virtual void df(const fullMatrix<double> &coord, fullMatrix<double> &dfm) const; + virtual int getNumShapeFunctions() const; + };