LCOV - code coverage report
Current view: top level - src/kernels - ADHeatStructureHeatSource.C (source / functions) Hit Total Coverage
Test: idaholab/moose thermal_hydraulics: #30301 (3b550b) with base 2ad78d Lines: 23 24 95.8 %
Date: 2025-07-30 13:02:48 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 "ADHeatStructureHeatSource.h"
      11             : 
      12             : registerMooseObject("ThermalHydraulicsApp", ADHeatStructureHeatSource);
      13             : 
      14             : InputParameters
      15         462 : ADHeatStructureHeatSource::validParams()
      16             : {
      17         462 :   InputParameters params = ADKernel::validParams();
      18         462 :   params.addClassDescription("Adds a heat source term for the energy equation");
      19         924 :   params.addRequiredParam<Real>("power_fraction", "The fraction of power used");
      20         924 :   params.addRequiredCoupledVar("total_power", "Total reactor power");
      21         924 :   params.addRequiredParam<Real>("num_units", "The number of units");
      22         924 :   params.addRequiredParam<FunctionName>("power_shape_function",
      23             :                                         "The name of the function that defines the power shape");
      24         924 :   params.addRequiredParam<PostprocessorName>("power_shape_integral_pp",
      25             :                                              "Power shape integral post-processor name");
      26         924 :   params.addParam<Real>("scale", 1.0, "Scaling factor for residual");
      27         924 :   params.declareControllable("power_fraction");
      28         462 :   return params;
      29           0 : }
      30             : 
      31         254 : ADHeatStructureHeatSource::ADHeatStructureHeatSource(const InputParameters & parameters)
      32             :   : ADKernel(parameters),
      33         254 :     _power_fraction(getParam<Real>("power_fraction")),
      34         254 :     _total_power(coupledScalarValue("total_power")),
      35         254 :     _power_shape_function(getFunction("power_shape_function")),
      36         254 :     _power_shape_integral(getPostprocessorValue("power_shape_integral_pp")),
      37         508 :     _scale(getParam<Real>("scale")),
      38         762 :     _num_units(getParam<Real>("num_units"))
      39             : {
      40         254 : }
      41             : 
      42             : ADReal
      43     6067826 : ADHeatStructureHeatSource::computeQpResidual()
      44             : {
      45     6067826 :   const ADReal power = _power_fraction * _total_power[0];
      46             :   const ADReal power_density =
      47     6067826 :       power / (_num_units * _power_shape_integral) * _power_shape_function.value(_t, _q_point[_qp]);
      48    12135652 :   return -_scale * power_density * _test[_i][_qp];
      49             : }

Generated by: LCOV version 1.14