Line data Source code
1 : #pragma once 2 : 3 : #include "ClusteringUserObjectBase.h" 4 : 5 : /** 6 : * A clustering heuristic user object which clusters two neighboring elements whose metric variable 7 : * values are either more/less than a percentage of extremes. 8 : */ 9 : class ValueFractionHeuristicUserObject : public ClusteringUserObjectBase 10 : { 11 : 12 : public: 13 : static InputParameters validParams(); 14 : ValueFractionHeuristicUserObject(const InputParameters & params); 15 : 16 : virtual bool evaluate(libMesh::Elem * base_element, libMesh::Elem * neighbor_elem) const override; 17 : 18 6 : virtual void execute() override { extremesFinder(); }; 19 : 20 : protected: 21 : /// maximum and minimum value finder 22 : void extremesFinder(); 23 : 24 : /// upper fraction of the metric value 25 : Real _upper_fraction; 26 : 27 : /// lower fraction of the metric value 28 : Real _lower_fraction; 29 : 30 : /// maximum value of the metric 31 : Real _max; 32 : 33 : /// minimum value of the metric 34 : Real _min; 35 : 36 : /// upper cut off of the metric value 37 : Real _upper_cut_off; 38 : 39 : /// upper cut off of the metric value 40 : Real _lower_cut_off; 41 : };