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