Line data Source code
1 : #include "ValueDifferenceHeuristicUserObject.h" 2 : 3 : registerMooseObject("CardinalApp", ValueDifferenceHeuristicUserObject); 4 : 5 : InputParameters 6 6 : ValueDifferenceHeuristicUserObject::validParams() 7 : { 8 : 9 6 : InputParameters params = ClusteringUserObjectBase::validParams(); 10 12 : params.addRequiredRangeCheckedParam<Real>( 11 : "tolerance", 12 : "tolerance > 0", 13 : "Maximum allowed absolute relative difference in values for elements to be clustered"); 14 6 : params.addClassDescription( 15 : "Clusters elements whose relative value differences are less than the specified tolerance."); 16 : 17 6 : return params; 18 0 : } 19 : 20 3 : ValueDifferenceHeuristicUserObject::ValueDifferenceHeuristicUserObject( 21 3 : const InputParameters & params) 22 6 : : ClusteringUserObjectBase(params), _tolerance(getParam<Real>("tolerance")) 23 : { 24 3 : } 25 : 26 : bool 27 2160 : ValueDifferenceHeuristicUserObject::evaluate(libMesh::Elem * base_element, 28 : libMesh::Elem * neighbor_element) const 29 : { 30 2160 : const Real base_metric_value = getMetricData(base_element); 31 2160 : const Real neighbor_metric_value = getMetricData(neighbor_element); 32 2160 : return std::abs((base_metric_value - neighbor_metric_value) / base_metric_value) < _tolerance; 33 : }