8#ifndef COVISE_GRIDMETHODS_H
9#define COVISE_GRIDMETHODS_H
15#define PI 3.14159265358979323846
26#define rintf(dval) ((_isnan(dval)) ? (dval) : (((((dval)-floor(dval)) >= 0.5f) ? (ceil(dval)) : (floor(dval)))))
36 static int isin_triangle(
const float *point,
41 static void interpolateInTriangle(
float *v_interp,
const float *point,
42 int no_arrays,
int array_dim,
43 const float *
const *velo,
int c0,
int c1,
int c2,
44 const float *p0,
const float *p1,
const float *p2);
45 static void ExtractNormal(
float *normal,
int base,
int second,
int third,
46 const float *x_in,
const float *y_in,
const float *z_in);
47 static void ProjectPoint(
float *proj_point,
const float *point,
48 const int *conn,
int elem_cell,
int num_of_vert,
49 const float *x_in,
const float *y_in,
const float *z_in);
50 static float tri_surf(
float *surf,
const float *p0,
51 const float *p1,
const float *p2);
59 static void interpElem(
float fem_c[3],
float *
interp,
60 int array_len,
const float *velos);
63 static int asc_compar_fp(
const void *key,
const void *fp);
64 static int desc_compar_fp(
const void *key,
const void *fp);
77 static void getBoundBox(
BoundBox &bbox,
int no_v,
const int *v_l,
78 const float *x_in,
const float *y_in,
const float *z_in);
80 static float getMaxVel(
int no_v,
const int *v_l,
81 const float *u,
const float *
v,
const float *
w);
93 static void hex2tet(
int ind,
const int *el,
const int *cl,
int i,
int *tel,
int *tcl);
94 static void prism2tet(
int ind,
const int *el,
const int *cl,
int i,
int *tel,
int *tcl);
95 static void pyra2tet(
int ind,
const int *el,
const int *cl,
int i,
int *tel,
int *tcl);
98 static float tetra_vol(
const float p0[3],
const float p1[3],
99 const float p2[3],
const float p3[3]);
101 static int isin_tetra(
const float px[3],
const float p0[3],
const float p1[3],
102 const float p2[3],
const float p3[3],
float rel_tol);
106 static void interpolateInTetra(
float *v_interp,
const float *point,
107 int no_arrays,
int array_dim,
const float *
const *velo,
108 int c0,
int c1,
int c2,
int c3,
109 const float *p0,
const float *p1,
const float *p2,
const float *p3);
113 static int interpolateVInHexa(
float *v_interp,
const float *point,
114 const float *
const *velo,
const int *connl,
115 const float *x_in,
const float *y_in,
const float *z_in);
117 static int interpolateInHexa(
float *v_interp,
const float *point,
118 int no_arrays,
int array_dim,
const float *
const *velo,
120 const float *x_in,
const float *y_in,
const float *z_in);
147 static void TesselatePolyhedron(
TESSELATION &triangulated_polyhedron,
int num_elem_in,
int *elem_in,
int num_conn_in,
int *conn_in,
float *xcoord_in,
float *ycoord_in,
float *zcoord_in);
148 static void ComputeBoundingBox(
int num_coord_in,
float *x_coord_in,
float *y_coord_in,
float *z_coord_in,
POINT3D &box_min,
POINT3D &box_max,
int &radius );
153 static void RandomRay(
POINT3D &end_point,
int radius);
155 static int PlaneCoeff(
float *triangle_x,
float *triangle_y,
float *triangle_z,
POINT3D &normal,
double &
distance);
156 static char RayPlaneIntersection(
float *triangle_x,
float *triangle_y,
float *triangle_z,
POINT3D query_point,
POINT3D end_point,
POINT3D &int_point,
int &component_index);
159 static char InTri3D(
float *triangle_x,
float *triangle_y,
float *triangle_z,
int component_index,
POINT3D int_point);
160 static char InPlane();
162 static char RayTriangleCrossing(
float *triangle_x,
float *triangle_y,
float *triangle_z,
POINT3D query_point,
POINT3D end_point);
163 static char RayTriangleIntersection(
float *triangle_x,
float *triangle_y,
float *triangle_z,
POINT3D query_point,
POINT3D end_point,
POINT3D &int_point);
164 static char InPolyhedron(
float *x_coord_in,
float *y_coord_in,
float *z_coord_in,
POINT3D box_min,
POINT3D box_max,
POINT3D query_point,
POINT3D &end_point,
int radius,
TESSELATION triangulated_polyhedron);
169 static double InterpolateCellData(
int num_coord_in,
float *x_coord_in,
float *y_coord_in,
float *z_coord_in,
float *data_in,
POINT3D query_point);
174 static int derivativesAtCenter(
float **v_interp[3],
175 int no_points,
int no_arrays,
const float *
const *velo,
176 int no_el,
int no_vert,
177 const int *tl,
const int *el,
const int *connl,
178 const float *x_in,
const float *y_in,
const float *z_in);
219 unsigned char *son_share);
223 octTree(
int num_grid_cells,
const int *keyBBoxes);
225 unsigned char *son_share,
int *count_sons);
239 static void cell3(
int idim,
int jdim,
int kdim,
240 float *x_in,
float *y_in,
float *z_in,
241 int *i,
int *j,
int *k,
242 float *
a,
float *
b,
float *
g,
243 float x[3],
float amat[3][3],
float bmat[3][3],
246 static void intp3(
int idim,
int jdim,
int kdim,
247 float *u_in,
float *v_in,
float *w_in,
249 float a,
float b,
float g,
252 static void metr3(
int idim,
int jdim,
int kdim,
253 float *x_in,
float *y_in,
float *z_in,
255 float a,
float b,
float g,
256 float amat[3][3],
float bmat[3][3],
257 int *idegen,
int *status);
259 static void padv3(
int *
first,
float cellfr,
int direction,
260 int idim,
int jdim,
int kdim,
261 float *x_in,
float *y_in,
float *z_in,
262 float *u_in,
float *v_in,
float *w_in,
263 int *i,
int *j,
int *k,
264 float *
a,
float *
b,
float *
g,
float x[4],
265 float min_velo,
int *status,
float *ovel,
float *nvel);
267 static void ssvdc(
float *
x,
int n,
int p,
float *
s,
float *e,
268 float *u,
float *
v,
float *work,
271 static void srot(
int n,
float *sx,
int incx,
float *sy,
272 int incy,
float c,
float s);
273 static void srotg(
float sa,
float sb,
float c,
float s);
274 static void sscal(
int n,
float sa,
float *sx,
int incx);
275 static void sswap(
int n,
float *sx,
int incx,
float *sy,
int incy);
276 static void saxpy(
int n,
float sa,
float *sx,
int incx,
float *sy,
int incy);
277 static float sdot(
int n,
float *sx,
int incx,
float *sy,
int incy);
278 static float snrm2(
int n,
float *sx,
int incx);
279 static void ptran3(
float amat[3][3],
float v[3],
float vv[3]);
280 static void inv3x3(
float a[3][3],
float ainv[3][3],
int *status);
#define DOEXPORT
Definition: coExport.h:331
GLdouble n
Definition: khronos-glext.h:8447
const GLubyte * c
Definition: khronos-glext.h:9864
GLint level
Definition: khronos-glext.h:6344
const GLdouble * v
Definition: khronos-glext.h:6442
GLboolean GLboolean GLboolean b
Definition: khronos-glext.h:6895
GLsizei GLsizei GLfloat distance
Definition: khronos-glext.h:13024
GLuint interp
Definition: khronos-glext.h:10487
const GLint * first
Definition: khronos-glext.h:6529
GLboolean GLboolean g
Definition: khronos-glext.h:6895
GLfloat GLfloat p
Definition: khronos-glext.h:9861
GLuint GLuint num
Definition: khronos-glext.h:10593
GLintptr offset
Definition: khronos-glext.h:6611
GLboolean GLboolean GLboolean GLboolean a
Definition: khronos-glext.h:6895
GLdouble s
Definition: khronos-glext.h:6441
GLubyte GLubyte GLubyte GLubyte w
Definition: khronos-glext.h:6793
GLint GLint GLint GLint GLint x
Definition: khronos-glext.h:6346
list of all chemical elements
Definition: coConfig.h:27
EDGE_VECTOR cross_product(EDGE_VECTOR &vector1, EDGE_VECTOR &vector2)
Definition: CuttingSurfaceGPMUtil.h:59
QTextStream & operator<<(QTextStream &out, const coConfigEntryStringList list)
Definition: coConfigEntryString.cpp:159
double length(EDGE_VECTOR &vector)
Definition: CuttingSurfaceGPMUtil.h:70
double dot_product(EDGE_VECTOR &vector1, EDGE_VECTOR &vector2)
Definition: CuttingSurfaceGPMUtil.h:54
Definition: covise_gridmethods.h:34
static void get_oct_tree_key(oct_tree_key &key, const BoundBox &bbox, float point[3], int exc)
std::vector< int > POLYGON
Definition: covise_gridmethods.h:141
int oct_tree_key
Definition: covise_gridmethods.h:185
std::vector< TRIANGLE > TESSELATION
Definition: covise_gridmethods.h:140
static int key_bbox_intersection(oct_tree_key macroEl, const keyBoundBox *bbox2, int level)
std::vector< int >::iterator POLYGON_ITERATOR
Definition: covise_gridmethods.h:142
Definition: covise_gridmethods.h:67
float z_min_
Definition: covise_gridmethods.h:70
float z_max_
Definition: covise_gridmethods.h:73
float y_min_
Definition: covise_gridmethods.h:69
float x_max_
Definition: covise_gridmethods.h:71
float x_min_
Definition: covise_gridmethods.h:68
float y_max_
Definition: covise_gridmethods.h:72
Definition: covise_gridmethods.h:127
double x
Definition: covise_gridmethods.h:128
double z
Definition: covise_gridmethods.h:130
double y
Definition: covise_gridmethods.h:129
Definition: covise_gridmethods.h:134
int vertex2
Definition: covise_gridmethods.h:136
int vertex1
Definition: covise_gridmethods.h:135
int vertex3
Definition: covise_gridmethods.h:137
Definition: covise_gridmethods.h:188
oct_tree_key min_
Definition: covise_gridmethods.h:189
oct_tree_key max_
Definition: covise_gridmethods.h:190
Definition: covise_gridmethods.h:194
static const int out_of_domain
Definition: covise_gridmethods.h:196
static const int NO_OF_BITS
Definition: covise_gridmethods.h:195
Definition: covise_gridmethods.h:209
int maxOfCountSons(int *)
octTree(int num_grid_cells, const int *keyBBoxes)
lists * lists_
Definition: covise_gridmethods.h:215
void ModifyLists(int num, int *elements, int offset)
void treePrint(std::ostream &, int, oct_tree_key, int)
const int * keyBBoxes_
Definition: covise_gridmethods.h:217
int * SonList(oct_tree_key son_key, int *list_cells, int num, unsigned char *son_share, int *count_sons)
int fill_son_share(oct_tree_key MacroCell, int son, int elem, int level, unsigned char *son_share)
void DivideOctTree(oct_tree_key MacroCell, int *list_cells, int num, int level, int offset)
int num_grid_cells_
Definition: covise_gridmethods.h:216