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