16 #ifndef __H2D_REFINEMENT_SELECTOR_H
17 #define __H2D_REFINEMENT_SELECTOR_H
20 #include "../mesh/refinement_type.h"
26 class ElementToRefine;
28 template<
typename Scalar>
class Solution;
32 #include "../mesh/element_to_refine.h"
34 #include "../mesh/mesh.h"
64 #define H2DRS_DEFAULT_ORDER -1
65 #define H2DRS_MAX_ORDER 9
68 namespace RefinementSelectors {
74 template<
typename Scalar>
75 class HERMES_API Selector :
public Hermes::Mixins::Loggable,
public Hermes::Mixins::TimeMeasurable
78 virtual ~Selector() {};
103 virtual void generate_shared_mesh_orders(
const Element* element,
const int orig_quad_order,
const int refinement,
int tgt_quad_orders[
H2D_MAX_ELEMENT_SONS],
const int* suggested_quad_orders) = 0;
105 template<
typename T>
friend class Adapt;
114 template<
typename Scalar>
131 virtual void generate_shared_mesh_orders(
const Element* element,
const int orig_quad_order,
const int refinement,
int tgt_quad_orders[
H2D_MAX_ELEMENT_SONS],
const int* suggested_quad_orders);
132 template<
typename T>
friend class Adapt;
137 template<
typename Scalar>
138 class HERMES_API POnlySelector :
public Selector<Scalar> {
139 const int order_h_inc;
140 const int order_v_inc;
146 POnlySelector(
int max_order,
int order_h_inc,
int order_v_inc);
149 virtual Selector<Scalar>* clone();
159 virtual void generate_shared_mesh_orders(
const Element* element,
const int orig_quad_order,
const int refinement,
int tgt_quad_orders[
H2D_MAX_ELEMENT_SONS],
const int* suggested_quad_orders);
160 template<
typename T>
friend class Adapt;