LCOV - code coverage report
Current view: top level - src/fvkernels - INSFVMomentumPressureFlux.C (source / functions) Hit Total Coverage
Test: idaholab/moose navier_stokes: ba1ead Lines: 25 27 92.6 %
Date: 2025-08-13 06:50:25 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 "INSFVMomentumPressureFlux.h"
      11             : #include "INSFVVelocityVariable.h"
      12             : #include "NS.h"
      13             : 
      14             : registerMooseObject("NavierStokesApp", INSFVMomentumPressureFlux);
      15             : 
      16             : InputParameters
      17         404 : INSFVMomentumPressureFlux::validParams()
      18             : {
      19         404 :   auto params = FVFluxKernel::validParams();
      20         404 :   params += INSFVMomentumResidualObject::validParams();
      21         404 :   params.addClassDescription("Momentum pressure term eps grad_P, as a flux kernel "
      22             :                              "using the divergence theoreom, in the  "
      23             :                              "incompressible Navier-Stokes momentum equation.");
      24         404 :   params.addRequiredParam<MooseFunctorName>(NS::pressure, "The pressure");
      25         404 :   return params;
      26           0 : }
      27             : 
      28         208 : INSFVMomentumPressureFlux::INSFVMomentumPressureFlux(const InputParameters & params)
      29         208 :   : FVFluxKernel(params), INSFVMomentumResidualObject(*this), _p(getFunctor<ADReal>(NS::pressure))
      30             : {
      31         208 :   if (!dynamic_cast<INSFVVelocityVariable *>(&_var))
      32           0 :     mooseError("INSFVMomentumPressureFlux may only be used with a Navier-Stokes velocity, "
      33             :                "of variable type INSFVSuperficialVelocityVariable.");
      34         208 : }
      35             : 
      36             : ADReal
      37      193143 : INSFVMomentumPressureFlux::computeQpResidual()
      38             : {
      39             :   ADReal eps_p_interface;
      40             :   // Momentum and porosity domains should match
      41      193143 :   const auto & face_type = _face_info->faceType(std::make_pair(_var.number(), _var.sys().number()));
      42      193143 :   const bool use_elem = (face_type == FaceInfo::VarFaceNeighbors::ELEM) ||
      43             :                         (face_type == FaceInfo::VarFaceNeighbors::BOTH);
      44             : 
      45      193143 :   const auto * const elem_ptr = use_elem ? &_face_info->elem() : _face_info->neighborPtr();
      46      193143 :   const auto & elem = makeElemArg(elem_ptr);
      47      193143 :   const auto state = determineState();
      48             : 
      49      193143 :   if (onBoundary(*_face_info))
      50       45432 :     eps_p_interface = epsilon()(elem, state) * _p(singleSidedFaceArg(), state);
      51             :   else
      52             :   {
      53      170427 :     const auto * neighbor_ptr = use_elem ? _face_info->neighborPtr() : &_face_info->elem();
      54      170427 :     const auto & neighbor = makeElemArg(neighbor_ptr);
      55             : 
      56      170427 :     Moose::FV::interpolate(Moose::FV::InterpMethod::Average,
      57             :                            eps_p_interface,
      58      170427 :                            epsilon()(elem, state) * _p(elem, state),
      59      340854 :                            epsilon()(neighbor, state) * _p(neighbor, state),
      60      170427 :                            *_face_info,
      61             :                            true);
      62             :   }
      63             : 
      64      386286 :   return eps_p_interface * _normal(_index);
      65             : }

Generated by: LCOV version 1.14