Line data Source code
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 15 : #include "IdealGasFluidProperties.h" 16 : 17 : // MOOSE includes 18 : #include "MooseMesh.h" 19 : 20 : namespace nms = NS; 21 : 22 : InputParameters 23 328 : NSKernel::validParams() 24 : { 25 328 : InputParameters params = Kernel::validParams(); 26 328 : 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 328 : params.addRequiredCoupledVar(nms::velocity_x, "x-velocity"); 30 328 : params.addCoupledVar(nms::velocity_y, "y-velocity"); // only required in 2D and 3D 31 328 : params.addCoupledVar(nms::velocity_z, "z-velocity"); // only required in 3D 32 328 : params.addRequiredCoupledVar(nms::density, "density"); 33 328 : params.addRequiredCoupledVar(nms::momentum_x, "x-momentum"); 34 328 : params.addCoupledVar(nms::momentum_y, "y-momentum"); // only required in 2D and 3D 35 328 : params.addCoupledVar(nms::momentum_z, "z-momentum"); // only required in 3D 36 328 : params.addRequiredCoupledVar(nms::total_energy_density, "total energy density"); 37 656 : params.addRequiredParam<UserObjectName>("fluid_properties", 38 : "The name of the user object for fluid properties"); 39 328 : return params; 40 0 : } 41 : 42 176 : NSKernel::NSKernel(const InputParameters & parameters) 43 : : Kernel(parameters), 44 : // Coupled variables 45 352 : _u_vel(coupledValue(nms::velocity_x)), 46 176 : _v_vel(_mesh.dimension() >= 2 ? coupledValue(nms::velocity_y) : _zero), 47 176 : _w_vel(_mesh.dimension() == 3 ? coupledValue(nms::velocity_z) : _zero), 48 : 49 176 : _rho(coupledValue(nms::density)), 50 176 : _rho_u(coupledValue(nms::momentum_x)), 51 176 : _rho_v(_mesh.dimension() >= 2 ? coupledValue(nms::momentum_y) : _zero), 52 176 : _rho_w(_mesh.dimension() == 3 ? coupledValue(nms::momentum_z) : _zero), 53 176 : _rho_et(coupledValue(nms::total_energy_density)), 54 : 55 : // Gradients 56 176 : _grad_rho(coupledGradient(nms::density)), 57 176 : _grad_rho_u(coupledGradient(nms::momentum_x)), 58 176 : _grad_rho_v(_mesh.dimension() >= 2 ? coupledGradient(nms::momentum_y) : _grad_zero), 59 176 : _grad_rho_w(_mesh.dimension() == 3 ? coupledGradient(nms::momentum_z) : _grad_zero), 60 176 : _grad_rho_et(coupledGradient(nms::total_energy_density)), 61 : 62 : // Variable numberings 63 176 : _rho_var_number(coupled(nms::density)), 64 176 : _rhou_var_number(coupled(nms::momentum_x)), 65 176 : _rhov_var_number(_mesh.dimension() >= 2 ? coupled(nms::momentum_y) : libMesh::invalid_uint), 66 176 : _rhow_var_number(_mesh.dimension() == 3 ? coupled(nms::momentum_z) : libMesh::invalid_uint), 67 176 : _rho_et_var_number(coupled(nms::total_energy_density)), 68 : 69 : // Material properties 70 352 : _dynamic_viscosity(getMaterialProperty<Real>("dynamic_viscosity")), 71 352 : _viscous_stress_tensor(getMaterialProperty<RealTensorValue>("viscous_stress_tensor")), 72 : 73 : // FluidProperties UserObject 74 352 : _fp(getUserObject<IdealGasFluidProperties>("fluid_properties")) 75 : { 76 176 : } 77 : 78 : bool 79 93929472 : NSKernel::isNSVariable(unsigned var) 80 : { 81 93929472 : if (var == _rho_var_number || var == _rhou_var_number || var == _rhov_var_number || 82 23482368 : var == _rhow_var_number || var == _rho_et_var_number) 83 : return true; 84 : else 85 0 : return false; 86 : } 87 : 88 : unsigned 89 83865600 : NSKernel::mapVarNumber(unsigned var) 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 83865600 : if (var == _rho_var_number) 101 : mapped_var_number = 0; 102 63737856 : else if (var == _rhou_var_number) 103 : mapped_var_number = 1; 104 43610112 : else if (var == _rhov_var_number) 105 : mapped_var_number = 2; 106 23482368 : else if (var == _rhow_var_number) 107 : mapped_var_number = 3; 108 23482368 : else if (var == _rho_et_var_number) 109 : mapped_var_number = 4; 110 : else 111 0 : mooseError("Invalid var!"); 112 : 113 83865600 : return mapped_var_number; 114 : }