www.mooseframework.org
VaporMixtureFluidPropertiesUtils.h
Go to the documentation of this file.
1 //* This file is part of the MOOSE framework
2 //* https://www.mooseframework.org
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, tol) \
16  { \
17  const Real da = REL_PERTURBATION * a; \
18  const Real db = REL_PERTURBATION * b; \
19  std::vector<Real> dx(x.size()); \
20  for (unsigned int i = 0; i < x.size(); ++i) \
21  dx[i] = REL_PERTURBATION * x[i]; \
22  const Real df_da_fd = (f(a + da, b, x) - f(a - da, b, x)) / (2 * da); \
23  const Real df_db_fd = (f(a, b + db, x) - f(a, b - db, x)) / (2 * db); \
24  std::vector<Real> df_dx_fd(x.size()); \
25  for (unsigned int i = 0; i < x.size(); ++i) \
26  { \
27  std::vector<Real> x_forward(x); \
28  x_forward[i] += dx[i]; \
29  std::vector<Real> x_backward(x); \
30  x_backward[i] -= dx[i]; \
31  df_dx_fd[i] = (f(a, b, x_forward) - f(a, b, x_backward)) / (2 * dx[i]); \
32  } \
33  Real f_value, df_da, df_db; \
34  std::vector<Real> df_dx(x.size()); \
35  f(a, b, x, f_value, df_da, df_db, df_dx); \
36  REL_TEST(f(a, b, x), f_value, REL_TOL_CONSISTENCY); \
37  REL_TEST(df_da, df_da_fd, tol); \
38  REL_TEST(df_db, df_db_fd, tol); \
39  for (unsigned int i = 0; i < x.size(); ++i) \
40  REL_TEST(df_dx[i], df_dx_fd[i], tol); \
41  }
42 
SinglePhaseFluidPropertiesTestUtils.h