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 "ConservedVarValuesMaterial.h" 12 : #include "NS.h" 13 : #include "NavierStokesMethods.h" 14 : 15 : // FluidProperties includes 16 : #include "SinglePhaseFluidProperties.h" 17 : 18 : registerMooseObject("NavierStokesApp", ConservedVarValuesMaterial); 19 : 20 : InputParameters 21 1112 : ConservedVarValuesMaterial::validParams() 22 : { 23 1112 : auto params = Material::validParams(); 24 1112 : params.addRequiredParam<UserObjectName>(NS::fluid, "fluid userobject"); 25 1112 : params.addRequiredCoupledVar(NS::density, "density"); 26 1112 : params.addRequiredCoupledVar(NS::total_energy_density, "total fluid energy"); 27 1112 : params.addRequiredCoupledVar(NS::momentum_x, "The x-momentum"); 28 1112 : params.addCoupledVar(NS::momentum_y, "The y-momentum"); 29 1112 : params.addCoupledVar(NS::momentum_z, "The z-momentum"); 30 1112 : params.addClassDescription("Provides access to variables for a conserved variable set " 31 : "of density, total fluid energy, and momentum"); 32 1112 : return params; 33 0 : } 34 : 35 861 : ConservedVarValuesMaterial::ConservedVarValuesMaterial(const InputParameters & params) 36 : : Material(params), 37 1722 : _fluid(UserObjectInterface::getUserObject<SinglePhaseFluidProperties>(NS::fluid)), 38 861 : _var_rho(adCoupledValue(NS::density)), 39 861 : _var_rho_u(adCoupledValue(NS::momentum_x)), 40 861 : _var_rho_v(isCoupled(NS::momentum_y) ? adCoupledValue(NS::momentum_y) : _ad_zero), 41 861 : _var_rho_w(isCoupled(NS::momentum_z) ? adCoupledValue(NS::momentum_z) : _ad_zero), 42 861 : _var_total_energy_density(adCoupledValue(NS::total_energy_density)), 43 861 : _rho(declareADProperty<Real>(NS::density)), 44 861 : _mass_flux(declareADProperty<RealVectorValue>(NS::mass_flux)), 45 861 : _momentum(declareADProperty<RealVectorValue>(NS::momentum)), 46 861 : _total_energy_density(declareADProperty<Real>(NS::total_energy_density)), 47 861 : _velocity(declareADProperty<RealVectorValue>(NS::velocity)), 48 861 : _speed(declareADProperty<Real>(NS::speed)), 49 861 : _vel_x(declareADProperty<Real>(NS::velocity_x)), 50 861 : _vel_y(declareADProperty<Real>(NS::velocity_y)), 51 861 : _vel_z(declareADProperty<Real>(NS::velocity_z)), 52 861 : _rhou(declareADProperty<Real>(NS::momentum_x)), 53 861 : _rhov(declareADProperty<Real>(NS::momentum_y)), 54 861 : _rhow(declareADProperty<Real>(NS::momentum_z)), 55 861 : _v(declareADProperty<Real>(NS::v)), 56 861 : _specific_internal_energy(declareADProperty<Real>(NS::specific_internal_energy)), 57 861 : _pressure(declareADProperty<Real>(NS::pressure)), 58 861 : _specific_total_enthalpy(declareADProperty<Real>(NS::specific_total_enthalpy)), 59 861 : _rho_ht(declareADProperty<Real>(NS::total_enthalpy_density)), 60 1722 : _T_fluid(declareADProperty<Real>(NS::T_fluid)) 61 : { 62 861 : } 63 : 64 : void 65 2307623 : ConservedVarValuesMaterial::computeQpProperties() 66 : { 67 2307623 : _rho[_qp] = _var_rho[_qp]; 68 2307623 : _mass_flux[_qp] = {_var_rho_u[_qp], _var_rho_v[_qp], _var_rho_w[_qp]}; 69 2307623 : _momentum[_qp] = _mass_flux[_qp]; 70 2307623 : _total_energy_density[_qp] = _var_total_energy_density[_qp]; 71 : 72 4615246 : _velocity[_qp] = _mass_flux[_qp] / _rho[_qp]; 73 2307623 : _speed[_qp] = NS::computeSpeed<ADReal>(_velocity[_qp]); 74 2307623 : _vel_x[_qp] = _velocity[_qp](0); 75 2307623 : _vel_y[_qp] = _velocity[_qp](1); 76 2307623 : _vel_z[_qp] = _velocity[_qp](2); 77 4615246 : _rhou[_qp] = _vel_x[_qp] * _rho[_qp]; 78 4615246 : _rhov[_qp] = _vel_y[_qp] * _rho[_qp]; 79 4615246 : _rhow[_qp] = _vel_z[_qp] * _rho[_qp]; 80 : 81 4615246 : _v[_qp] = 1 / _rho[_qp]; 82 : 83 2307623 : _specific_internal_energy[_qp] = 84 6922869 : _total_energy_density[_qp] / _rho[_qp] - (_velocity[_qp] * _velocity[_qp]) / 2; 85 : 86 2307623 : _pressure[_qp] = _fluid.p_from_v_e(_v[_qp], _specific_internal_energy[_qp]); 87 : 88 4615246 : _specific_total_enthalpy[_qp] = (_total_energy_density[_qp] + _pressure[_qp]) / _rho[_qp]; 89 4615246 : _rho_ht[_qp] = _specific_total_enthalpy[_qp] * _rho[_qp]; 90 2307623 : _T_fluid[_qp] = _fluid.T_from_v_e(_v[_qp], _specific_internal_energy[_qp]); 91 2307623 : }