www.mooseframework.org
NSIntegratedBC.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 "NSIntegratedBC.h"
13 
14 // FluidProperties includes
16 
17 // MOOSE includes
18 #include "MooseMesh.h"
19 
20 template <>
21 InputParameters
23 {
24  InputParameters params = validParams<IntegratedBC>();
25 
26  params.addClassDescription("This class couples together all the variables for the compressible "
27  "Navier-Stokes equations to allow them to be used in derived "
28  "IntegratedBC classes.");
29 
30  params.addRequiredCoupledVar(NS::velocity_x, "x-velocity");
31  params.addCoupledVar(NS::velocity_y, "y-velocity"); // only required in >= 2D
32  params.addCoupledVar(NS::velocity_z, "z-velocity"); // only required in 3D
33 
34  params.addRequiredCoupledVar(NS::density, "density");
35  params.addRequiredCoupledVar(NS::momentum_x, "x-momentum");
36  params.addCoupledVar(NS::momentum_y, "y-momentum"); // only required in >= 2D
37  params.addCoupledVar(NS::momentum_z, "z-momentum"); // only required in 3D
38  params.addRequiredCoupledVar(NS::total_energy, "total energy");
39  params.addRequiredParam<UserObjectName>("fluid_properties",
40  "The name of the user object for fluid properties");
41  params.addParam<Real>("specified_pressure", 0.0, "The specified pressure for this boundary");
42 
43  return params;
44 }
45 
46 NSIntegratedBC::NSIntegratedBC(const InputParameters & parameters)
47  : IntegratedBC(parameters),
48  _u_vel(coupledValue(NS::velocity_x)),
49  _v_vel(_mesh.dimension() >= 2 ? coupledValue(NS::velocity_y) : _zero),
50  _w_vel(_mesh.dimension() == 3 ? coupledValue(NS::velocity_z) : _zero),
51 
52  _rho(coupledValue(NS::density)),
53  _rho_u(coupledValue(NS::momentum_x)),
54  _rho_v(_mesh.dimension() >= 2 ? coupledValue(NS::momentum_y) : _zero),
55  _rho_w(_mesh.dimension() == 3 ? coupledValue(NS::momentum_z) : _zero),
56  _rho_E(coupledValue(NS::total_energy)),
57 
58  _grad_rho(coupledGradient(NS::density)),
59  _grad_rho_u(coupledGradient(NS::momentum_x)),
60  _grad_rho_v(_mesh.dimension() >= 2 ? coupledGradient(NS::momentum_y) : _grad_zero),
61  _grad_rho_w(_mesh.dimension() == 3 ? coupledGradient(NS::momentum_z) : _grad_zero),
62  _grad_rho_E(coupledGradient(NS::total_energy)),
63 
64  // Variable numberings
65  _rho_var_number(coupled(NS::density)),
66  _rhou_var_number(coupled(NS::momentum_x)),
67  _rhov_var_number(_mesh.dimension() >= 2 ? coupled(NS::momentum_y) : libMesh::invalid_uint),
68  _rhow_var_number(_mesh.dimension() == 3 ? coupled(NS::momentum_z) : libMesh::invalid_uint),
69  _rhoE_var_number(coupled(NS::total_energy)),
70 
71  _dynamic_viscosity(getMaterialProperty<Real>("dynamic_viscosity")),
72  _viscous_stress_tensor(getMaterialProperty<RealTensorValue>("viscous_stress_tensor")),
73 
74  // FluidProperties UserObject
75  _fp(getUserObject<IdealGasFluidProperties>("fluid_properties"))
76 {
77 }
78 
79 bool
81 {
82  if (var == _rho_var_number || var == _rhou_var_number || var == _rhov_var_number ||
83  var == _rhow_var_number || var == _rhoE_var_number)
84  return true;
85  else
86  return false;
87 }
88 
89 unsigned
91 {
92  // Convert the Moose numbering to:
93  // 0 for rho
94  // 1 for rho*u
95  // 2 for rho*v
96  // 3 for rho*w
97  // 4 for rho*e
98  // regardless of the problem dimension, etc.
99  unsigned int mapped_var_number;
100 
101  if (var == _rho_var_number)
102  mapped_var_number = 0;
103  else if (var == _rhou_var_number)
104  mapped_var_number = 1;
105  else if (var == _rhov_var_number)
106  mapped_var_number = 2;
107  else if (var == _rhow_var_number)
108  mapped_var_number = 3;
109  else if (var == _rhoE_var_number)
110  mapped_var_number = 4;
111  else
112  mooseError("Invalid var!");
113 
114  return mapped_var_number;
115 }
NS::velocity_x
const std::string velocity_x
Definition: NS.h:22
NSIntegratedBC::mapVarNumber
unsigned mapVarNumber(unsigned var)
Definition: NSIntegratedBC.C:90
NSIntegratedBC::_rhov_var_number
unsigned _rhov_var_number
Definition: NSIntegratedBC.h:53
IdealGasFluidProperties.h
IdealGasFluidProperties
Ideal gas fluid properties Default parameters are for air at atmospheric pressure and temperature.
Definition: IdealGasFluidProperties.h:26
libMesh
Definition: RANFSNormalMechanicalContact.h:24
NS::velocity_y
const std::string velocity_y
Definition: NS.h:23
NS::velocity_z
const std::string velocity_z
Definition: NS.h:24
NSIntegratedBC::isNSVariable
bool isNSVariable(unsigned var)
Definition: NSIntegratedBC.C:80
NS::momentum_y
const std::string momentum_y
Definition: NS.h:18
NSIntegratedBC::_rho_var_number
unsigned _rho_var_number
Definition: NSIntegratedBC.h:51
NS
Definition: NS.h:14
NSIntegratedBC::NSIntegratedBC
NSIntegratedBC(const InputParameters &parameters)
Definition: NSIntegratedBC.C:46
NS::density
const std::string density
Definition: NS.h:16
NSIntegratedBC::_rhoE_var_number
unsigned _rhoE_var_number
Definition: NSIntegratedBC.h:55
NS::momentum_z
const std::string momentum_z
Definition: NS.h:19
NSIntegratedBC::_rhou_var_number
unsigned _rhou_var_number
Definition: NSIntegratedBC.h:52
NS::momentum_x
const std::string momentum_x
Definition: NS.h:17
NS.h
NSIntegratedBC::_rhow_var_number
unsigned _rhow_var_number
Definition: NSIntegratedBC.h:54
validParams< NSIntegratedBC >
InputParameters validParams< NSIntegratedBC >()
Definition: NSIntegratedBC.C:22
NSIntegratedBC.h
NS::total_energy
const std::string total_energy
Definition: NS.h:20