https://mooseframework.inl.gov
Loading...
Searching...
No Matches
TabulatedBicubicFluidPropertiesTest.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 "MooseObjectUnitTest.h"
14#include "CO2FluidProperties.h"
16
18{
19public:
21 {
23 }
24
25protected:
27 {
28 // Reference fluid properties
29 InputParameters co2_uo_params = _factory.getValidParams("CO2FluidProperties");
30 _fe_problem->addUserObject("CO2FluidProperties", "co2_fp", co2_uo_params);
32
33 InputParameters idg_uo_params = _factory.getValidParams("IdealGasFluidProperties");
34 _fe_problem->addUserObject("IdealGasFluidProperties", "idg_fp", idg_uo_params);
36
37 // Tabulation in (p, T) built from another FluidProperties
38 InputParameters tab_uo_params = _factory.getValidParams("TabulatedBicubicFluidProperties");
39 tab_uo_params.set<UserObjectName>("input_fp") = "co2_fp";
40 _fe_problem->addUserObject("TabulatedBicubicFluidProperties", "tab_fp", tab_uo_params);
42
43 // Tabulation in (p, T) built from another FluidProperties, no p,T tabulation, only passthrough
44 // in p,T
45 InputParameters tab_uo_params_idg = _factory.getValidParams("TabulatedBicubicFluidProperties");
46 tab_uo_params_idg.set<UserObjectName>("input_fp") = "idg_fp";
47 tab_uo_params_idg.set<bool>("create_pT_interpolations") = true;
48 MultiMooseEnum properties_empty("density enthalpy internal_energy viscosity k cv cp entropy",
49 "");
50 tab_uo_params_idg.set<MultiMooseEnum>("interpolated_properties") = properties_empty;
51 _fe_problem->addUserObject(
52 "TabulatedBicubicFluidProperties", "tab_fp_pT_idg", tab_uo_params_idg);
55
56 // Tabulation in (v, e) built from loading a (p, T) tabulation
57 InputParameters tab_uo_ve_params = _factory.getValidParams("TabulatedBicubicFluidProperties");
58 tab_uo_ve_params.set<bool>("construct_pT_from_ve") = true;
59 tab_uo_ve_params.set<bool>("construct_pT_from_vh") = true;
60 tab_uo_ve_params.set<FileName>("fluid_property_file") = "data/csv/fluid_props.csv";
61 tab_uo_ve_params.set<Real>("T_initial_guess") = 450;
62 tab_uo_ve_params.set<Real>("p_initial_guess") = 1.5e6;
63 MultiMooseEnum properties("density enthalpy internal_energy viscosity k cv cp entropy",
64 "density enthalpy internal_energy viscosity k cv cp entropy");
65 tab_uo_ve_params.set<MultiMooseEnum>("interpolated_properties") = properties;
66 _fe_problem->addUserObject("TabulatedBicubicFluidProperties", "tab_fp_ve", tab_uo_ve_params);
68
69 // Tabulation in (p, T) built from another FluidProperties, specifically for testing generation
70 InputParameters tab_gen_uo_params = _factory.getValidParams("TabulatedBicubicFluidProperties");
71 tab_gen_uo_params.set<UserObjectName>("input_fp") = "co2_fp";
72 tab_gen_uo_params.set<Real>("temperature_min") = 400;
73 tab_gen_uo_params.set<Real>("temperature_max") = 500;
74 tab_gen_uo_params.set<Real>("pressure_min") = 1e6;
75 tab_gen_uo_params.set<Real>("pressure_max") = 2e6;
76 tab_gen_uo_params.set<unsigned int>("num_T") = 6;
77 tab_gen_uo_params.set<unsigned int>("num_p") = 6;
78 tab_gen_uo_params.set<MultiMooseEnum>("interpolated_properties") = properties;
79 _fe_problem->addUserObject(
80 "TabulatedBicubicFluidProperties", "tab_pT_from_fp_gen", tab_gen_uo_params);
83
84 // Tabulation in (v, e) built from another FluidProperties
85 InputParameters tab_direct_ve_params =
86 _factory.getValidParams("TabulatedBicubicFluidProperties");
87 // We use ideal gas as it has more (v,e) support than co2
88 tab_direct_ve_params.set<UserObjectName>("input_fp") = "idg_fp";
89 tab_direct_ve_params.set<MooseEnum>("out_of_bounds_behavior") = "set_to_closest_bound";
90 tab_direct_ve_params.set<bool>("create_pT_interpolations") = false;
91 tab_direct_ve_params.set<bool>("create_ve_interpolations") = true;
92 tab_direct_ve_params.set<Real>("temperature_min") = 400;
93 tab_direct_ve_params.set<Real>("temperature_max") = 500;
94 tab_direct_ve_params.set<Real>("pressure_min") = 1e6;
95 tab_direct_ve_params.set<Real>("pressure_max") = 2e6;
96 // set newton parameters for inversion
97 tab_direct_ve_params.set<Real>("T_initial_guess") = 450;
98 tab_direct_ve_params.set<Real>("p_initial_guess") = 1.5e6;
99 MultiMooseEnum properties_ve(
100 "density enthalpy viscosity k c cv cp entropy pressure temperature",
101 "density enthalpy viscosity k c cv cp entropy pressure temperature");
102 tab_direct_ve_params.set<MultiMooseEnum>("interpolated_properties") = properties_ve;
103 _fe_problem->addUserObject(
104 "TabulatedBicubicFluidProperties", "tab_direct_ve", tab_direct_ve_params);
106
107 // To test errors
108 InputParameters unordered_uo_params =
109 _factory.getValidParams("TabulatedBicubicFluidProperties");
110 unordered_uo_params.set<FileName>("fluid_property_file") = "data/csv/unordered_fluid_props.csv";
111 _fe_problem->addUserObject(
112 "TabulatedBicubicFluidProperties", "unordered_fp", unordered_uo_params);
114
115 InputParameters unequal_uo_params = _factory.getValidParams("TabulatedBicubicFluidProperties");
116 unequal_uo_params.set<FileName>("fluid_property_file") = "data/csv/unequal_fluid_props.csv";
117 _fe_problem->addUserObject("TabulatedBicubicFluidProperties", "unequal_fp", unequal_uo_params);
119
120 InputParameters missing_col_uo_params =
121 _factory.getValidParams("TabulatedBicubicFluidProperties");
122 missing_col_uo_params.set<FileName>("fluid_property_file") =
123 "data/csv/missing_col_fluid_props.csv";
124 _fe_problem->addUserObject(
125 "TabulatedBicubicFluidProperties", "missing_col_fp", missing_col_uo_params);
128
129 InputParameters unknown_col_uo_params =
130 _factory.getValidParams("TabulatedBicubicFluidProperties");
131 unknown_col_uo_params.set<FileName>("fluid_property_file") = "data/csv/unknown_fluid_props.csv";
132 _fe_problem->addUserObject(
133 "TabulatedBicubicFluidProperties", "unknown_col_fp", unknown_col_uo_params);
136
137 InputParameters missing_data_uo_params =
138 _factory.getValidParams("TabulatedBicubicFluidProperties");
139 missing_data_uo_params.set<FileName>("fluid_property_file") =
140 "data/csv/missing_data_fluid_props.csv";
141 _fe_problem->addUserObject(
142 "TabulatedBicubicFluidProperties", "missing_data_fp", missing_data_uo_params);
145 }
146
147 // For generating reference data
150
151 // For testing values
157
158 // These properties are for testing errors and warnings
164};
CO2 fluid properties Most thermophysical properties taken from: Span and Wagner, "A New Equation of S...
InputParameters getValidParams(const std::string &name) const
Ideal gas fluid properties Default parameters are for air at atmospheric pressure and temperature.
T & set(const std::string &name, bool quiet_mode=false)
std::shared_ptr< FEProblem > _fe_problem
const TabulatedBicubicFluidProperties * _unordered_fp
const TabulatedBicubicFluidProperties * _unknown_col_fp
const TabulatedBicubicFluidProperties * _tab_pT_from_fp_idg
const TabulatedBicubicFluidProperties * _tab_ve_from_pT
const TabulatedBicubicFluidProperties * _tab_pT_from_fp
const TabulatedBicubicFluidProperties * _tab_ve_from_fp
const TabulatedBicubicFluidProperties * _unequal_fp
const TabulatedBicubicFluidProperties * _missing_data_fp
const TabulatedBicubicFluidProperties * _missing_col_fp
const TabulatedBicubicFluidProperties * _tab_pT_from_fp_gen
Class for fluid properties read from a file.
const T & getUserObject(const std::string &param_name, bool is_dependency=true) const