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 "PecletNumberFunctorAux.h" 11 : #include "MooseMesh.h" 12 : #include "NS.h" 13 : 14 : registerMooseObject("NavierStokesApp", PecletNumberFunctorAux); 15 : 16 : InputParameters 17 82 : PecletNumberFunctorAux::validParams() 18 : { 19 82 : InputParameters params = AuxKernel::validParams(); 20 82 : params.addClassDescription("Computes the Peclet number: u*L/alpha."); 21 82 : params.addRequiredParam<MooseFunctorName>(NS::speed, "The fluid speed"); 22 82 : params.addRequiredParam<MooseFunctorName>( 23 : NS::thermal_diffusivity, 24 : "The fluid thermal diffusivity, or if using this object for evaluating mass transfer, the " 25 : "mass diffusivity. Regardless of which, this should have units of length^2/time"); 26 82 : return params; 27 0 : } 28 : 29 44 : PecletNumberFunctorAux::PecletNumberFunctorAux(const InputParameters & parameters) 30 : : AuxKernel(parameters), 31 44 : _speed(getFunctor<Real>(NS::speed)), 32 44 : _alpha(getFunctor<Real>(NS::thermal_diffusivity)), 33 88 : _use_qp_arg(dynamic_cast<MooseVariableFE<Real> *>(&_var)) 34 : { 35 44 : if (!_use_qp_arg && !dynamic_cast<MooseVariableFV<Real> *>(&_var)) 36 0 : paramError( 37 : "variable", 38 : "The variable must be a non-vector, non-array finite-volume/finite-element variable."); 39 : 40 44 : if (isNodal()) 41 0 : mooseError("This AuxKernel only supports Elemental fields"); 42 44 : } 43 : 44 : Real 45 58700 : PecletNumberFunctorAux::computeValue() 46 : { 47 : using MetaPhysicL::raw_value; 48 58700 : const auto state = determineState(); 49 : 50 58700 : if (_use_qp_arg) 51 : { 52 54000 : const Moose::ElemQpArg qp_arg = {_current_elem, _qp, _qrule, _q_point[_qp]}; 53 54000 : return _current_elem->hmax() * _speed(qp_arg, state) / _alpha(qp_arg, state); 54 : } 55 : else 56 : { 57 4700 : const auto elem_arg = makeElemArg(_current_elem); 58 4700 : return _current_elem->hmax() * _speed(elem_arg, state) / _alpha(elem_arg, state); 59 : } 60 : }