cgma
FacetGeometryCreator.hpp
Go to the documentation of this file.
00001 //-------------------------------------------------------------------------
00002 // Filename      : FacetGeometryCreator.hpp 
00003 //
00004 // Purpose       : For a list of facets, builds a topology of
00005 //                 surfaces, curves and vertices 
00006 //
00007 // Special Notes : 
00008 //
00009 // Creator       : Steven J. Owen
00010 //
00011 // Date          : 4/29/2001
00012 //
00013 // Owner         : Steven J. Owen
00014 //-------------------------------------------------------------------------
00015 
00016 #ifndef MESHGEOMETRYCREATOR_HPP
00017 #define MESHGEOMETRYCREATOR_HPP
00018 
00019 #include "DLIList.hpp"
00020 
00021 class FacetEntity;
00022 class FacetCurveMesh;
00023 class FacetSurfaceMesh;
00024 class FacetVolumeMesh;
00025 class LoopSM;
00026 class Body;
00027 class Surface;
00028 class FacetPointMesh;
00029 class CubitPoint;
00030 class CubitFacetEdge;
00031 class CubitFacet;
00032 
00033 class FacetGeometryCreator
00034 {
00035 public:
00036   FacetGeometryCreator( );
00037   FacetGeometryCreator(DLIList<FacetEntity*> &face_list,
00038                        DLIList<FacetEntity*> &edge_list,
00039                        DLIList<FacetEntity*> &point_list );
00040   //- Constructor
00041 
00042   ~FacetGeometryCreator();
00043   //- Destructor
00044 
00045   void print_me();
00046    
00047 private:
00048 
00049   DLIList<FacetEntity*> faceList;
00050   DLIList<FacetEntity*> edgeList;
00051   DLIList<FacetEntity*> pointList;
00052   DLIList<FacetSurfaceMesh*> facetSurfaceList;
00053   DLIList<FacetCurveMesh*> facetCurveList;
00054   DLIList<FacetPointMesh*> facetPointList;
00055 
00056   DLIList<FacetCurveMesh*> *hashCurveArray;
00057   int hashCurveSize;
00058   DLIList<FacetPointMesh*> *hashPointArray;
00059   int hashPointSize;
00060 
00061   void set_up_tool_datas( );
00062   void delete_tool_datas( );
00063 
00064   CubitStatus create_volume_boundaries( DLIList<FacetSurfaceMesh*> &facet_surface_sheets,
00065                                         CubitBoolean use_feature_angle,
00066                                         double min_dot,
00067                                         CubitBoolean split_surfaces );
00068     //- creates the correct facetsurfaces for all the element blocks.
00069 
00070   CubitStatus create_surface_boundaries( DLIList<FacetSurfaceMesh*> &facet_surface_list,
00071                                          DLIList<FacetCurveMesh*> &facet_curve_list,
00072                                          CubitBoolean use_feature_angle,
00073                                          double min_dot );
00074     //- creates the correct blockcurves for all the surfaces
00075 
00076   CubitStatus create_curve_boundaries( DLIList<FacetCurveMesh*> &facet_curve_list,
00077                                        DLIList<FacetPointMesh*> &facet_point_list );
00078     //- creates the correct blockpoints for all the curves
00079 
00080   CubitStatus classify_edge( FacetEntity *edge_ptr,
00081                              DLIList<FacetCurveMesh*> &facet_curve_list,
00082                              FacetSurfaceMesh *fsm_ptr );
00083     //- sorts a edge into its correct curve based on its associated
00084     //- blocks and sidesets.  Creates a new facet curve if necessary.
00085 
00086   CubitStatus classify_point(CubitPoint *point_ptr,
00087                              DLIList<FacetPointMesh*> &facet_point_list,
00088                              FacetCurveMesh *fcm_ptr ); 
00089     //- sorts a node into correct point based on its associated
00090     //- curve.  Creates a new facet point if necessary
00091    
00092   CubitStatus build_geometry( DLIList<FacetSurfaceMesh*> &facet_surface_list,
00093                               DLIList<FacetCurveMesh*> &facet_curve_list,
00094                               DLIList<FacetPointMesh*> &facet_point_list,
00095                               int interp_order,
00096                               CubitBoolean use_feature_angle,
00097                               double min_dot,
00098                               CubitBoolean smooth_non_manifold ,
00099                               CubitBoolean split_surfaces );
00100     //- build the CUBIT geometry based on the Facet entity class lists
00101 
00102   CubitStatus build_point_geometry( DLIList<FacetPointMesh*> &facet_point_list );
00103     //- From the facet point list, create geometric points for each
00104 
00105   CubitStatus build_curve_geometry( DLIList<FacetCurveMesh*> &facet_curve_list );
00106     //- From the facet curve list, create geometric curves for each
00107 
00108   CubitStatus build_loop_geometry( DLIList<FacetCurveMesh*> &facet_curve_list,
00109                                    FacetSurfaceMesh *fsm_ptr,
00110                                    DLIList<LoopSM*> &loop_list,
00111                                    int &ncurves );
00112     //- From the facet curve list of a surface, create geometric loops
00113 
00114   CubitStatus build_surface_geometry( DLIList<FacetSurfaceMesh*> &facet_surface_list,
00115                                       int interp_order, double min_dot );
00116     //- From the facet surface list, create geometric surface,
00117     //- loops and coedges for each surface in the list
00118 
00119   CubitStatus init_hash_curves( );
00120   void delete_hash_curves( );
00121   int get_curve_hash_key( DLIList<FacetSurfaceMesh*> *bsm_list_ptr );
00122     // functions for hashing curves - to speed up edge classification
00123 
00124   CubitStatus init_hash_points( );
00125   void delete_hash_points( );
00126   int get_point_hash_key( DLIList<FacetCurveMesh*> *bsm_list_ptr );
00127     // functions for hashing points - to speed up node classification
00128 
00129   CubitStatus clean_geometry( CubitBoolean smooth_non_manifold,
00130                             CubitBoolean split_surfaces,
00131                             CubitBoolean use_feature_angle,
00132                             double min_dot,
00133                             DLIList <FacetCurveMesh *> &facet_curve_list );
00134 
00135     //- fix the edge control points and the normals so they are conforming
00136     //- (or non-conforming) accross curves
00137 
00138 
00139 };
00140 
00141 #endif
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines