Cardinal
BooleanComboClusteringUserObject.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "GeneralUserObject.h"
4 #include <unordered_map>
5 
7 
13 class BooleanComboClusteringUserObject : public GeneralUserObject
14 {
15 public:
16  static InputParameters validParams();
17  BooleanComboClusteringUserObject(const InputParameters & parameters);
18 
19  virtual void execute() override;
20  virtual void initialize() override {};
21  virtual void finalize() override {};
22 
23 private:
29  int getExtraIntegerScore(libMesh::Elem * elem) const;
30 
36  void reversePolishNotation(const std::vector<std::string> & expression);
37 
44  bool belongsToCluster(libMesh::Elem * base_element, libMesh::Elem * neighbor_elem);
45 
47  void findCluster();
48 
50  void resetExtraInteger();
51 
56  void initializeUserObjects();
57 
59  const ExtraElementIDName & _id_name;
60 
62  libMesh::MeshBase & _mesh;
63 
65  unsigned int _extra_integer_index;
66 
68  std::unordered_map<std::string, const ClusteringUserObjectBase *> _clustering_user_objects;
69 
71  std::vector<std::string> _output_stack;
72 
74  static std::unordered_map<std::string, int> _precedence;
75 
76  static constexpr int NOT_VISITED = -1;
77  static constexpr std::string_view _left_parenthesis = "(";
78  static constexpr std::string_view _right_parenthesis = ")";
79 };
Definition: BooleanComboClusteringUserObject.h:13
Definition: ClusteringUserObjectBase.h:8
static InputParameters validParams()
Definition: BooleanComboClusteringUserObject.C:10
virtual void execute() override
Definition: BooleanComboClusteringUserObject.C:137
virtual void initialize() override
Definition: BooleanComboClusteringUserObject.h:20
virtual void finalize() override
Definition: BooleanComboClusteringUserObject.h:21
BooleanComboClusteringUserObject(const InputParameters &parameters)
Definition: BooleanComboClusteringUserObject.C:21