Branch data Line data Source code
1 : : //-------------------------------------------------------------------------
2 : : // Filename : CubitOctreeConstants.hpp
3 : : //
4 : : // Purpose : Constants for the octree generation
5 : : //
6 : : // Creator : William Roshan Quadros
7 : : //
8 : : // Creation Date : 9/2/2013
9 : : //
10 : : // Owner :
11 : : //-------------------------------------------------------------------------
12 : :
13 : : #ifndef CUBIT_OCTREE_CONSTANTS_H
14 : : #define CUBIT_OCTREE_CONSTANTS_H
15 : :
16 : :
17 : :
18 : : #include "CubitDefines.h"
19 : :
20 : : const int OCTREE_X = 0;
21 : : const int OCTREE_Y = 1;
22 : : const int OCTREE_Z = 2;
23 : : //- Cartician coordinate axis
24 : :
25 : :
26 : : //- during triliear interpolation if number of zero size nodes exceeds MAX_NUM_ZERO_SIZE_NODES
27 : : //- then average size is taken instead of zero.
28 : : const int MAX_NUM_ZERO_SIZE_NODES = 2;
29 : :
30 : : const int CUTOFF_OCTREE_DEPTH = 3;
31 : : const int CUTOFF_BBOX_RANGE_RATIO = 17;
32 : : const int CUTOFF_NUM_NODES = 250;
33 : :
34 : : enum CubitOctreeType{ CUBIT_OCTREE_VOLUME, CUBIT_OCTREE_FACE, CUBIT_OCTREE_EDGE };
35 : : // Depth settings for octree
36 : : const int MIN_DEPTH_OCTREE[4] = { 0, 2, 5, 5};
37 : : const int MAX_DEPTH_OCTREE[4] = { 0, 7, 7, 7};
38 : : const int INCR_DEPTH_OCTREE_FOR_SKELETON = 0;
39 : 11445 : const int OCTREE_MIN_DEPTH_OCTREE[4] = { 0, MIN_DEPTH_OCTREE[1] + INCR_DEPTH_OCTREE_FOR_SKELETON,MIN_DEPTH_OCTREE[2] + INCR_DEPTH_OCTREE_FOR_SKELETON, MIN_DEPTH_OCTREE[3] + INCR_DEPTH_OCTREE_FOR_SKELETON};
40 : 11445 : const int OCTREE_MAX_DEPTH_OCTREE[4] = { 0, MAX_DEPTH_OCTREE[1] + INCR_DEPTH_OCTREE_FOR_SKELETON,MAX_DEPTH_OCTREE[2] + INCR_DEPTH_OCTREE_FOR_SKELETON, MAX_DEPTH_OCTREE[3] + INCR_DEPTH_OCTREE_FOR_SKELETON};
41 : :
42 : : enum OctreePosition { O_UNSET = -1, O_LEFT, O_RIGHT, O_BOTTOM, O_TOP, O_BACK, O_FRONT };
43 : :
44 : :
45 : : enum OctreeNodeConstant {NODE_SIZE, NODE_FACE_NUM, NODE_DISTANCE,NODE_NORMAL, NODE_TENSOR, NODE_ELEM_TENSOR };
46 : : // for display of size, face num, and distance at grid node
47 : :
48 : : const double OCTREE_TOLERANCE_FOR_CURVE_DECIMATION_FACTOR = 0.5;
49 : :
50 : : //- Default level of time-accuracy is set to 2 <1 to 3>
51 : : const int OCTREE_TIME_ACCURACY_LEVEL = 2;
52 : : // - This angle is used to insert virtual facetpointdata while generating PR-Octree
53 : : const double FACET_SPLITTING_INTERNAL_ANGLE = 10.0 * CUBIT_PI / 180.0;
54 : : //- graphics facets are splitted before generating the chordal axis.
55 : : //- after facets' classification, some class of facets are split only
56 : : //- if the internal angle is large. The new facets will contain internal angle
57 : : //- approximately equal to FACET_SPLITTING_INTERNAL_ANGLE
58 : :
59 : :
60 : : enum OctreeSourceEntityType{ OCTREE_SIZE_DEFAULT=0 };
61 : :
62 : : const double OCTREE_EPSILON = 0.000001;
63 : : const CubitBoolean OCTREE_POSITIVE = CUBIT_TRUE;
64 : : const CubitBoolean OCTREE_NEGATIVE = CUBIT_FALSE;
65 : :
66 : : enum InterpolationMode{ INVERSE_SIZE, INVERSE_DISTANCE, INVERSE_SIZE_DISTANCE, MIN_DISTANCE, MIN_SIZE, AVERAGE };
67 : : //- Schemes for interpolation of sizing function
68 : :
69 : : enum InterpolationType{ INVERSE_LINEAR, INVERSE_QUADRATIC, INVERSE_CUBIC };
70 : : //- Options for inverse distance interpolation.
71 : : const InterpolationType DEFAULT_INVERSE_DISTANCE_SCHEME_INSIDE_CELL = INVERSE_LINEAR;
72 : :
73 : : enum InterpolationModeInsideCell{ TRILINEAR_INTERPOLATION_INSIDE_CELL, INVERSE_DISTANCE_INTERPOLATION_INSIDE_CELL, MIN_DISTANCE_INTERPOLATION_INSIDE_CELL, MIN_SIZE_INTERPOLATION_INSIDE_CELL, INVERSE_SQUARE_DISTANCE_INTERPOLATION_INSIDE_CELL };
74 : : const InterpolationModeInsideCell DEFAULT_INTERPOLATION_INSIDE_CELL = INVERSE_SQUARE_DISTANCE_INTERPOLATION_INSIDE_CELL;
75 : :
76 : :
77 : :
78 : : enum SizeType{ MESH_SIZE, SCALED_SIZE };
79 : : //- Size for meshing and scaled size for display (1-10)
80 : :
81 : : enum DistanceMetric {PROJECTED_DIST, CAPSULE_DIST, MANHATTAN_DIST};
82 : :
83 : :
84 : : enum IntersectionMethod {GRID_EDGE_INT, SAT_INTERSECT};
85 : : //- These are the facet-octree cell intersection methods
86 : :
87 : :
88 : : const IntersectionMethod OCTREE_DEFAULT_INTERSECTION_METHOD[4] = { (IntersectionMethod)0, SAT_INTERSECT, SAT_INTERSECT, SAT_INTERSECT};
89 : : const DistanceMetric defaultDistanceMetric = CAPSULE_DIST;
90 : : const double N_CLOSEST_FACETS_FACTOR_FOR_FRONT_NORMALS = 1.00;
91 : :
92 : :
93 : : //- Tolerance
94 : : const double ANGLE_BETWEEN_FACETS_NORMAL_FOR_OCTREE_BASED_ON_SURF_CURVATURE_FACTOR = 0.5;
95 : : const double SLENDER_FACET_INTERNAL_ANGLE = 10.0 * CUBIT_PI / 180.0;
96 : :
97 : : const double ANG_FACET_EXTRACT[4] = { 15.0, 15.0, 10.0, 5.0 };
98 : :
99 : : #endif
100 : :
101 : : //EOF
|