16 #ifndef __H2D_CURVED_H
17 #define __H2D_CURVED_H
19 #include "../global.h"
20 #include "../shapeset/shapeset_common.h"
27 class H1ShapesetJacobi;
28 class PrecalcShapeset;
46 ref = 0; twin =
false;
104 void update_refmap_coeffs(
Element* e);
106 void get_mid_edge_points(
Element* e, double2* pt,
int n);
108 static double** edge_proj_matrix;
109 static double** bubble_proj_matrix_tri;
110 static double** bubble_proj_matrix_quad;
112 static double* edge_p;
113 static double* bubble_tri_p;
114 static double* bubble_quad_p;
122 static double nurbs_basis_fn(
int i,
int k,
double t,
double* knot);
127 static void nurbs_edge(
Element* e,
Nurbs* nurbs,
int edge,
double t,
double& x,
128 double& y,
double& n_x,
double& n_y,
double& t_x,
double& t_y);
133 static void nurbs_edge_0(
Element* e,
Nurbs* nurbs,
int edge,
double t,
double& x,
double& y,
double& n_x,
double& n_y,
double& t_x,
double& t_y);
134 static void calc_ref_map_tri(
Element* e,
Nurbs** nurbs,
double xi_1,
double xi_2,
double& x,
double& y);
135 static void calc_ref_map_quad(
Element* e,
Nurbs** nurbs,
double xi_1,
double xi_2,
136 double& x,
double& y);
138 static void calc_ref_map(
Element* e,
Nurbs** nurbs,
double xi_1,
double xi_2, double2& f);
141 static double** calculate_bubble_projection_matrix(
int nb,
int* indices,
H1ShapesetJacobi* ref_map_shapeset,
PrecalcShapeset* ref_map_pss, ElementMode2D mode);
144 static void edge_coord(
Element* e,
int edge,
double t, double2& x, double2& v);
152 static bool warning_issued;
153 template<
typename T>
friend class Space;
154 template<
typename T>
friend class H1Space;
155 template<
typename T>
friend class L2Space;
157 template<
typename T>
friend class HdivSpace;
160 template<
typename T>
friend class Adapt;