https://mooseframework.inl.gov
Loading...
Searching...
No Matches
VaporMixtureFluidPropertiesUtils.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
13
14// Macro for performing a derivative test
15#define VAPOR_MIX_DERIV_TEST(f, a, b, x, rel_tol) \
16 { \
17 const Real abs_tol = 1e-10; \
18 const Real da = REL_PERTURBATION * a; \
19 const Real db = REL_PERTURBATION * b; \
20 std::vector<Real> dx(x.size()); \
21 for (unsigned int i = 0; i < x.size(); ++i) \
22 dx[i] = REL_PERTURBATION * x[i]; \
23 const Real df_da_fd = (f(a + da, b, x) - f(a - da, b, x)) / (2 * da); \
24 const Real df_db_fd = (f(a, b + db, x) - f(a, b - db, x)) / (2 * db); \
25 std::vector<Real> df_dx_fd(x.size()); \
26 for (unsigned int i = 0; i < x.size(); ++i) \
27 { \
28 std::vector<Real> x_forward(x); \
29 x_forward[i] += dx[i]; \
30 std::vector<Real> x_backward(x); \
31 x_backward[i] -= dx[i]; \
32 df_dx_fd[i] = (f(a, b, x_forward) - f(a, b, x_backward)) / (2 * dx[i]); \
33 } \
34 Real f_value, df_da, df_db; \
35 std::vector<Real> df_dx(x.size()); \
36 f(a, b, x, f_value, df_da, df_db, df_dx); \
37 REL_ABS_TEST(f(a, b, x), f_value, REL_TOL_CONSISTENCY, abs_tol); \
38 REL_ABS_TEST(df_da, df_da_fd, rel_tol, abs_tol); \
39 REL_ABS_TEST(df_db, df_db_fd, rel_tol, abs_tol); \
40 for (unsigned int i = 0; i < x.size(); ++i) \
41 REL_ABS_TEST(df_dx[i], df_dx_fd[i], rel_tol, abs_tol); \
42 }