https://mooseframework.inl.gov
fluid_properties
test
include
utils
SinglePhaseFluidPropertiesTestUtils.h
Go to the documentation of this file.
1
//* This file is part of the MOOSE framework
2
//* https://mooseframework.inl.gov
3
//*
4
//* All rights reserved, see COPYRIGHT for full restrictions
5
//* https://github.com/idaholab/moose/blob/master/COPYRIGHT
6
//*
7
//* Licensed under LGPL 2.1, please see LICENSE for details
8
//* https://www.gnu.org/licenses/lgpl-2.1.html
9
10
#pragma once
11
12
#include "
FluidPropertiesTestUtils.h
"
13
14
// Relative perturbation for derivative tests
15
#define REL_PERTURBATION 1e-6
16
17
// Macro for performing a derivative test with a custom perturbation
18
#define DERIV_TEST_CUSTOM_PERTURBATION(f, a, b, tol, rel_pert) \
19
{ \
20
const Real da = rel_pert * a; \
21
const Real db = rel_pert * b; \
22
const Real df_da_fd = (f(a + da, b) - f(a - da, b)) / (2 * da); \
23
const Real df_db_fd = (f(a, b + db) - f(a, b - db)) / (2 * db); \
24
Real f_value, df_da, df_db; \
25
f(a, b, f_value, df_da, df_db); \
26
REL_TEST(f(a, b), f_value, REL_TOL_CONSISTENCY); \
27
REL_TEST(df_da, df_da_fd, tol); \
28
REL_TEST(df_db, df_db_fd, tol); \
29
}
30
31
#define AD_DERIV_TEST_CUSTOM_PERTURBATION(f, a, b, tol, rel_pert) \
32
{ \
33
const ADReal da = rel_pert * a; \
34
const ADReal db = rel_pert * b; \
35
const ADReal df_da_fd = (f(a + da, b) - f(a - da, b)) / (2 * da); \
36
const ADReal df_db_fd = (f(a, b + db) - f(a, b - db)) / (2 * db); \
37
ADReal f_value, df_da, df_db; \
38
f(a, b, f_value, df_da, df_db); \
39
REL_TEST(f(a, b), f_value, REL_TOL_CONSISTENCY); \
40
REL_TEST(df_da, df_da_fd, tol); \
41
REL_TEST(df_db, df_db_fd, tol); \
42
}
43
44
// Macro for performing a derivative test
45
#define DERIV_TEST(f, a, b, tol) \
46
{ \
47
DERIV_TEST_CUSTOM_PERTURBATION(f, a, b, tol, REL_PERTURBATION); \
48
}
49
50
// Macro for performing a derivative test
51
#define AD_DERIV_TEST(f, a, b, tol) \
52
{ \
53
AD_DERIV_TEST_CUSTOM_PERTURBATION(f, a, b, tol, REL_PERTURBATION); \
54
}
55
56
// Macro for performing a derivative test (1d function)
57
#define DERIV_TEST_1D(f, dfda, a, tol) \
58
{ \
59
const Real da = REL_PERTURBATION * a; \
60
const Real df_da_fd = (f(a + da) - f(a - da)) / (2 * da); \
61
Real df_da = dfda(a); \
62
REL_TEST(df_da, df_da_fd, tol); \
63
}
64
65
// Macro for testing that a "not implemented" error message is thrown for f(a,b)
66
#define NOT_IMPLEMENTED_TEST_VALUE(f) \
67
{ \
68
try \
69
{ \
70
f(0, 0); \
71
} \
72
catch (const std::exception & x) \
73
{ \
74
std::string msg(x.what()); \
75
EXPECT_TRUE(msg.find("not implemented") != std::string::npos); \
76
} \
77
}
78
79
// Macro for testing that a "not implemented" error message is thrown for f(a,b,c,d,e)
80
#define NOT_IMPLEMENTED_TEST_DERIV(f) \
81
{ \
82
try \
83
{ \
84
Real f_val, df_da, df_db; \
85
f(0, 0, f_val, df_da, df_db); \
86
} \
87
catch (const std::exception & x) \
88
{ \
89
std::string msg(x.what()); \
90
EXPECT_TRUE(msg.find("not implemented") != std::string::npos); \
91
} \
92
}
FluidPropertiesTestUtils.h
Generated on Fri Jul 18 2025 13:42:52 for https://mooseframework.inl.gov by
1.8.14