From ecabe67175898fda0a1c650df5da1cb35d8c2348 Mon Sep 17 00:00:00 2001
From: labourasse <labourassee@gmail.com>
Date: Tue, 26 Jul 2022 18:47:54 +0200
Subject: [PATCH] Fix a bug for the integration on triangles

---
 src/analysis/PolynomialP.hpp      | 2 +-
 src/analysis/TaylorPolynomial.hpp | 2 +-
 tests/test_PolynomialP.cpp        | 1 +
 tests/test_TaylorPolynomial.cpp   | 1 +
 4 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/analysis/PolynomialP.hpp b/src/analysis/PolynomialP.hpp
index 26f86c7b0..8b8bdb512 100644
--- a/src/analysis/PolynomialP.hpp
+++ b/src/analysis/PolynomialP.hpp
@@ -614,7 +614,7 @@ integrate(const PolynomialP<N, Dimension> Q, const std::array<TinyVector<Dimensi
       for (size_t i = 1; i < weight_list.size(); ++i) {
         value += weight_list[i] * Q(t(point_list[i]));
       }
-      integral = value;
+      integral = t.jacobianDeterminant() * value;
     } else {
       const QuadratureFormula<2>& lN = QuadratureManager::instance().getSquareFormula(GaussQuadratureDescriptor(N));
       auto point_list                = lN.pointList();
diff --git a/src/analysis/TaylorPolynomial.hpp b/src/analysis/TaylorPolynomial.hpp
index 3ff932327..ff417f143 100644
--- a/src/analysis/TaylorPolynomial.hpp
+++ b/src/analysis/TaylorPolynomial.hpp
@@ -641,7 +641,7 @@ integrate(const TaylorPolynomial<N, Dimension> Q, const std::array<TinyVector<Di
       for (size_t i = 1; i < weight_list.size(); ++i) {
         value += weight_list[i] * Q(t(point_list[i]));
       }
-      integral = value;
+      integral = t.jacobianDeterminant() * value;
     } else {
       const QuadratureFormula<2>& lN = QuadratureManager::instance().getSquareFormula(GaussQuadratureDescriptor(N));
       auto point_list                = lN.pointList();
diff --git a/tests/test_PolynomialP.cpp b/tests/test_PolynomialP.cpp
index 3ab52b3da..d791b0d0b 100644
--- a/tests/test_PolynomialP.cpp
+++ b/tests/test_PolynomialP.cpp
@@ -189,6 +189,7 @@ TEST_CASE("PolynomialP", "[analysis]")
     for (size_t i = 1; i < weight_list2.size(); ++i) {
       value2 += weight_list2[i] * p1(t(point_list2[i]));
     }
+    value2 *= t.jacobianDeterminant();
     const QuadratureFormula<1>& l1 = QuadratureManager::instance().getLineFormula(GaussQuadratureDescriptor(2));
     const LineTransformation<2> u{positions4[0], positions4[1]};
     double value4 = 0.;
diff --git a/tests/test_TaylorPolynomial.cpp b/tests/test_TaylorPolynomial.cpp
index eec530eaf..41ba9d4b4 100644
--- a/tests/test_TaylorPolynomial.cpp
+++ b/tests/test_TaylorPolynomial.cpp
@@ -199,6 +199,7 @@ TEST_CASE("TaylorPolynomial", "[analysis]")
     for (size_t i = 1; i < weight_list2.size(); ++i) {
       value2 += weight_list2[i] * p1(t(point_list2[i]));
     }
+    value2 *= t.jacobianDeterminant();
     const QuadratureFormula<1>& l1 = QuadratureManager::instance().getLineFormula(GaussQuadratureDescriptor(2));
     const LineTransformation<2> u{positions4[0], positions4[1]};
     double value4 = 0.;
-- 
GitLab