diff --git a/Geo/MElement.cpp b/Geo/MElement.cpp
index 4b7ac5cb975f38dbac61905dcd8d3c5ea7f8ffaa..14a0689ed96fffd95508dc32b17391f924c29541 100644
--- a/Geo/MElement.cpp
+++ b/Geo/MElement.cpp
@@ -291,7 +291,7 @@ double MElement::getJacobian(const fullMatrix<double> &gsf, double jac[3][3])
 
   for (int i = 0; i < getNumShapeFunctions(); i++) {
     const MVertex *v = getShapeFunctionNode(i);
-    for (int j = 0; j < 3; j++) {
+    for (int j = 0; j < gsf.size2(); j++) {
       jac[j][0] += v->x() * gsf(i, j);
       jac[j][1] += v->y() * gsf(i, j);
       jac[j][2] += v->z() * gsf(i, j);
@@ -1216,70 +1216,6 @@ MElement *MElementFactory::create(int type, std::vector<MVertex*> &v,
   }
 }
 
-const fullMatrix<double> &MElement::
-getGradShapeFunctionsAtIntegrationPoints(int integrationOrder, int functionSpaceOrder)
-{
-  static std::map <std::pair<int,int>, fullMatrix<double> > DF;
-  const polynomialBasis *fs = getFunctionSpace(functionSpaceOrder);
-  fullMatrix<double> &mat = DF[std::make_pair(fs->type, integrationOrder)];
-  if (mat.size1() != 0) return mat;
-  int npts;
-  IntPt *pts;
-  getIntegrationPoints(integrationOrder, &npts, &pts);
-  mat.resize(fs->points.size1(), npts*3);
-  double df[512][3];
-  for (int i = 0; i < npts; i++) {
-    fs->df(pts[i].pt[0], pts[i].pt[1], pts[i].pt[2], df);
-    for (int j = 0; j < fs->points.size1(); j++) {
-      mat(j, i*3+0) = df[j][0];
-      mat(j, i*3+1) = df[j][1];
-      mat(j, i*3+2) = df[j][2];
-    }
-  }
-  return mat;
-}
-
-const fullMatrix<double> &MElement::
-getShapeFunctionsAtIntegrationPoints (int integrationOrder, int functionSpaceOrder)
-{
-  static std::map <std::pair<int,int>, fullMatrix<double> > F;
-  const polynomialBasis *fs = getFunctionSpace (functionSpaceOrder);
-  fullMatrix<double> &mat = F[std::make_pair(fs->type, integrationOrder)];
-  if (mat.size1() != 0) return mat;
-  int npts;
-  IntPt *pts;
-  getIntegrationPoints(integrationOrder, &npts, &pts);
-  mat.resize(fs->points.size1(), npts*3);
-  double f[512];
-  for (int i = 0; i < npts; i++) {
-    fs->f(pts[i].pt[0], pts[i].pt[1], pts[i].pt[2], f);
-    for (int j = 0; j < fs->points.size1(); j++) {
-      mat(j, i) = f[j];
-    }
-  }
-  return mat;
-}
-
-const fullMatrix<double> &MElement::getGradShapeFunctionsAtNodes(int functionSpaceOrder)
-{
-  static std::map <int, fullMatrix<double> > DF;
-  const polynomialBasis *fs = getFunctionSpace(functionSpaceOrder);
-  fullMatrix<double> &mat = DF[fs->type];
-  if (mat.size1()!=0) return mat;
-  const fullMatrix<double> &points = fs->points;
-  mat.resize (points.size1(), points.size1()*3);
-  double df[512][3];
-  for (int i = 0; i < points.size1(); i++) {
-    fs->df (points(i,0), points(i,1), points(i,2), df);
-    for (int j = 0; j < points.size1(); j++) {
-      mat(j, i*3+0) = df[j][0];
-      mat(j, i*3+1) = df[j][1];
-      mat(j, i*3+2) = df[j][2];
-    }
-  }
-  return mat;
-}
-
 void MElement::xyzTouvw(fullMatrix<double> *xu)
 {
   double _xyz[3] = {(*xu)(0,0),(*xu)(0,1),(*xu)(0,2)}, _uvw[3];
diff --git a/Geo/MElement.h b/Geo/MElement.h
index 534f22c1a4096d96351008e6a5e1e1a589b061dd..ae035be37199200eb2add8d566b3bd265446d5ed 100644
--- a/Geo/MElement.h
+++ b/Geo/MElement.h
@@ -236,12 +236,6 @@ class MElement
                                      int order=-1);
   virtual void getHessShapeFunctions(double u, double v, double w, double s[][3][3],
                                      int order=-1);
-  const fullMatrix<double> &getGradShapeFunctionsAtIntegrationPoints
-    (int integrationOrder, int functionSpaceOrder=-1);
-  const fullMatrix<double> &getShapeFunctionsAtIntegrationPoints
-    (int integrationOrder, int functionSpaceOrder=-1);
-  const fullMatrix<double> &getGradShapeFunctionsAtNodes (int functionSpaceOrder=-1);
-
   // return the Jacobian of the element evaluated at point (u,v,w) in
   // parametric coordinates
   double getJacobian(const fullMatrix<double> &gsf, double jac[3][3]);
diff --git a/Numeric/polynomialBasis.cpp b/Numeric/polynomialBasis.cpp
index 6d7eac566beaeee441174ee64b5049d2717957d0..18b2caf491d553d135483d7afdc16629baa8c3fc 100644
--- a/Numeric/polynomialBasis.cpp
+++ b/Numeric/polynomialBasis.cpp
@@ -191,43 +191,6 @@ static fullMatrix<double> generatePascalSerendipityTriangle(int order)
   return monomials;
 }
 
-const fullMatrix<double> &polynomialBasis::
-getGradientAtFaceIntegrationPoints(int integrationOrder, int closureId) const
-{
-  std::vector<fullMatrix<double> > &dfAtFace = _dfAtFace[integrationOrder];
-  if (dfAtFace.empty()) {
-    dfAtFace.resize(closures.size());
-    int nbPsi = points.size1();
-    for (unsigned int iClosure = 0; iClosure < closures.size(); iClosure++) {
-      fullMatrix<double> integrationFace, weight;
-      const polynomialBasis *fsFace = polynomialBases::find(closures[iClosure].type);
-      gaussIntegration::get(fsFace->parentType, integrationOrder, integrationFace, weight);
-      fullMatrix<double> integration(integrationFace.size1(), 3);
-      double f[1256];
-      for (int i = 0; i < integrationFace.size1(); i++){
-        fsFace->f(integrationFace(i,0),integrationFace(i,1),integrationFace(i,2),f);
-        for(unsigned int j = 0; j < closures[iClosure].size(); j++) {
-          int jNod = closures[iClosure][j];
-          for(int k = 0; k < points.size2(); k++)
-            integration(i,k) += f[j] * points(jNod,k);
-        }
-      }
-      fullMatrix<double> &v = dfAtFace[iClosure];
-      v.resize(nbPsi, integration.size1()*3);
-      double g[1256][3];
-      for (int xi = 0; xi < integration.size1(); xi++) {
-        df(integration(xi, 0), integration(xi, 1), integration(xi, 2), g);
-        for (int j = 0; j < nbPsi; j++) {
-          v(j, xi*3) = g[j][0];
-          v(j, xi*3+1) = g[j][1];
-          v(j, xi*3+2) = g[j][2];
-        }
-      }
-    }
-  }
-  return dfAtFace[closureId];
-}
-
 // generate all monomials xi^m * eta^n with n and m <= order
 
 static fullMatrix<double> generatePascalQuad(int order)
diff --git a/Numeric/polynomialBasis.h b/Numeric/polynomialBasis.h
index 3c5dca3e1a84ca1297564b52a7cd312806eda750..0110c5f087efdc4e68740a0e2e531dd7c481d772 100644
--- a/Numeric/polynomialBasis.h
+++ b/Numeric/polynomialBasis.h
@@ -299,8 +299,6 @@ class polynomialBasis
       break;
     }
   }
-  const fullMatrix<double> &getGradientAtFaceIntegrationPoints(int integrationOrder,
-                                                               int closureId) const;
   static int getTag(int parentTag, int order, bool serendip = false);
 };