From f413339c1af30d624f8d8b2230e210535fd4048d Mon Sep 17 00:00:00 2001
From: Christophe Geuzaine <cgeuzaine@ulg.ac.be>
Date: Wed, 18 May 2011 06:26:50 +0000
Subject: [PATCH] pp

---
 Numeric/polynomialBasis.cpp | 78 +++++++++++++++----------------------
 1 file changed, 31 insertions(+), 47 deletions(-)

diff --git a/Numeric/polynomialBasis.cpp b/Numeric/polynomialBasis.cpp
index d77b0644ee..3ff790f952 100644
--- a/Numeric/polynomialBasis.cpp
+++ b/Numeric/polynomialBasis.cpp
@@ -8,12 +8,12 @@
 //   Jonathan Lambrechts
 //
 
+#include <stdlib.h>
 #include "GmshDefines.h"
 #include "GmshMessage.h"
 #include "polynomialBasis.h"
 #include "Gauss.h"
 
-#include "stdlib.h"
 static void printClosure(polynomialBasis::clCont &fullClosure, std::vector<int> &closureRef,
                          polynomialBasis::clCont &closures)
 {
@@ -191,8 +191,8 @@ static fullMatrix<double> generatePascalSerendipityTriangle(int order)
   return monomials;
 }
 
-const fullMatrix<double> &polynomialBasis::getGradientAtFaceIntegrationPoints(int integrationOrder,
-                                                                              int closureId) const
+const fullMatrix<double> &polynomialBasis::
+getGradientAtFaceIntegrationPoints(int integrationOrder, int closureId) const
 {
   std::vector<fullMatrix<double> > &dfAtFace = _dfAtFace[integrationOrder];
   if (dfAtFace.empty()) {
@@ -229,6 +229,7 @@ const fullMatrix<double> &polynomialBasis::getGradientAtFaceIntegrationPoints(in
 }
 
 // generate all monomials xi^m * eta^n with n and m <= order
+
 static fullMatrix<double> generatePascalQuad(int order)
 {
 
@@ -247,7 +248,6 @@ static fullMatrix<double> generatePascalQuad(int order)
   return monomials;
 }
 
-
 /*
 00 10 20 30 40 ⋯
 01 11 21 31 41 ⋯
@@ -258,6 +258,7 @@ static fullMatrix<double> generatePascalQuad(int order)
 */
 
 // generate all monomials xi^m * eta^n with n and m <= order
+
 static fullMatrix<double> generatePascalHex(int order, bool serendip)
 {
   int siz = (order+1)*(order+1)*(order+1);
@@ -276,7 +277,6 @@ static fullMatrix<double> generatePascalHex(int order, bool serendip)
       }
     }
   }
-  //  printf("siz %d %d\n",siz,index );
   return monomials;
 }
 
@@ -309,29 +309,6 @@ static fullMatrix<double> generatePascalQuadSerendip(int order)
   return monomials;
 }
 
-
-/*static fullMatrix<double> generatePascalQuadSerendip(int order)
-{
-
-  fullMatrix<double> monomials( order*4, 2);
-  int index = 0;
-  for (int p = 0; p < order; p++) {
-    monomials(p, 0) = p;
-    monomials(p, 1) = 0;
-
-    monomials(p+order, 0) = order;
-    monomials(p+order, 1) = p;
-
-    monomials(p+3*order, 0) = order-p;
-    monomials(p+3*order, 1) = order;
-
-    monomials(p+2*order, 0) = 0;
-    monomials(p+2*order, 1) = order-p;
-  }
-  monomials.print();
-  return monomials;
-}*/
-
 // generate the monomials subspace of all monomials of order exactly == p
 
 static fullMatrix<double> generateMonomialSubspace(int dim, int p)
@@ -447,12 +424,11 @@ static fullMatrix<double> generatePascalPrism(int order)
       }
     }
   }
-//   monomials.print("Pri monoms");
+
   return monomials;
 }
 
 static int nbdoftriangle(int order) { return (order + 1) * (order + 2) / 2; }
-//static int nbdoftriangleserendip(int order) { return 3 * order; }
 
 //KH : caveat : node coordinates are not yet coherent with node numbering associated
 //              to numbering of principal vertices of face !!!!
@@ -1055,8 +1031,8 @@ static void generate1dVertexClosure(polynomialBasis::clCont &closure, int order)
   closure[1].type = MSH_PNT;
 }
 
