From 99669a17e1ca4f73ca1ea400389f30a22812a0d2 Mon Sep 17 00:00:00 2001
From: Jonathan Lambrechts <jonathan.lambrechts@uclouvain.be>
Date: Thu, 28 Apr 2011 15:48:04 +0000
Subject: [PATCH] fix serendip polynomial basis for triangles and quads

---
 Numeric/polynomialBasis.cpp | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/Numeric/polynomialBasis.cpp b/Numeric/polynomialBasis.cpp
index e2bb340ccd..1614ed6a5b 100644
--- a/Numeric/polynomialBasis.cpp
+++ b/Numeric/polynomialBasis.cpp
@@ -1562,8 +1562,8 @@ const polynomialBasis *polynomialBases::find(int tag)
     case TYPE_TRI :
       F.numFaces = 3;
       F.dimension = 2;
-      F.monomials = generatePascalTriangle(F.order);
-      F.points =    gmshGeneratePointsTriangle(F.order, F.serendip);
+      F.monomials = F.serendip ? generatePascalSerendipityTriangle(F.order) : generatePascalTriangle(F.order);
+      F.points = gmshGeneratePointsTriangle(F.order, F.serendip);
       if (F.order == 0) {
         generateClosureOrder0(F.closures, 6);
         generateClosureOrder0(F.fullClosures, 6);
@@ -1576,7 +1576,7 @@ const polynomialBasis *polynomialBases::find(int tag)
     case TYPE_QUA :
       F.numFaces = 4;
       F.dimension = 2;
-      F.monomials = generatePascalQuad(F.order);
+      F.monomials = F.serendip ? generatePascalQuadSerendip(F.order) : generatePascalQuad(F.order);
       F.points = gmshGeneratePointsQuad(F.order, F.serendip);
       if (F.order == 0) {
         generateClosureOrder0(F.closures, 8);
@@ -1590,7 +1590,7 @@ const polynomialBasis *polynomialBases::find(int tag)
     case TYPE_TET :
       F.numFaces = 4;
       F.dimension = 3;
-      F.monomials = generatePascalTetrahedron(F.order);
+      F.monomials = F.serendip ? generatePascalSerendipityTetrahedron(F.order) : generatePascalTetrahedron(F.order);
       F.points = gmshGeneratePointsTetrahedron(F.order, F.serendip);
       if (F.order == 0) {
         generateClosureOrder0(F.closures,24);
@@ -1618,7 +1618,7 @@ const polynomialBasis *polynomialBases::find(int tag)
     case TYPE_HEX :
       F.numFaces = 6;
       F.dimension = 3;
-      F.monomials = generatePascalHex(F.order,F.serendip);
+      F.monomials = generatePascalHex(F.order, F.serendip);
       F.points =    gmshGeneratePointsHex(F.order, F.serendip);
       //    generateFaceClosureHex(F.closures, F.order);
       //    generateFaceClosureHexFull(F.fullClosures, F.closureRef, F.order, F.serendip);
-- 
GitLab