LCOV - code coverage report
Current view: top level - src/linearfvkernels - LinearFVVolumetricHeatTransfer.C (source / functions) Hit Total Coverage
Test: idaholab/moose navier_stokes: 9fc4b0 Lines: 29 31 93.5 %
Date: 2025-08-14 10:14:56 Functions: 5 5 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 "LinearFVVolumetricHeatTransfer.h"
      11             : #include "SubProblem.h"
      12             : #include "NS.h"
      13             : #include "FEProblemBase.h"
      14             : 
      15             : registerMooseObject("NavierStokesApp", LinearFVVolumetricHeatTransfer);
      16             : 
      17             : InputParameters
      18          72 : LinearFVVolumetricHeatTransfer::validParams()
      19             : {
      20          72 :   InputParameters params = LinearFVElementalKernel::validParams();
      21          72 :   params.addClassDescription(
      22             :       "Represents a heat transfer term between the fluid and a homogenized structure.");
      23         144 :   params.addRequiredParam<MooseFunctorName>("h_solid_fluid",
      24             :                                             "Name of the convective heat transfer coefficient.");
      25         144 :   params.addRequiredParam<bool>("is_solid", "Whether this kernel acts on the solid temperature.");
      26          72 :   params.addRequiredParam<VariableName>(NS::T_fluid, "Fluid temperature.");
      27          72 :   params.addRequiredParam<VariableName>(NS::T_solid, "Solid temperature.");
      28          72 :   return params;
      29           0 : }
      30             : 
      31          36 : LinearFVVolumetricHeatTransfer::LinearFVVolumetricHeatTransfer(const InputParameters & params)
      32             :   : LinearFVElementalKernel(params),
      33          36 :     _h_solid_fluid(getFunctor<Real>("h_solid_fluid")),
      34          36 :     _temp_fluid(getTemperatureVariable(NS::T_fluid)),
      35          36 :     _temp_solid(getTemperatureVariable(NS::T_solid)),
      36         108 :     _is_solid(getParam<bool>("is_solid"))
      37             : {
      38          36 : }
      39             : 
      40             : const MooseLinearVariableFV<Real> &
      41          72 : LinearFVVolumetricHeatTransfer::getTemperatureVariable(const std::string & vname)
      42             : {
      43          72 :   auto * ptr = dynamic_cast<MooseLinearVariableFV<Real> *>(
      44          72 :       &_fe_problem.getVariable(_tid, getParam<VariableName>(vname)));
      45             : 
      46          72 :   if (!ptr)
      47           0 :     paramError(
      48             :         vname, "The variable supplied to ", vname, " should be of type MooseLinearVariableFVReal!");
      49             : 
      50          72 :   return *ptr;
      51             : }
      52             : 
      53             : Real
      54       50100 : LinearFVVolumetricHeatTransfer::computeMatrixContribution()
      55             : {
      56       50100 :   const auto elem = makeElemArg(_current_elem_info->elem());
      57       50100 :   const auto state = determineState();
      58             : 
      59       50100 :   return _h_solid_fluid(elem, state) * _current_elem_volume;
      60             : }
      61             : 
      62             : Real
      63       50100 : LinearFVVolumetricHeatTransfer::computeRightHandSideContribution()
      64             : {
      65       50100 :   const auto elem = makeElemArg(_current_elem_info->elem());
      66       50100 :   const auto state = determineState();
      67             : 
      68       50100 :   const auto temp_value = _is_solid ? _temp_fluid.getElemValue(*_current_elem_info, state)
      69       50100 :                                     : _temp_solid.getElemValue(*_current_elem_info, state);
      70             : 
      71       50100 :   return _h_solid_fluid(elem, state) * temp_value * _current_elem_volume;
      72             : }

Generated by: LCOV version 1.14