16 #ifndef __H2D_TRAVERSE_H
17 #define __H2D_TRAVERSE_H
19 #include "hermes_common.h"
58 static const uint64_t ONE = (uint64_t)1 << 63;
69 class HERMES_API
Traverse :
public Hermes::Mixins::Loggable
89 void push_transform(
unsigned char son,
unsigned char i,
bool is_triangle =
false);
91 uint64_t get_transform(
unsigned char i);
105 State** get_states(std::vector<MeshSharedPtr> meshes,
unsigned int& states_count);
106 State** get_states(MeshSharedPtr* meshes,
unsigned short meshes_count,
unsigned int& states_count);
110 template<
typename Scalar>
119 void init_transforms(
State* s,
unsigned char i);
121 #pragma region union-mesh
122 static UniData** construct_union_mesh(
unsigned char n, MeshSharedPtr* meshes, MeshSharedPtr unimesh);
124 uint64_t init_idx(
Rect* cr,
Rect* er);
138 State* push_state(
int* top_by_ref =
nullptr);
140 void set_boundary_info(
State* s);
142 void free_state(
State* state);
144 unsigned char spaces_size;
146 MeshSharedPtr unimesh;
147 template<
typename T>
friend class Adapt;
152 template<
typename T>
friend class Filter;
double lo
H2D only: for internal use.
Stores one element of a mesh.
Represents a finite element mesh. Typical usage: MeshSharedPtr mesh; Hermes::Hermes2D::MeshReaderH2DX...
int surf_num
local element surface number
Element * base
for internal use
#define H2D_MAX_NUMBER_EDGES
A maximum number of edges of an element.
Determines the position on an element surface (edge in 2D and Face in 3D).
int marker
surface marker (surface = edge in 2D and face in 3D)
This class is a one-thread (non-DG) assembly worker.
double t
H2D only: position between v1 and v2 in the range[0..1].
Provides methods of integration order calculation.
int v1
H2D only: edge endpoint vertex id numbers.