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 : #include "FluidPropertiesGasMixMaterial.h" 11 : #include "VaporMixtureFluidProperties.h" 12 : #include "THMNames.h" 13 : 14 : registerMooseObject("ThermalHydraulicsApp", FluidPropertiesGasMixMaterial); 15 : 16 : InputParameters 17 170 : FluidPropertiesGasMixMaterial::validParams() 18 : { 19 170 : InputParameters params = Material::validParams(); 20 : 21 340 : params.addRequiredCoupledVar("xirhoA", "xi*rho*A variable"); 22 340 : params.addRequiredCoupledVar("rhoA", "rho*A variable"); 23 340 : params.addRequiredCoupledVar("rhouA", "rho*u*A variable"); 24 340 : params.addRequiredCoupledVar("rhoEA", "rho*E*A variable"); 25 340 : params.addRequiredCoupledVar("area", "Cross-sectional area variable"); 26 : 27 340 : params.addRequiredParam<UserObjectName>("fluid_properties", 28 : "The VaporMixtureFluidProperties object"); 29 : 30 170 : params.addClassDescription("Computes various fluid properties for FlowModelGasMix."); 31 : 32 170 : return params; 33 0 : } 34 : 35 132 : FluidPropertiesGasMixMaterial::FluidPropertiesGasMixMaterial(const InputParameters & parameters) 36 : : Material(parameters), 37 : 38 132 : _A(adCoupledValue("area")), 39 132 : _xirhoA(adCoupledValue("xirhoA")), 40 132 : _rhoA(adCoupledValue("rhoA")), 41 132 : _rhouA(adCoupledValue("rhouA")), 42 132 : _rhoEA(adCoupledValue("rhoEA")), 43 : 44 132 : _xi(declareADProperty<Real>(THM::MASS_FRACTION)), 45 132 : _rho(declareADProperty<Real>(THM::DENSITY)), 46 132 : _v(declareADProperty<Real>(THM::SPECIFIC_VOLUME)), 47 132 : _vel(declareADProperty<Real>(THM::VELOCITY)), 48 132 : _e(declareADProperty<Real>(THM::SPECIFIC_INTERNAL_ENERGY)), 49 132 : _p(declareADProperty<Real>(THM::PRESSURE)), 50 132 : _T(declareADProperty<Real>(THM::TEMPERATURE)), 51 132 : _h(declareADProperty<Real>(THM::SPECIFIC_ENTHALPY)), 52 132 : _H(declareADProperty<Real>(THM::SPECIFIC_TOTAL_ENTHALPY)), 53 132 : _c(declareADProperty<Real>(THM::SOUND_SPEED)), 54 132 : _cp(declareADProperty<Real>(THM::SPECIFIC_HEAT_CONSTANT_PRESSURE)), 55 132 : _cv(declareADProperty<Real>(THM::SPECIFIC_HEAT_CONSTANT_VOLUME)), 56 132 : _k(declareADProperty<Real>(THM::THERMAL_CONDUCTIVITY)), 57 132 : _mu(declareADProperty<Real>(THM::DYNAMIC_VISCOSITY)), 58 : 59 264 : _fp(getUserObject<VaporMixtureFluidProperties>("fluid_properties")) 60 : { 61 132 : } 62 : 63 : void 64 39559 : FluidPropertiesGasMixMaterial::computeQpProperties() 65 : { 66 79118 : _xi[_qp] = _xirhoA[_qp] / _rhoA[_qp]; 67 79118 : _rho[_qp] = _rhoA[_qp] / _A[_qp]; 68 79118 : _v[_qp] = 1.0 / _rho[_qp]; 69 79118 : _vel[_qp] = _rhouA[_qp] / _rhoA[_qp]; 70 118677 : _e[_qp] = (_rhoEA[_qp] - 0.5 * _rhouA[_qp] * _rhouA[_qp] / _rhoA[_qp]) / _rhoA[_qp]; 71 39559 : _p[_qp] = _fp.p_from_v_e(_v[_qp], _e[_qp], {_xi[_qp]}); 72 39559 : _T[_qp] = _fp.T_from_v_e(_v[_qp], _e[_qp], {_xi[_qp]}); 73 118677 : _h[_qp] = _e[_qp] + _p[_qp] / _rho[_qp]; 74 118677 : _H[_qp] = _h[_qp] + 0.5 * _vel[_qp] * _vel[_qp]; 75 39559 : _c[_qp] = _fp.c_from_p_T(_p[_qp], _T[_qp], {_xi[_qp]}); 76 39559 : _cp[_qp] = _fp.cp_from_p_T(_p[_qp], _T[_qp], {_xi[_qp]}); 77 39559 : _cv[_qp] = _fp.cv_from_p_T(_p[_qp], _T[_qp], {_xi[_qp]}); 78 39559 : _k[_qp] = _fp.k_from_p_T(_p[_qp], _T[_qp], {_xi[_qp]}); 79 39559 : _mu[_qp] = _fp.mu_from_p_T(_p[_qp], _T[_qp], {_xi[_qp]}); 80 316472 : }