Skip to content

Commit d6c57b9

Browse files
committed
Merge branch 'master' into 147-create-an-integrate_debug-function-which-could-generate-mtest-files-on-integration-errors
2 parents 991a9c7 + 725405e commit d6c57b9

1 file changed

Lines changed: 46 additions & 2 deletions

File tree

tests/TensorialFunctionTest.cxx

Lines changed: 46 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
#include "TFEL/Tests/TestCase.hxx"
1919
#include "TFEL/Tests/TestProxy.hxx"
2020
#include "TFEL/Tests/TestManager.hxx"
21+
#include "TFEL/Material/Lame.hxx"
2122
#include "MGIS/Function/BasicLinearSpace.hxx"
2223
#include "MGIS/Function/BasicLinearQuadratureSpace.hxx"
2324
#include "MGIS/Function/Function.hxx"
@@ -37,13 +38,15 @@ struct TensorialFunctionsTest final : public tfel::tests::TestCase {
3738
this->test2();
3839
this->test3();
3940
this->test4();
41+
this->test5();
4042
return this->result;
4143
}
4244

4345
private:
4446
static constexpr bool check_value(const mgis::real a,
45-
const mgis::real b) noexcept {
46-
constexpr auto eps = mgis::real{1e-12};
47+
const mgis::real b,
48+
const mgis::real eps = mgis::real{
49+
1e-12}) noexcept {
4750
auto local_abs = [](const mgis::real r) { return r > 0 ? r : -r; };
4851
return local_abs(a - b) < eps;
4952
} // end of check_value
@@ -140,6 +143,47 @@ struct TensorialFunctionsTest final : public tfel::tests::TestCase {
140143
TFEL_TESTS_STATIC_ASSERT(check_value((*values)[0], 1));
141144
TFEL_TESTS_STATIC_ASSERT(check_value((*values)[1], 1));
142145
TFEL_TESTS_STATIC_ASSERT(check_value((*values)[2], 1));
146+
#endif /* MGIS_DISABLE_CONSTEXPR_FUNCTION_TESTS */
147+
}
148+
void test5() {
149+
#ifndef MGIS_DISABLE_CONSTEXPR_FUNCTION_TESTS
150+
using namespace tfel::math;
151+
using namespace tfel::material;
152+
using namespace mgis;
153+
using namespace mgis::function;
154+
using mgis::real;
155+
constexpr auto E = real{150e9};
156+
constexpr auto nu = 0.3;
157+
constexpr auto l = computeLambda(E, nu);
158+
constexpr auto m = computeMu(E, nu);
159+
constexpr auto k = l + (2 * m) / 3;
160+
constexpr auto eps = E * real{1e-14};
161+
constexpr auto values = [&]() -> std::optional<std::array<real, 16>> {
162+
using Stensor4 = st2tost2<2u, real>;
163+
auto space = BasicLinearSpace{1};
164+
auto D = ST2toST2Function<BasicLinearSpace, 2u>{space};
165+
D(0) = k * Stensor4::IxI() + 2 * m * Stensor4::K();
166+
auto D_values = std::array<real, 16>{};
167+
std::copy(D.data().begin(), D.data().end(), D_values.begin());
168+
return D_values;
169+
}();
170+
TFEL_TESTS_STATIC_ASSERT(values.has_value());
171+
TFEL_TESTS_STATIC_ASSERT(check_value((*values)[0], l + 2 * m, eps));
172+
TFEL_TESTS_STATIC_ASSERT(check_value((*values)[1], l, eps));
173+
TFEL_TESTS_STATIC_ASSERT(check_value((*values)[2], l, eps));
174+
TFEL_TESTS_STATIC_ASSERT(check_value((*values)[3], 0, eps));
175+
TFEL_TESTS_STATIC_ASSERT(check_value((*values)[4], l, eps));
176+
TFEL_TESTS_STATIC_ASSERT(check_value((*values)[5], l + 2 * m, eps));
177+
TFEL_TESTS_STATIC_ASSERT(check_value((*values)[6], l, eps));
178+
TFEL_TESTS_STATIC_ASSERT(check_value((*values)[7], 0, eps));
179+
TFEL_TESTS_STATIC_ASSERT(check_value((*values)[8], l, eps));
180+
TFEL_TESTS_STATIC_ASSERT(check_value((*values)[9], l, eps));
181+
TFEL_TESTS_STATIC_ASSERT(check_value((*values)[10], l + 2 * m, eps));
182+
TFEL_TESTS_STATIC_ASSERT(check_value((*values)[11], 0, eps));
183+
TFEL_TESTS_STATIC_ASSERT(check_value((*values)[12], 0, eps));
184+
TFEL_TESTS_STATIC_ASSERT(check_value((*values)[13], 0, eps));
185+
TFEL_TESTS_STATIC_ASSERT(check_value((*values)[14], 0, eps));
186+
TFEL_TESTS_STATIC_ASSERT(check_value((*values)[15], 2 * m, eps));
143187
#endif /* MGIS_DISABLE_CONSTEXPR_FUNCTION_TESTS */
144188
}
145189
};

0 commit comments

Comments
 (0)