www.mooseframework.org
NSInitialCondition.C
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 // Navier-Stokes includes
11 #include "NS.h"
12 #include "NSInitialCondition.h"
13 
14 // FluidProperties includes
16 
17 // MOOSE includes
18 #include "MooseVariable.h"
19 
20 registerMooseObject("NavierStokesApp", NSInitialCondition);
21 
22 template <>
23 InputParameters
25 {
26  InputParameters params = validParams<InitialCondition>();
27  params.addClassDescription("NSInitialCondition sets intial constant values for all variables.");
28  params.addRequiredParam<Real>("initial_pressure",
29  "The initial pressure, assumed constant everywhere");
30  params.addRequiredParam<Real>("initial_temperature",
31  "The initial temperature, assumed constant everywhere");
32  params.addRequiredParam<RealVectorValue>("initial_velocity",
33  "The initial velocity, assumed constant everywhere");
34  params.addRequiredParam<UserObjectName>("fluid_properties",
35  "The name of the user object for fluid properties");
36 
37  return params;
38 }
39 
40 NSInitialCondition::NSInitialCondition(const InputParameters & parameters)
41  : InitialCondition(parameters),
42  _initial_pressure(getParam<Real>("initial_pressure")),
43  _initial_temperature(getParam<Real>("initial_temperature")),
44  _initial_velocity(getParam<RealVectorValue>("initial_velocity")),
45  _fp(getUserObject<IdealGasFluidProperties>("fluid_properties"))
46 {
47 }
48 
49 Real
50 NSInitialCondition::value(const Point & /*p*/)
51 {
52  const Real rho_initial = _fp.rho_from_p_T(_initial_pressure, _initial_temperature);
53 
54  // TODO: The internal energy could be computed by the IdealGasFluidProperties.
55  const Real e_initial = _fp.cv() * _initial_temperature;
56  const Real E_initial = e_initial + 0.5 * _initial_velocity.norm_sq();
57  const Real v_initial = 1. / rho_initial;
58 
59  if (_var.name() == NS::enthalpy)
60  return E_initial + _initial_pressure / rho_initial;
61 
62  if (_var.name() == NS::internal_energy)
63  return e_initial;
64 
65  if (_var.name() == NS::mach_number)
66  return _initial_velocity.norm() / _fp.c_from_v_e(v_initial, e_initial);
67 
68  if (_var.name() == NS::pressure)
69  return _initial_pressure;
70 
71  if (_var.name() == NS::density)
72  return rho_initial;
73 
74  if (_var.name() == NS::momentum_x)
75  return rho_initial * _initial_velocity(0);
76 
77  if (_var.name() == NS::momentum_y)
78  return rho_initial * _initial_velocity(1);
79 
80  if (_var.name() == NS::momentum_z)
81  return rho_initial * _initial_velocity(2);
82 
83  if (_var.name() == NS::total_energy)
84  return rho_initial * E_initial;
85 
86  if (_var.name() == NS::specific_volume)
87  return v_initial;
88 
89  if (_var.name() == NS::temperature)
90  return _initial_temperature;
91 
92  if (_var.name() == NS::velocity_x)
93  return _initial_velocity(0);
94 
95  if (_var.name() == NS::velocity_y)
96  return _initial_velocity(1);
97 
98  if (_var.name() == NS::velocity_z)
99  return _initial_velocity(2);
100 
101  // If we got here, then the variable name was not one of the ones we know about.
102  mooseError("Unrecognized variable: ", _var.name());
103  return 0.;
104 }
NS::velocity_x
const std::string velocity_x
Definition: NS.h:22
IdealGasFluidProperties.h
registerMooseObject
registerMooseObject("NavierStokesApp", NSInitialCondition)
NS::specific_volume
const std::string specific_volume
Definition: NS.h:30
NSInitialCondition::_fp
const IdealGasFluidProperties & _fp
Definition: NSInitialCondition.h:46
IdealGasFluidProperties
Ideal gas fluid properties Default parameters are for air at atmospheric pressure and temperature.
Definition: IdealGasFluidProperties.h:26
NS::velocity_y
const std::string velocity_y
Definition: NS.h:23
IdealGasFluidProperties::rho_from_p_T
virtual Real rho_from_p_T(Real p, Real T) const override
Definition: IdealGasFluidProperties.C:301
NS::velocity_z
const std::string velocity_z
Definition: NS.h:24
NS::momentum_y
const std::string momentum_y
Definition: NS.h:18
NS::mach_number
const std::string mach_number
Definition: NS.h:28
NSInitialCondition::_initial_temperature
Real _initial_temperature
Definition: NSInitialCondition.h:42
NS::density
const std::string density
Definition: NS.h:16
NS::enthalpy
const std::string enthalpy
Definition: NS.h:27
NS::momentum_z
const std::string momentum_z
Definition: NS.h:19
NS::momentum_x
const std::string momentum_x
Definition: NS.h:17
NSInitialCondition::_initial_velocity
RealVectorValue _initial_velocity
Definition: NSInitialCondition.h:43
NS::internal_energy
const std::string internal_energy
Definition: NS.h:29
validParams< NSInitialCondition >
InputParameters validParams< NSInitialCondition >()
Definition: NSInitialCondition.C:24
NSInitialCondition
NSInitialCondition sets intial constant values for all variables given the: .) Initial pressure ....
Definition: NSInitialCondition.h:30
NS.h
NSInitialCondition.h
IdealGasFluidProperties::c_from_v_e
virtual Real c_from_v_e(Real v, Real e) const override
Definition: IdealGasFluidProperties.C:111
NS::temperature
const std::string temperature
Definition: NS.h:26
IdealGasFluidProperties::cv
virtual Real cv() const
Definition: IdealGasFluidProperties.h:118
NSInitialCondition::NSInitialCondition
NSInitialCondition(const InputParameters &parameters)
Definition: NSInitialCondition.C:40
NSInitialCondition::value
virtual Real value(const Point &p)
The value of the variable at a point.
Definition: NSInitialCondition.C:50
NSInitialCondition::_initial_pressure
Real _initial_pressure
Definition: NSInitialCondition.h:41
NS::total_energy
const std::string total_energy
Definition: NS.h:20
NS::pressure
const std::string pressure
Definition: NS.h:25