https://mooseframework.inl.gov
Loading...
Searching...
No Matches
FlowModelGasMixIC.C
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#include "FlowModelGasMixIC.h"
11#include "Function.h"
13#include "THMIndicesGasMix.h"
14
15registerMooseObject("ThermalHydraulicsApp", FlowModelGasMixIC);
16
19{
21
22 MooseEnum quantity("rho rhoEA");
23 params.addRequiredParam<MooseEnum>("quantity", quantity, "Quantity to compute");
24
25 params.addRequiredParam<FunctionName>("mass_fraction", "Secondary gas mass fraction function");
26 params.addRequiredParam<FunctionName>("pressure", "Pressure function");
27 params.addRequiredParam<FunctionName>("temperature", "Temperature function");
28 params.addRequiredParam<FunctionName>("velocity", "Velocity function");
29 params.addRequiredCoupledVar("area", "Cross-sectional area variable");
30
31 params.addRequiredParam<UserObjectName>("fluid_properties",
32 "The VaporMixtureFluidProperties object");
33
34 params.addClassDescription("IC for the solution variables of FlowModelGasMix.");
35
36 return params;
37}
38
40 : InitialCondition(parameters),
41 _quantity(getParam<MooseEnum>("quantity").getEnum<Quantity>()),
42 _xi(getFunction("mass_fraction")),
43 _p(getFunction("pressure")),
44 _T(getFunction("temperature")),
45 _vel(getFunction("velocity")),
46 _area(coupledValue("area")),
47 _fp(getUserObject<VaporMixtureFluidProperties>("fluid_properties"))
48{
49}
50
51Real
52FlowModelGasMixIC::value(const Point & pt)
53{
54 const auto xi = _xi.value(_t, pt);
55 const auto p = _p.value(_t, pt);
56 const auto T = _T.value(_t, pt);
57
58 const auto v = _fp.v_from_p_T(p, T, {xi});
59 const auto rho = 1.0 / v;
60
61 switch (_quantity)
62 {
64 {
65 return rho;
66 break;
67 }
68 case Quantity::RHOEA:
69 {
70 const auto vel = _vel.value(_t, pt);
71 const auto e = _fp.e_from_p_T(p, T, {xi});
72 const auto E = e + 0.5 * vel * vel;
73 return rho * E * _area[_qp];
74 break;
75 }
76 default:
77 mooseAssert(false, "Invalid 'quantity' parameter.");
78 return 0;
79 }
80}
registerMooseObject("ThermalHydraulicsApp", FlowModelGasMixIC)
const Real p
const double rho
const double T
const double v
Point xi
IC for various variables for FlowModelGasMix.
FlowModelGasMixIC(const InputParameters &parameters)
const Function & _xi
Secondary gas mass fraction.
static InputParameters validParams()
const Function & _vel
Velocity.
Quantity
Quantity type.
const VaporMixtureFluidProperties & _fp
Fluid properties.
const VariableValue & _area
Cross-sectional area.
virtual Real value(const Point &p) override
const Function & _p
Pressure.
const Function & _T
Temperature.
const Quantity _quantity
Which quantity to compute.
virtual Real value(Real t, const Point &p) const
static InputParameters validParams()
void addRequiredCoupledVar(const std::string &name, const std::string &doc_string)
void addRequiredParam(const std::string &name, const std::string &doc_string)
void addClassDescription(const std::string &doc_string)
Base class for fluid properties of vapor mixtures.