https://mooseframework.inl.gov
Loading...
Searching...
No Matches
NSKernel.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// Navier-Stokes includes
11#include "NS.h"
12#include "NSKernel.h"
13
14// FluidProperties includes
16
17// MOOSE includes
18#include "MooseMesh.h"
19
20namespace nms = NS;
21
24{
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 Kernel "
28 "classes.");
29 params.addRequiredCoupledVar(nms::velocity_x, "x-velocity");
30 params.addCoupledVar(nms::velocity_y, "y-velocity"); // only required in 2D and 3D
31 params.addCoupledVar(nms::velocity_z, "z-velocity"); // only required in 3D
32 params.addRequiredCoupledVar(nms::density, "density");
33 params.addRequiredCoupledVar(nms::momentum_x, "x-momentum");
34 params.addCoupledVar(nms::momentum_y, "y-momentum"); // only required in 2D and 3D
35 params.addCoupledVar(nms::momentum_z, "z-momentum"); // only required in 3D
36 params.addRequiredCoupledVar(nms::total_energy_density, "total energy density");
37 params.addRequiredParam<UserObjectName>("fluid_properties",
38 "The name of the user object for fluid properties");
39 return params;
40}
41
43 : Kernel(parameters),
44 // Coupled variables
45 _u_vel(coupledValue(nms::velocity_x)),
46 _v_vel(_mesh.dimension() >= 2 ? coupledValue(nms::velocity_y) : _zero),
47 _w_vel(_mesh.dimension() == 3 ? coupledValue(nms::velocity_z) : _zero),
48
49 _rho(coupledValue(nms::density)),
50 _rho_u(coupledValue(nms::momentum_x)),
51 _rho_v(_mesh.dimension() >= 2 ? coupledValue(nms::momentum_y) : _zero),
52 _rho_w(_mesh.dimension() == 3 ? coupledValue(nms::momentum_z) : _zero),
53 _rho_et(coupledValue(nms::total_energy_density)),
54
55 // Gradients
56 _grad_rho(coupledGradient(nms::density)),
57 _grad_rho_u(coupledGradient(nms::momentum_x)),
58 _grad_rho_v(_mesh.dimension() >= 2 ? coupledGradient(nms::momentum_y) : _grad_zero),
59 _grad_rho_w(_mesh.dimension() == 3 ? coupledGradient(nms::momentum_z) : _grad_zero),
60 _grad_rho_et(coupledGradient(nms::total_energy_density)),
61
62 // Variable numberings
63 _rho_var_number(coupled(nms::density)),
64 _rhou_var_number(coupled(nms::momentum_x)),
65 _rhov_var_number(_mesh.dimension() >= 2 ? coupled(nms::momentum_y) : libMesh::invalid_uint),
66 _rhow_var_number(_mesh.dimension() == 3 ? coupled(nms::momentum_z) : libMesh::invalid_uint),
67 _rho_et_var_number(coupled(nms::total_energy_density)),
68
69 // Material properties
70 _dynamic_viscosity(getMaterialProperty<Real>("dynamic_viscosity")),
71 _viscous_stress_tensor(getMaterialProperty<RealTensorValue>("viscous_stress_tensor")),
72
73 // FluidProperties UserObject
74 _fp(getUserObject<IdealGasFluidProperties>("fluid_properties"))
75{
76}
77
78bool
80{
81 if (var == _rho_var_number || var == _rhou_var_number || var == _rhov_var_number ||
82 var == _rhow_var_number || var == _rho_et_var_number)
83 return true;
84 else
85 return false;
86}
87
88unsigned
90{
91 // Convert the Moose numbering to:
92 // 0 for rho
93 // 1 for rho*u
94 // 2 for rho*v
95 // 3 for rho*w
96 // 4 for rho*e
97 // regardless of the problem dimension, etc.
98 unsigned mapped_var_number = 99;
99
100 if (var == _rho_var_number)
101 mapped_var_number = 0;
102 else if (var == _rhou_var_number)
103 mapped_var_number = 1;
104 else if (var == _rhov_var_number)
105 mapped_var_number = 2;
106 else if (var == _rhow_var_number)
107 mapped_var_number = 3;
108 else if (var == _rho_et_var_number)
109 mapped_var_number = 4;
110 else
111 mooseError("Invalid var!");
112
113 return mapped_var_number;
114}
Ideal gas fluid properties Default parameters are for air at atmospheric pressure and temperature.
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)
void addCoupledVar(const std::string &name, const std::string &doc_string)
static InputParameters validParams()
void mooseError(Args &&... args) const
unsigned mapVarNumber(unsigned var)
Definition NSKernel.C:89
bool isNSVariable(unsigned var)
Helper functions for mapping Moose variable numberings into the "canonical" numbering for the compres...
Definition NSKernel.C:79
static InputParameters validParams()
Definition NSKernel.C:23
unsigned _rhov_var_number
Definition NSKernel.h:54
unsigned _rhow_var_number
Definition NSKernel.h:55
unsigned _rho_var_number
Definition NSKernel.h:52
unsigned _rho_et_var_number
Definition NSKernel.h:56
unsigned _rhou_var_number
Definition NSKernel.h:53
NSKernel(const InputParameters &parameters)
Definition NSKernel.C:42
static const std::string density
Definition NS.h:34
static const std::string velocity_y
Definition NS.h:48
static const std::string total_energy_density
Definition NS.h:66
static const std::string momentum_x
Definition NS.h:36
static const std::string velocity_z
Definition NS.h:49
static const std::string momentum_y
Definition NS.h:37
static const std::string velocity_x
Definition NS.h:47
static const std::string momentum_z
Definition NS.h:38
The following methods are specializations for using the Parallel::packed_range_* routines for a vecto...