diff --git a/Numeric/FunctionSpace.cpp b/Numeric/FunctionSpace.cpp index cba41e37c840c0ba2b6f36dff2a8afc70fc195da..7cea8abaa66149a494e6d8630e0ee2c949fe3d8d 100644 --- a/Numeric/FunctionSpace.cpp +++ b/Numeric/FunctionSpace.cpp @@ -1,4 +1,4 @@ -// $Id: FunctionSpace.cpp,v 1.6 2008-06-10 08:37:34 remacle Exp $ +// $Id: FunctionSpace.cpp,v 1.7 2008-06-27 08:10:07 koen Exp $ // // Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle // @@ -324,7 +324,7 @@ Double_Matrix gmshGeneratePointsTetrahedron(int order, bool serendip) Double_Matrix point(nbPoints, 3); - double overOrder = 1. / order; + double overOrder = (order == 0 ? 1. : 1. / order); point(0, 0) = 0.; point(0, 1) = 0.; @@ -342,25 +342,31 @@ Double_Matrix gmshGeneratePointsTetrahedron(int order, bool serendip) point(3, 0) = 0.; point(3, 1) = 0.; point(3, 2) = order; + + // edges e5 and e6 switched in original version if (order > 1) { for (int k = 0; k < (order - 1); k++) { point(4 + k, 0) = k + 1; - point(4 + order - 1 + k, 0) = order - 1 - k; + point(4 + order - 1 + k, 0) = order - 1 - k; point(4 + 2 * (order - 1) + k, 0) = 0.; point(4 + 3 * (order - 1) + k, 0) = 0.; - point(4 + 4 * (order - 1) + k, 0) = order - 1 - k; - point(4 + 5 * (order - 1) + k, 0) = 0.; + // point(4 + 4 * (order - 1) + k, 0) = order - 1 - k; + // point(4 + 5 * (order - 1) + k, 0) = 0.; + point(4 + 4 * (order - 1) + k, 0) = 0.; + point(4 + 5 * (order - 1) + k, 0) = order - 1 - k; point(4 + k, 1) = 0.; - point(4 + order - 1 + k, 1) = k + 1; + point(4 + order - 1 + k, 1) = k + 1; point(4 + 2 * (order - 1) + k, 1) = order - 1 - k; point(4 + 3 * (order - 1) + k, 1) = 0.; - point(4 + 4 * (order - 1) + k, 1) = 0.; - point(4 + 5 * (order - 1) + k, 1) = order - 1 - k; + // point(4 + 4 * (order - 1) + k, 1) = 0.; + // point(4 + 5 * (order - 1) + k, 1) = order - 1 - k; + point(4 + 4 * (order - 1) + k, 1) = order - 1 - k; + point(4 + 5 * (order - 1) + k, 1) = 0.; point(4 + k, 2) = 0.; - point(4 + order - 1 + k, 2) = 0.; + point(4 + order - 1 + k, 2) = 0.; point(4 + 2 * (order - 1) + k, 2) = 0.; point(4 + 3 * (order - 1) + k, 2) = k + 1; point(4 + 4 * (order - 1) + k, 2) = k + 1; @@ -587,7 +593,7 @@ const gmshFunctionSpace &gmshFunctionSpaces::find(int tag) break; case MSH_TET_4 : F.monomials = generatePascalTetrahedron(1); - F.points = gmshGeneratePointsTetrahedron(5, false); + F.points = gmshGeneratePointsTetrahedron(1, false); break; case MSH_TET_10 : F.monomials = generatePascalTetrahedron(2);