16 #ifndef __H2D_MESH_UTIL_H
17 #define __H2D_MESH_UTIL_H
30 typedef std::tr1::shared_ptr<Hermes::Hermes2D::Mesh> MeshSharedPtr;
35 MeshHashGridElement(
double lower_left_x,
double lower_left_y,
double upper_right_x,
double upper_right_y,
int depth = 0);
42 inline bool belongs(
double x,
double y);
56 static const int MAX_ELEMENTS = 50;
57 static const int MAX_DEPTH = 10;
68 static void assign_curve(
Node* en,
Curve* curve,
int p1,
int p2);
77 static Node* get_base_edge_node(
Element* base,
int edge);
80 static int get_edge_sons(
Element* e,
int edge,
int& son1,
int& son2);
85 static Arc* load_arc(MeshSharedPtr mesh,
int id,
Node** en,
int p1,
int p2,
double angle,
bool skip_check =
false);
100 int get_mesh_seq()
const;
105 double intervals_x[GRID_SIZE + 1];
106 double intervals_y[GRID_SIZE + 1];
116 double get_area()
const;
117 int get_mesh_seq()
const;
218 #define for_all_elements(e, mesh) \
219 for (int _id = 0, _max = (mesh)->get_max_element_id(); _id < _max; _id++) \
220 if (((e) = (mesh)->get_element_fast(_id)) != nullptr)
222 #define for_all_used_elements(e, mesh) \
223 for (int _id = 0, _max = (mesh)->get_max_element_id(); _id < _max; _id++) \
224 if (((e) = (mesh)->get_element_fast(_id))->used)
226 #define for_all_base_elements(e, mesh) \
227 for (int _id = 0; _id < (mesh)->get_num_base_elements(); _id++) \
228 if (((e) = (mesh)->get_element_fast(_id))->used)
230 #define for_all_base_elements_incl_inactive(e, mesh) \
231 for (int _id = 0; _id < (mesh)->get_num_base_elements(); _id++) \
232 if (((e) = (mesh)->get_element_fast(_id))->used || !((e) = (mesh)->get_element_fast(_id))->used)
234 #define for_all_active_elements_fast(mesh) \
236 for (int _id = 0, _max = (mesh)->get_max_element_id(); _id < _max; _id++) \
237 if (((e) = (mesh)->get_element_fast(_id))->used) \
240 #define for_all_active_elements(e, mesh) \
241 for (int _id = 0, _max = (mesh)->get_max_element_id(); _id < _max; _id++) \
242 if (((e) = (mesh)->get_element_fast(_id))->used) \
245 #define for_all_inactive_elements(e, mesh) \
246 for (int _id = 0, _max = (mesh)->get_max_element_id(); _id < _max; _id++) \
247 if (((e) = (mesh)->get_element_fast(_id))->used) \
250 #define for_all_nodes(n, mesh) \
251 for (int _id = 0, _max = (mesh)->get_max_node_id(); _id < _max; _id++) \
252 if (((n) = (mesh)->get_node(_id))->used)
254 #define for_all_vertex_nodes(n, mesh) \
255 for (int _id = 0, _max = (mesh)->get_max_node_id(); _id < _max; _id++) \
256 if (((n) = (mesh)->get_node(_id))->used) \
259 #define for_all_edge_nodes(n, mesh) \
260 for (int _id = 0, _max = (mesh)->get_max_node_id(); _id < _max; _id++) \
261 if (((n) = (mesh)->get_node(_id))->used) \
Stores one element of a mesh.
Represents a finite element mesh. Typical usage: MeshSharedPtr mesh; Hermes::Hermes2D::MeshReaderH2DX...
Hermes::Hermes2D::Element * getElement(double x, double y)
Return the Element.
Stores one node of a mesh.