-static void generate1dVertexClosureFull(polynomialBasis::clCont &closure, std::vector<int> &closureRef,
-                                        int order)
+static void generate1dVertexClosureFull(polynomialBasis::clCont &closure,
+                                        std::vector<int> &closureRef, int order)
 {
   closure.clear();
   closure.resize(2);
@@ -1075,10 +1051,9 @@ static void generate1dVertexClosureFull(polynomialBasis::clCont &closure, std::v
   closureRef[1] = 0;
 }
 
-static void getFaceClosureTet(int iFace, int iSign, int iRotate, polynomialBasis::closure &closure,
-                              int order)
+static void getFaceClosureTet(int iFace, int iSign, int iRotate,
+                              polynomialBasis::closure &closure, int order)
 {
-
   closure.clear();
   closure.resize((order + 1) * (order + 2) / 2);
   closure.type = polynomialBasis::getTag(TYPE_TRI, order, false);
@@ -1141,7 +1116,9 @@ static void getFaceClosureTet(int iFace, int iSign, int iRotate, polynomialBasis
     break;
   }
 }
-static void generate2dEdgeClosureFull(polynomialBasis::clCont &closure, std::vector<int> &closureRef,
+
+static void generate2dEdgeClosureFull(polynomialBasis::clCont &closure,
+                                      std::vector<int> &closureRef,
                                       int order, int nNod, bool serendip)
 {
   closure.clear();
@@ -1220,7 +1197,8 @@ static void generateFaceClosureTet(polynomialBasis::clCont &closure, int order)
   }
 }
 
-static void generateFaceClosureTetFull(polynomialBasis::clCont &closureFull, std::vector<int> &closureRef,
+static void generateFaceClosureTetFull(polynomialBasis::clCont &closureFull,
+                                       std::vector<int> &closureRef,
                                        int order, bool serendip)
 {
   closureFull.clear();
@@ -1563,13 +1541,15 @@ const polynomialBasis *polynomialBases::find(int tag)
     case TYPE_TRI :
       F.numFaces = 3;
       F.dimension = 2;
-      F.monomials = F.serendip ? generatePascalSerendipityTriangle(F.order) : generatePascalTriangle(F.order);
+      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);
         F.closureRef.resize(6, 0);
-      } else {
+      }
+      else {
         generate2dEdgeClosure(F.closures, F.order);
         generate2dEdgeClosureFull(F.fullClosures, F.closureRef, F.order, 3, F.serendip);
       }
@@ -1577,13 +1557,15 @@ const polynomialBasis *polynomialBases::find(int tag)
     case TYPE_QUA :
       F.numFaces = 4;
       F.dimension = 2;
-      F.monomials = F.serendip ? generatePascalQuadSerendip(F.order) : 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);
         generateClosureOrder0(F.fullClosures, 8);
         F.closureRef.resize(8, 0);
-      } else {
+      }
+      else {
         generate2dEdgeClosure(F.closures, F.order, 4);
         generate2dEdgeClosureFull(F.fullClosures, F.closureRef, F.order, 4, F.serendip);
       }
@@ -1591,13 +1573,15 @@ const polynomialBasis *polynomialBases::find(int tag)
     case TYPE_TET :
       F.numFaces = 4;
       F.dimension = 3;
-      F.monomials = F.serendip ? generatePascalSerendipityTetrahedron(F.order) : 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);
         generateClosureOrder0(F.fullClosures, 24);
         F.closureRef.resize(24, 0);
-      } else {
+      } 
+      else {
         generateFaceClosureTet(F.closures, F.order);
         generateFaceClosureTetFull(F.fullClosures, F.closureRef, F.order, F.serendip);
       }
@@ -1611,7 +1595,8 @@ const polynomialBasis *polynomialBases::find(int tag)
         generateClosureOrder0(F.closures,48);
         generateClosureOrder0(F.fullClosures,48);
         F.closureRef.resize(48, 0);
-      } else {
+      }
+      else {
         generateFaceClosurePrism(F.closures, F.order);
         generateFaceClosurePrismFull(F.fullClosures, F.closureRef, F.order);
       }
@@ -1621,8 +1606,8 @@ const polynomialBasis *polynomialBases::find(int tag)
       F.dimension = 3;
       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);
+      // generateFaceClosureHex(F.closures, F.order);
+      // generateFaceClosureHexFull(F.fullClosures, F.closureRef, F.order, F.serendip);
       break;
   }
   F.coefficients = generateLagrangeMonomialCoefficients(F.monomials, F.points);
@@ -1655,4 +1640,3 @@ const fullMatrix<double> &polynomialBases::findInjector(int tag1, int tag2)
   injector.insert(std::make_pair(key, inj));
   return injector[key];
 }
-
-- 
GitLab