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 "BinaryDiffusionCoefMaterial.h" 11 : #include "FluidProperties.h" 12 : #include "VaporMixtureFluidProperties.h" 13 : #include "SinglePhaseFluidProperties.h" 14 : #include "PhysicalConstants.h" 15 : #include "THMNames.h" 16 : 17 : registerMooseObject("ThermalHydraulicsApp", BinaryDiffusionCoefMaterial); 18 : 19 : InputParameters 20 85 : BinaryDiffusionCoefMaterial::validParams() 21 : { 22 85 : InputParameters params = Material::validParams(); 23 : 24 170 : params.addRequiredParam<UserObjectName>("vapor_mixture_fp", 25 : "The VaporMixtureFluidProperties object"); 26 170 : params.addRequiredParam<Real>("primary_collision_diameter", 27 : "Collision diameter for the first gas component [m]"); 28 170 : params.addRequiredParam<Real>("secondary_collision_diameter", 29 : "Collision diameter for the second gas component [m]"); 30 85 : params.addClassDescription("Computes the Stefan-Maxwell binary diffusion coefficient."); 31 : 32 85 : return params; 33 0 : } 34 : 35 66 : BinaryDiffusionCoefMaterial::BinaryDiffusionCoefMaterial(const InputParameters & parameters) 36 : : Material(parameters), 37 : 38 66 : _fp_mix(getUserObject<VaporMixtureFluidProperties>("vapor_mixture_fp")), 39 66 : _fp1(_fp_mix.getPrimaryFluidProperties()), 40 66 : _fp2(_fp_mix.getSecondaryFluidProperties()), 41 : 42 66 : _M1(_fp1.molarMass()), 43 66 : _M2(_fp2.molarMass()), 44 : 45 132 : _collision_diam1(getParam<Real>("primary_collision_diameter")), 46 132 : _collision_diam2(getParam<Real>("secondary_collision_diameter")), 47 66 : _collision_diam(0.5 * (_collision_diam1 + _collision_diam2)), 48 : 49 66 : _p(getADMaterialProperty<Real>(THM::PRESSURE)), 50 66 : _T(getADMaterialProperty<Real>(THM::TEMPERATURE)), 51 : 52 132 : _diff_coef(declareADProperty<Real>(THM::MASS_DIFFUSION_COEFFICIENT)) 53 : { 54 66 : } 55 : 56 : void 57 9 : BinaryDiffusionCoefMaterial::computeQpProperties() 58 : { 59 18 : const ADReal conc = _p[_qp] / (PhysicalConstants::boltzmann_constant * _T[_qp]); 60 9 : _diff_coef[_qp] = 61 18 : 1.0 / (libMesh::pi * std::pow(_collision_diam, 2) * conc) * 62 27 : std::sqrt(2.0 * FluidProperties::_R * _T[_qp] / libMesh::pi * (1.0 / _M1 + 1.0 / _M2)); 63 9 : }