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 492 : NSIntegratedBC::validParams() 22 : { 23 492 : InputParameters params = IntegratedBC::validParams(); 24 : 25 492 : 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 492 : params.addRequiredCoupledVar(NS::velocity_x, "x-velocity"); 30 492 : params.addCoupledVar(NS::velocity_y, "y-velocity"); // only required in >= 2D 31 492 : params.addCoupledVar(NS::velocity_z, "z-velocity"); // only required in 3D 32 : 33 492 : params.addRequiredCoupledVar(NS::density, "density"); 34 492 : params.addRequiredCoupledVar(NS::momentum_x, "x-momentum"); 35 492 : params.addCoupledVar(NS::momentum_y, "y-momentum"); // only required in >= 2D 36 492 : params.addCoupledVar(NS::momentum_z, "z-momentum"); // only required in 3D 37 492 : params.addRequiredCoupledVar(NS::total_energy_density, "total energy"); 38 984 : params.addRequiredParam<UserObjectName>("fluid_properties", 39 : "The name of the user object for fluid properties"); 40 984 : params.addParam<Real>("specified_pressure", 0.0, "The specified pressure for this boundary"); 41 : 42 492 : return params; 43 0 : } 44 : 45 264 : NSIntegratedBC::NSIntegratedBC(const InputParameters & parameters) 46 : : IntegratedBC(parameters), 47 528 : _u_vel(coupledValue(NS::velocity_x)), 48 264 : _v_vel(_mesh.dimension() >= 2 ? coupledValue(NS::velocity_y) : _zero), 49 264 : _w_vel(_mesh.dimension() == 3 ? coupledValue(NS::velocity_z) : _zero), 50 : 51 264 : _rho(coupledValue(NS::density)), 52 264 : _rho_u(coupledValue(NS::momentum_x)), 53 264 : _rho_v(_mesh.dimension() >= 2 ? coupledValue(NS::momentum_y) : _zero), 54 264 : _rho_w(_mesh.dimension() == 3 ? coupledValue(NS::momentum_z) : _zero), 55 264 : _rho_et(coupledValue(NS::total_energy_density)), 56 : 57 264 : _grad_rho(coupledGradient(NS::density)), 58 264 : _grad_rho_u(coupledGradient(NS::momentum_x)), 59 264 : _grad_rho_v(_mesh.dimension() >= 2 ? coupledGradient(NS::momentum_y) : _grad_zero), 60 264 : _grad_rho_w(_mesh.dimension() == 3 ? coupledGradient(NS::momentum_z) : _grad_zero), 61 264 : _grad_rho_et(coupledGradient(NS::total_energy_density)), 62 : 63 : // Variable numberings 64 264 : _rho_var_number(coupled(NS::density)), 65 264 : _rhou_var_number(coupled(NS::momentum_x)), 66 264 : _rhov_var_number(_mesh.dimension() >= 2 ? coupled(NS::momentum_y) : libMesh::invalid_uint), 67 264 : _rhow_var_number(_mesh.dimension() == 3 ? coupled(NS::momentum_z) : libMesh::invalid_uint), 68 264 : _rho_et_var_number(coupled(NS::total_energy_density)), 69 : 70 528 : _dynamic_viscosity(getMaterialProperty<Real>("dynamic_viscosity")), 71 528 : _viscous_stress_tensor(getMaterialProperty<RealTensorValue>("viscous_stress_tensor")), 72 : 73 : // FluidProperties UserObject 74 528 : _fp(getUserObject<IdealGasFluidProperties>("fluid_properties")) 75 : { 76 264 : } 77 : 78 : bool 79 3354624 : NSIntegratedBC::isNSVariable(unsigned var) 80 : { 81 3354624 : if (var == _rho_var_number || var == _rhou_var_number || var == _rhov_var_number || 82 1048320 : var == _rhow_var_number || var == _rho_et_var_number) 83 : return true; 84 : else 85 0 : return false; 86 : } 87 : 88 : unsigned 89 3354624 : 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 3354624 : if (var == _rho_var_number) 101 : mapped_var_number = 0; 102 2306304 : else if (var == _rhou_var_number) 103 : mapped_var_number = 1; 104 1677312 : else if (var == _rhov_var_number) 105 : mapped_var_number = 2; 106 1048320 : else if (var == _rhow_var_number) 107 : mapped_var_number = 3; 108 1048320 : else if (var == _rho_et_var_number) 109 : mapped_var_number = 4; 110 : else 111 0 : mooseError("Invalid var!"); 112 : 113 3354624 : return mapped_var_number; 114 : }