16 #ifndef __H2D_CURVED_H
17 #define __H2D_CURVED_H
19 #include "../global.h"
20 #include "../shapeset/shapeset_common.h"
21 #include "../shapeset/precalc.h"
58 static const unsigned char degree = 2;
61 static const unsigned char np = 3;
63 static const unsigned char nk = 6;
129 void update_refmap_coeffs(
Element* e);
144 void get_mid_edge_points(
Element* e, double2* pt,
unsigned short n);
147 static double nurbs_basis_fn(
unsigned short i,
unsigned short k,
double t,
double* knot);
152 static void nurbs_edge(
Element* e,
Curve* curve,
int edge,
double t,
double& x,
159 static void nurbs_edge_0(
Element* e,
Curve* nurbs,
unsigned short edge,
double t,
double& x,
double& y,
double& n_x,
double& n_y,
double& t_x,
double& t_y);
162 static void calc_ref_map_tri(
Element* e,
Curve** nurbs,
double xi_1,
double xi_2,
double& x,
double& y);
163 static void calc_ref_map_quad(
Element* e,
Curve** nurbs,
double xi_1,
double xi_2,
164 double& x,
double& y);
166 static void calc_ref_map(
Element* e,
Curve** nurbs,
double xi_1,
double xi_2, double2& f);
170 void edge_coord(
Element* e,
unsigned short edge,
double t, double2& x)
const;
171 void calc_edge_projection(
Element* e,
unsigned short edge,
Curve** nurbs,
unsigned short order, double2* proj)
const;
174 void old_projection(
Element* e,
unsigned short order, double2* proj,
double* old[2]);
175 void calc_bubble_projection(
Element* e,
Curve** nurbs,
unsigned short order, double2* proj);
179 template<
typename T>
friend class Space;
180 template<
typename T>
friend class H1Space;
181 template<
typename T>
friend class L2Space;
183 template<
typename T>
friend class HdivSpace;
185 template<
typename T>
friend class Adapt;
192 friend class MeshReaderH2DBSON;
206 void precalculate_cholesky_projection_matrices_bubble();
210 unsigned short edge_proj_matrix_size;
220 unsigned short tri_bubble_np;
223 unsigned short quad_bubble_np;
unsigned char np
number of control points
PrecalcShapeset variant for fast assembling.
void precalculate_cholesky_projection_matrix_edge()
Stores one element of a mesh.
double ** edge_proj_matrix
projection matrix for each edge is the same
Represents a finite element mesh. Typical usage: MeshSharedPtr mesh; Hermes::Hermes2D::MeshReaderH2DX...
unsigned short order
current polynomial degree of the refmap approximation
Represents one NURBS curve.
double ** bubble_proj_matrix_tri
projection matrix for triangle bubbles
::xsd::cxx::tree::type type
C++ type corresponding to the anyType XML Schema built-in type.
double * bubble_tri_p
diagonal vector in cholesky factorization
#define H2D_MAX_NUMBER_EDGES
A maximum number of edges of an element.
unsigned char nk
knot vector length
double ** calculate_bubble_projection_matrix(short *indices, ElementMode2D mode)
Calculate the H1 seminorm products (, ) for all 0 <= i, j < n, n is the number of bubble functions...
#define H2D_MAX_NUMBER_VERTICES
A maximum number of vertices of an element.
double ** bubble_proj_matrix_quad
projection matrix for quad bubbles
double * bubble_quad_p
diagonal vector in cholesky factorization
unsigned char degree
curve degree (2=quadratic, etc.)
Represents a finite element space over a domain.
Represents the reference mapping.
CurvMapStatic curvMapStatic
Global instance used inside Hermes which is also accessible to users.
double * edge_p
diagonal vector in cholesky factorization
double3 * pt
control points and their weights