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.addRequiredParam<Real>( 11 : "tolerance", "Maximum allowed difference in values for elements to be clustered"); 12 6 : params.addClassDescription( 13 : "Clusters elements whose relative value differences are less than the specified tolerance."); 14 : 15 6 : return params; 16 0 : } 17 : 18 3 : ValueDifferenceHeuristicUserObject::ValueDifferenceHeuristicUserObject( 19 3 : const InputParameters & params) 20 6 : : ClusteringUserObjectBase(params), _tolerance(getParam<Real>("tolerance")) 21 : { 22 3 : } 23 : 24 : bool 25 2160 : ValueDifferenceHeuristicUserObject::evaluate(libMesh::Elem * base_element, 26 : libMesh::Elem * neighbor_element) const 27 : { 28 2160 : const Real base_metric_value = getMetricData(base_element); 29 2160 : const Real neighbor_metric_value = getMetricData(neighbor_element); 30 2160 : return std::abs((base_metric_value - neighbor_metric_value) / base_metric_value) < _tolerance; 31 : }