LCOV - code coverage report
Current view: top level - src/auxkernels - PecletNumberFunctorAux.C (source / functions) Hit Total Coverage
Test: idaholab/moose navier_stokes: 9fc4b0 Lines: 20 23 87.0 %
Date: 2025-08-14 10:14:56 Functions: 3 3 100.0 %
Legend: Lines: hit not hit

          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             : }

Generated by: LCOV version 1.14