From 747413f6c810795827f1821ebe516a58a581012a Mon Sep 17 00:00:00 2001
From: Nicolas Marsic <nicolas.marsic@gmail.com>
Date: Thu, 13 Nov 2014 18:23:42 +0000
Subject: [PATCH] HUGE BUG FIX: correcting rev19884 introduced a new bug --
 TriEdgeBasis functions associated to FACES were missing a -1 !! It seems like
 everything works now :-)!

---
 FunctionSpace/TetEdgeBasis.cpp | 12 +++---------
 FunctionSpace/TriEdgeBasis.cpp | 17 +++++++----------
 2 files changed, 10 insertions(+), 19 deletions(-)

diff --git a/FunctionSpace/TetEdgeBasis.cpp b/FunctionSpace/TetEdgeBasis.cpp
index ddcfefd9b9..f90eeeaba0 100644
--- a/FunctionSpace/TetEdgeBasis.cpp
+++ b/FunctionSpace/TetEdgeBasis.cpp
@@ -172,22 +172,16 @@ TetEdgeBasis::TetEdgeBasis(size_t order){
 
 
           // Type 1
-          basis[s][i] =
-            new vector<Polynomial>((u * v).gradient());
-
+          basis[s][i] = new vector<Polynomial>((u * v).gradient());
           i++;
 
           // Type 2
-          basis[s][i] =
-            new vector<Polynomial>(subGradUV);
-
+          basis[s][i] = new vector<Polynomial>(subGradUV);
           i++;
 
           // Type 3
           if(l1 == 1){
-            basis[s][i] =
-              new vector<Polynomial>(subGradL1L2V);
-
+            basis[s][i] = new vector<Polynomial>(subGradL1L2V);
             i++;
           }
         }
diff --git a/FunctionSpace/TriEdgeBasis.cpp b/FunctionSpace/TriEdgeBasis.cpp
index 516c055bc0..6066dcd7e1 100644
--- a/FunctionSpace/TriEdgeBasis.cpp
+++ b/FunctionSpace/TriEdgeBasis.cpp
@@ -51,6 +51,9 @@ TriEdgeBasis::TriEdgeBasis(size_t order){
       Polynomial(Polynomial(1, 0, 1, 0))
     };
 
+  // One //
+  Polynomial one(1, 0, 0, 0);
+
   // Basis //
   basis = new vector<Polynomial>**[nOrientation];
 
@@ -118,7 +121,7 @@ TriEdgeBasis::TriEdgeBasis(size_t order){
                                   lagrange[faceIdx[s][0][1]]);
         Polynomial v =
           lagrange[faceIdx[s][0][2]] *
-          legendre[l2].compose(lagrange[faceIdx[s][0][2]] * 2);
+          legendre[l2].compose(lagrange[faceIdx[s][0][2]] * 2 - one);
 
         // Preliminary Type 2
         vector<Polynomial> gradU = u.gradient();
@@ -164,22 +167,16 @@ TriEdgeBasis::TriEdgeBasis(size_t order){
 
 
         // Type 1
-        basis[s][i] =
-          new vector<Polynomial>((u * v).gradient());
-
+        basis[s][i] = new vector<Polynomial>((u * v).gradient());
         i++;
 
         // Type 2
-        basis[s][i] =
-          new vector<Polynomial>(subGradUV);
-
+        basis[s][i] = new vector<Polynomial>(subGradUV);
         i++;
 
         // Type 3
         if(l1 == 1){
-          basis[s][i] =
-            new vector<Polynomial>(subGradL1L2V);
-
+          basis[s][i] = new vector<Polynomial>(subGradL1L2V);
           i++;
         }
       }
-- 
GitLab