LCOV - code coverage report
Current view: top level - src/kernels - PorousFlowHeatAdvection.C (source / functions) Hit Total Coverage
Test: idaholab/moose porous_flow: #33380 (547b29) with base 8581c3 Lines: 25 27 92.6 %
Date: 2026-07-20 19:40:36 Functions: 7 8 87.5 %
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 "PorousFlowHeatAdvection.h"
      11             : 
      12             : registerMooseObject("PorousFlowApp", PorousFlowHeatAdvection);
      13             : registerMooseObject("PorousFlowApp", ADPorousFlowHeatAdvection);
      14             : 
      15             : template <bool is_ad>
      16             : InputParameters
      17         351 : PorousFlowHeatAdvectionTempl<is_ad>::validParams()
      18             : {
      19         351 :   InputParameters params = PorousFlowDarcyBaseTempl<is_ad>::validParams();
      20         351 :   params.addClassDescription("Fully-upwinded heat flux, advected by the fluid");
      21         351 :   return params;
      22           0 : }
      23             : 
      24             : template <bool is_ad>
      25         186 : PorousFlowHeatAdvectionTempl<is_ad>::PorousFlowHeatAdvectionTempl(
      26             :     const InputParameters & parameters)
      27             :   : PorousFlowDarcyBaseTempl<is_ad>(parameters),
      28         186 :     _enthalpy(this->template getGenericMaterialProperty<std::vector<Real>, is_ad>(
      29             :         "PorousFlow_fluid_phase_enthalpy_nodal")),
      30         186 :     _denthalpy_dvar(is_ad ? nullptr
      31         179 :                           : &this->template getMaterialProperty<std::vector<std::vector<Real>>>(
      32             :                                 "dPorousFlow_fluid_phase_enthalpy_nodal_dvar")),
      33         372 :     _relative_permeability(this->template getGenericMaterialProperty<std::vector<Real>, is_ad>(
      34             :         "PorousFlow_relative_permeability_nodal")),
      35         186 :     _drelative_permeability_dvar(
      36             :         is_ad ? nullptr
      37         179 :               : &this->template getMaterialProperty<std::vector<std::vector<Real>>>(
      38         186 :                     "dPorousFlow_relative_permeability_nodal_dvar"))
      39             : {
      40         186 : }
      41             : 
      42             : template <bool is_ad>
      43             : GenericReal<is_ad>
      44      664716 : PorousFlowHeatAdvectionTempl<is_ad>::mobility(unsigned nodenum, unsigned phase) const
      45             : {
      46      664716 :   return _enthalpy[nodenum][phase] * _fluid_density_node[nodenum][phase] *
      47      664988 :          _relative_permeability[nodenum][phase] / _fluid_viscosity[nodenum][phase];
      48             : }
      49             : 
      50             : template <bool is_ad>
      51             : Real
      52      416541 : PorousFlowHeatAdvectionTempl<is_ad>::dmobility(unsigned nodenum,
      53             :                                                unsigned phase,
      54             :                                                unsigned pvar) const
      55             : {
      56             :   if constexpr (!is_ad)
      57             :   {
      58      416541 :     Real dm = (*_denthalpy_dvar)[nodenum][phase][pvar] * _fluid_density_node[nodenum][phase] *
      59      416541 :               _relative_permeability[nodenum][phase] / _fluid_viscosity[nodenum][phase];
      60      416541 :     dm += _enthalpy[nodenum][phase] * (*_dfluid_density_node_dvar)[nodenum][phase][pvar] *
      61      416541 :           _relative_permeability[nodenum][phase] / _fluid_viscosity[nodenum][phase];
      62      416541 :     dm += _enthalpy[nodenum][phase] * _fluid_density_node[nodenum][phase] *
      63      416541 :           (*_drelative_permeability_dvar)[nodenum][phase][pvar] / _fluid_viscosity[nodenum][phase];
      64      416541 :     dm -= _enthalpy[nodenum][phase] * _fluid_density_node[nodenum][phase] *
      65      416541 :           _relative_permeability[nodenum][phase] * (*_dfluid_viscosity_dvar)[nodenum][phase][pvar] /
      66             :           std::pow(_fluid_viscosity[nodenum][phase], 2);
      67             :     return dm;
      68             :   }
      69             :   else
      70             :     libmesh_ignore(nodenum, phase, pvar);
      71           0 :   return 0.0;
      72             : }
      73             : 
      74             : template class PorousFlowHeatAdvectionTempl<false>;
      75             : template class PorousFlowHeatAdvectionTempl<true>;

Generated by: LCOV version 1.14