Branch data Line data Source code
1 : : //- Class: TDGeomFacet
2 : : //- Owner: Steve Owen
3 : : //- Description: Data for reading in a mesh and creating a geometry.
4 : : //- This is assumed to be stored on a facet entity.
5 : : //- Checked By:
6 : : //- Version:
7 : :
8 : : #ifndef TD_GEOM_MESH_HPP
9 : :
10 : :
11 : : #define TD_GEOM_MESH_HPP
12 : :
13 : : #include "CubitDefines.h"
14 : : #include "DLIList.hpp"
15 : : #include "ToolData.hpp"
16 : : #include "CubitPoint.hpp"
17 : : class FacetEntity;
18 : : class ChollaEntity;
19 : : class ChollaVolume;
20 : : class ChollaSurface;
21 : : class ChollaCurve;
22 : : class ChollaPoint;
23 : : class CubitFacet;
24 : : class CubitFacetEdge;
25 : :
26 : :
27 : : class TDGeomFacet : public ToolData
28 : : {
29 : : private:
30 : :
31 : : static MemoryManager memoryManager;
32 : : //- memory management object
33 : :
34 : : int blockId;
35 : :
36 : : int hitFlag;
37 : : //- Used for looping.
38 : :
39 : : DLIList<ChollaSurface*> ChollaSurfaceList;
40 : : //- list of surfaces this element is on.
41 : :
42 : : DLIList<ChollaCurve*> ChollaCurveList;
43 : : //- list of curves this element (edge) is on
44 : :
45 : : DLIList<ChollaPoint*> ChollaPointList;
46 : : //- list chollapoints this element (point) is on
47 : :
48 : : DLIList<CubitPoint*> myPoints;
49 : : //- list of associated points for this entity (could be one).
50 : :
51 : : CubitVector normal;
52 : : //- normal or tangent vector of a facet or facet edge
53 : :
54 : : DLIList<CubitFacetEdge *> *partnerEdgeList;
55 : : //- other edges that share the same geometry
56 : :
57 : : DLIList<CubitPoint *> *partnerPointList;
58 : : //- other points that share the same geometry
59 : :
60 : : public:
61 : :
62 : : TDGeomFacet();
63 : : //- constructor
64 : :
65 : : ~TDGeomFacet();
66 : :
67 : : static int is_geom_facet(const ToolData* td);
68 : :
69 : 1584 : int get_block_id()
70 : 1584 : {return blockId;}
71 : :
72 : 2618 : void set_block_id(int new_id)
73 : 2618 : {blockId = new_id;}
74 : :
75 : 10428 : int get_hit_flag()
76 : 10428 : {return hitFlag;}
77 : :
78 : 4972 : void set_hit_flag(int flag)
79 : 4972 : {hitFlag = flag;}
80 : :
81 : : void add_cholla_owner(ChollaEntity *cholla_entity);
82 : :
83 : : void add_cholla_surf(ChollaSurface *f_s_m);
84 : :
85 : 7590 : void get_cholla_surfs(DLIList<ChollaSurface*> &surf_list)
86 : 7590 : {surf_list = ChollaSurfaceList;}
87 : :
88 : : void remove_cholla_surfs()
89 : : {ChollaSurfaceList.clean_out();}
90 : :
91 : 935 : void remove_cholla_surf( ChollaSurface *chsurf_ptr )
92 : 935 : {ChollaSurfaceList.remove( chsurf_ptr );}
93 : :
94 : 2684 : void add_cholla_curve(ChollaCurve *chcurv_ptr)
95 : 2684 : {ChollaCurveList.append_unique( chcurv_ptr );}
96 : :
97 : 2618 : void get_cholla_curves(DLIList<ChollaCurve*> &curv_list)
98 : 2618 : {curv_list = ChollaCurveList;}
99 : :
100 : : void remove_cholla_curves()
101 : : {ChollaCurveList.clean_out();}
102 : :
103 : 880 : void remove_cholla_curve( ChollaCurve *chcurv_ptr )
104 : 880 : {ChollaCurveList.remove( chcurv_ptr );}
105 : :
106 : 0 : void add_cholla_point(ChollaPoint *chpt_ptr)
107 : 0 : {ChollaPointList.append_unique( chpt_ptr );}
108 : :
109 : 0 : void get_cholla_points(DLIList<ChollaPoint*> &point_list)
110 : 0 : {point_list = ChollaPointList;}
111 : :
112 : : void remove_cholla_points()
113 : : {ChollaPointList.clean_out();}
114 : :
115 : : void remove_cholla_point( ChollaPoint *point_ptr )
116 : : { ChollaPointList.remove( point_ptr ); }
117 : :
118 : : void add_point(CubitPoint *point)
119 : : {myPoints.append(point);}
120 : :
121 : : void delete_point(CubitPoint *point)
122 : : {myPoints.omit(point);}
123 : :
124 : : void get_points(DLIList<CubitPoint*> &point_list)
125 : : {point_list += myPoints;}
126 : :
127 : : CubitPoint* get_first_point()
128 : : {
129 : : myPoints.reset();
130 : : if ( myPoints.size() )
131 : : return myPoints.get();
132 : : else
133 : : return (CubitPoint*) NULL;
134 : : }
135 : :
136 : 0 : void add_partner_edge( CubitFacetEdge *partner )
137 [ # # ]: 0 : { if (partnerEdgeList == NULL)
138 [ # # ]: 0 : partnerEdgeList = new DLIList<CubitFacetEdge *>;
139 : 0 : partnerEdgeList->append( partner ); };
140 : :
141 : 0 : void get_partner_edges( DLIList <CubitFacetEdge *> &partner_list )
142 [ # # ]: 0 : { if (partnerEdgeList != NULL) partner_list += *partnerEdgeList; };
143 : :
144 : 0 : int num_partner_edges( )
145 [ # # ]: 0 : { if (partnerEdgeList == NULL)
146 : 0 : return 0;
147 : : else
148 : 0 : return partnerEdgeList->size(); }
149 : :
150 : 0 : void add_partner_point( CubitPoint *partner )
151 [ # # ]: 0 : { if (partnerPointList == NULL)
152 [ # # ]: 0 : partnerPointList = new DLIList<CubitPoint *>;
153 : 0 : partnerPointList->append( partner ); };
154 : :
155 : 0 : void get_partner_points( DLIList <CubitPoint *> &partner_list )
156 [ # # ]: 0 : { if (partnerPointList != NULL) partner_list += *partnerPointList; };
157 : :
158 : : int num_partner_points( )
159 : : { if (partnerPointList == NULL)
160 : : return 0;
161 : : else
162 : : return partnerPointList->size(); }
163 : :
164 : : CubitBoolean is_in_volume( ChollaVolume *chvol_ptr );
165 : :
166 : 10472 : SetDynamicMemoryAllocation(memoryManager)
167 : : //- class specific new and delete operators
168 : :
169 : : static void set_memory_allocation_increment(int increment = 0)
170 : : {memoryManager.set_memory_allocation_increment(increment);}
171 : : //- set block memory size increment
172 : :
173 : : static void destroy_memory()
174 : : {memoryManager.destroy_memory();}
175 : : //- destroy all memory allocted to this object
176 : :
177 : : static CubitStatus add_geom_facet(FacetEntity *facet_entity, int block_id);
178 : : static CubitStatus add_geom_facet(CubitFacet *facet_ptr, int block_id);
179 : : static CubitStatus add_geom_facet(CubitFacetEdge *edge_ptr, int block_id);
180 : : static CubitStatus add_geom_facet(CubitPoint *point_ptr, int block_id);
181 : :
182 : : static TDGeomFacet* get_geom_facet(FacetEntity *facet_entity);
183 : : static TDGeomFacet* get_geom_facet(CubitFacet *facet_ptr);
184 : : static TDGeomFacet* get_geom_facet(CubitFacetEdge *edge_ptr);
185 : : static TDGeomFacet* get_geom_facet(CubitPoint *point_ptr);
186 : :
187 : : static int get_block_id(FacetEntity *mesh_entity);
188 : : static int get_block_id(CubitFacet *facet_ptr);
189 : : static int get_block_id(CubitFacetEdge *edge_ptr);
190 : : static int get_block_id(CubitPoint *point_ptr);
191 : :
192 : : static int get_hit_flag(FacetEntity *mesh_entity);
193 : : static void set_hit_flag(FacetEntity *mesh_entity, int new_val);
194 : 6336 : CubitVector get_normal( ) { return normal; }
195 : 2904 : void set_normal( CubitVector &norm ) { normal = norm; }
196 : :
197 : : CubitBoolean is_partner( CubitFacetEdge *edge_ptr );
198 : : CubitBoolean is_partner( CubitPoint *point_ptr );
199 : :
200 : : void reset_TD_as_new();
201 : :
202 : : int geo_type();
203 : :
204 : : };
205 : :
206 : :
207 : : #endif // TD_GEOM_MESH_HPP
208 : :
209 : :
|