https://mooseframework.inl.gov
VolumeJunction1PhaseIC.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 "VolumeJunction1PhaseIC.h"
11 #include "Function.h"
13 
14 registerMooseObject("ThermalHydraulicsApp", VolumeJunction1PhaseIC);
15 
18 {
20  MooseEnum quantity("rhoV rhouV rhovV rhowV rhoEV p T vel");
21  params.addRequiredParam<MooseEnum>("quantity", quantity, "Which quantity to compute");
22  params.addRequiredParam<FunctionName>("initial_p", "Initial pressure [Pa]");
23  params.addRequiredParam<FunctionName>("initial_T", "Initial temperature [K]");
24  params.addRequiredParam<FunctionName>("initial_vel_x", "Initial velocity in x-direction [m/s]");
25  params.addRequiredParam<FunctionName>("initial_vel_y", "Initial velocity in y-direction [m/s]");
26  params.addRequiredParam<FunctionName>("initial_vel_z", "Initial velocity in z-direction [m/s]");
27  params.addRequiredParam<Real>("volume", "Volume of the junction [m^3]");
28  params.addRequiredParam<Point>("position", "Spatial position of the center of the junction [m]");
29  params.addRequiredParam<UserObjectName>("fluid_properties", "SinglePhaseFluidProperties object");
30  params.addClassDescription("IC for junction variables in VolumeJunction1Phase.");
31  return params;
32 }
33 
35  : InitialCondition(parameters),
36  _quantity(getParam<MooseEnum>("quantity").getEnum<Quantity>()),
37  _p_fn(getFunction("initial_p")),
38  _T_fn(getFunction("initial_T")),
39  _vel_x_fn(getFunction("initial_vel_x")),
40  _vel_y_fn(getFunction("initial_vel_y")),
41  _vel_z_fn(getFunction("initial_vel_z")),
42  _volume(getParam<Real>("volume")),
43  _position(getParam<Point>("position")),
44  _fp(getUserObject<SinglePhaseFluidProperties>("fluid_properties"))
45 {
46 }
47 
48 Real
49 VolumeJunction1PhaseIC::value(const Point & /*p*/)
50 {
51  const Real p = _p_fn.value(_t, _position);
52  const Real T = _T_fn.value(_t, _position);
53  const Real vel_x = _vel_x_fn.value(_t, _position);
54  const Real vel_y = _vel_y_fn.value(_t, _position);
55  const Real vel_z = _vel_z_fn.value(_t, _position);
56 
57  const Real rho = _fp.rho_from_p_T(p, T);
58  const RealVectorValue vel(vel_x, vel_y, vel_z);
59  const Real E = _fp.e_from_p_rho(p, rho) + 0.5 * vel * vel;
60 
61  switch (_quantity)
62  {
63  case Quantity::RHOV:
64  return rho * _volume;
65  break;
66  case Quantity::RHOUV:
67  return rho * vel_x * _volume;
68  break;
69  case Quantity::RHOVV:
70  return rho * vel_y * _volume;
71  break;
72  case Quantity::RHOWV:
73  return rho * vel_z * _volume;
74  break;
75  case Quantity::RHOEV:
76  return rho * E * _volume;
77  break;
78  case Quantity::P:
79  return p;
80  break;
81  case Quantity::T:
82  return T;
83  break;
84  case Quantity::VEL:
85  return vel.norm();
86  break;
87  default:
88  mooseError("Invalid 'quantity' parameter.");
89  }
90 }
const Function & _T_fn
Temperature.
virtual Real value(const Point &p) override
static InputParameters validParams()
const Function & _vel_y_fn
Y velocity.
const Quantity _quantity
Which quantity to compute.
const SinglePhaseFluidProperties & _fp
Fluid properties.
void addRequiredParam(const std::string &name, const std::string &doc_string)
const Function & _vel_x_fn
X velocity.
const Real _volume
Volume of the junction.
VolumeJunction1PhaseIC(const InputParameters &parameters)
Common class for single phase fluid properties.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
registerMooseObject("ThermalHydraulicsApp", VolumeJunction1PhaseIC)
const Point & _position
Spatial position of center of the junction.
const Function & _vel_z_fn
Z velocity.
void mooseError(Args &&... args) const
void addClassDescription(const std::string &doc_string)
IC for junction variables in VolumeJunction1Phase.
virtual Real value(Real t, const Point &p) const
static InputParameters validParams()
const Function & _p_fn
Pressure.