3 #include "candidates.h"
9 namespace RefinementSelectors
11 template<
typename Scalar>
24 template<
typename Scalar>
26 :
Selector<Scalar>(max_order), order_h_inc(order_h_inc), order_v_inc(order_v_inc)
29 throw Hermes::Exceptions::ValueException(
"horizontal increase", order_h_inc, 0);
31 throw Hermes::Exceptions::ValueException(
"vertical increase", order_v_inc, 0);
34 template<
typename Scalar>
40 int max_allowed_order = this->max_order;
46 int new_order_h = std::min(max_allowed_order, order_h + order_h_inc);
47 int new_order_v = std::min(max_allowed_order, order_v + order_v_inc);
48 if (element->is_triangle())
54 if (new_order_h > order_h || new_order_v > order_v)
POnlySelector(int max_order=H2DRS_DEFAULT_ORDER, int order_h_inc=1, int order_v_inc=1)
Constructor.
Stores one element of a mesh.
#define H2DRS_MAX_ORDER
A maximum order suported by refinement selectors.
Represents a function defined on a mesh.
Common definitions for Hermes2D.
A selector that selects H-refinements only.
unsigned short refinement_polynomial_order[H2D_MAX_ELEMENT_SONS]
Encoded orders of sons.
static void copy_orders(unsigned short *dest, const unsigned short *src)
Copies array of orders.
RefinementType split
Proposed refinement. Possible values are defined in the enum RefinementType.
#define H2D_GET_H_ORDER(encoded_order)
Macros for combining quad horizontal and vertical encoded_orders.
A selector that increases order (i.e., it selects P-refinements only).
virtual bool select_refinement(Element *element, int quad_order, MeshFunction< Scalar > *rsln, ElementToRefine &refinement)
Selects a refinement.
A parent of all refinement selectors. Abstract class.
#define H2DRS_DEFAULT_ORDER
A default order. Used to indicate an unkonwn order or a maximum support order.
unsigned short best_refinement_polynomial_order_type[4][H2D_MAX_ELEMENT_SONS]
virtual bool select_refinement(Element *element, int quad_order, MeshFunction< Scalar > *rsln, ElementToRefine &refinement)
Selects a refinement.