LCOV - code coverage report
Current view: top level - src/userobjects - ValueRangeHeuristicUserObject.C (source / functions) Hit Total Coverage
Test: neams-th-coe/cardinal: ddd5f2 Lines: 17 18 94.4 %
Date: 2026-06-07 19:35:24 Functions: 4 4 100.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : #include "ValueRangeHeuristicUserObject.h"
       2             : 
       3             : registerMooseObject("CardinalApp", ValueRangeHeuristicUserObject);
       4             : 
       5             : InputParameters
       6          12 : ValueRangeHeuristicUserObject::validParams()
       7             : {
       8             : 
       9          12 :   InputParameters params = ClusteringUserObjectBase::validParams();
      10          24 :   params.addRequiredRangeCheckedParam<Real>("tolerance_percentage",
      11             :                                             "tolerance_percentage>0 & tolerance_percentage<1",
      12             :                                             "Fractional tolerance used to define"
      13             :                                             " the acceptable range around the reference value.");
      14          24 :   params.addRequiredParam<Real>(
      15             :       "value", "The reference value to decide if an element is close enough to be clustered");
      16          12 :   params.addClassDescription(
      17             :       "Clusters elements if their value is within the tolerance of the value provided.");
      18             : 
      19          12 :   return params;
      20           0 : }
      21             : 
      22           6 : ValueRangeHeuristicUserObject::ValueRangeHeuristicUserObject(const InputParameters & params)
      23             :   : ClusteringUserObjectBase(params),
      24           6 :     _tolerance_percentage(getParam<Real>("tolerance_percentage")),
      25          12 :     _value(getParam<Real>("value")),
      26           6 :     _upper_limit((1 + _tolerance_percentage) * _value),
      27           6 :     _lower_limit((1 - _tolerance_percentage) * _value)
      28             : {
      29           6 : }
      30             : 
      31             : bool
      32        3906 : ValueRangeHeuristicUserObject::isInsideTheRange(libMesh::Elem * element) const
      33             : {
      34        3906 :   Real metric_value = getMetricData(element);
      35        3906 :   return _lower_limit < metric_value && metric_value < _upper_limit;
      36             : }
      37             : 
      38             : bool
      39        3696 : ValueRangeHeuristicUserObject::evaluate(libMesh::Elem * base_element,
      40             :                                         libMesh::Elem * neighbor_element) const
      41             : {
      42        3696 :   return isInsideTheRange(base_element) && isInsideTheRange(neighbor_element);
      43             : }

Generated by: LCOV version 1.14