00001 #ifndef _ELEM_TYPE_H_
00002 #define _ELEM_TYPE_H_
00003
00004 namespace FemViewer {
00005 namespace ELEMS {
00006 typedef unsigned int uint;
00007
00008 typedef enum {
00009 VERTEX = 0,
00010 EDGE,
00011 FACE,
00012 PRIZM,
00013 FIELD,
00014 INVALID_ELM = 999,
00015 } ElemType;
00016
00017 typedef struct {
00018 float x, y, z;
00019 } Vertex;
00020
00021 typedef struct {
00022 int edge_type;
00023 uint indexes[2];
00024 } Edge;
00025
00026 typedef enum {
00027 TRI_FACE = 3,
00028 QUAD_FACE = 4,
00029 } FaceType;
00030
00031 typedef struct {
00032 FaceType face_type;
00033 int bound_cond;
00034 int shift_pos;
00035 int neighbour;
00036 int index_oriented_edges[4];
00037 } Face;
00038
00039 typedef struct {
00040 uint nr_of_faces;
00041 uint mat_id;
00042 uint parent_id;
00043 uint refine_type;
00044 int face_idx[5];
00045 } Element;
00046
00047 typedef struct {
00048 int pdeg;
00049
00050
00051
00052
00053
00054 double *vec_dof_1;
00055 double *vec_dof_2;
00056 double *vec_dof_3;
00057 } apt_dg_dof_ent;
00058
00059 typedef enum {
00060 APC_TENSOR = 0,
00061 APC_COMPLETE = 1,
00062 } BaseFunType;
00063
00064
00065
00066 typedef struct {
00067 int mesh_id;
00068 int n_els;
00069 int nreq;
00070 int nr_sol;
00071 int pdeg_coarse;
00072 BaseFunType base;
00073
00074
00075
00076
00077
00078 apt_dg_dof_ent *dof_ents;
00079 } ElField;
00080
00081 }
00082 }
00083
00084
00085 #endif
00086