LCOV - code coverage report
Current view: top level - geom/Cholla/cgm - ChollaSurface.hpp (source / functions) Hit Total Coverage
Test: coverage_sk.info Lines: 21 36 58.3 %
Date: 2020-06-30 00:58:45 Functions: 11 19 57.9 %
Branches: 0 0 -

           Branch data     Line data    Source code
       1                 :            : //- Class: ChollaSurface
       2                 :            : //- Owner: Steven J. Owen
       3                 :            : //- Description: Maintains a list of mesh.  This is used to store
       4                 :            : //-        the exterior skin while creating a geometry from a mesh.
       5                 :            : //- Created: 5/25/00
       6                 :            : //- Checked By:
       7                 :            : //- Version:
       8                 :            : 
       9                 :            : #ifndef ChollaSurface_HPP
      10                 :            : #define ChollaSurface_HPP
      11                 :            : 
      12                 :            : 
      13                 :            : #include "DLIList.hpp"
      14                 :            : #include "ChollaEntity.hpp"
      15                 :            : 
      16                 :            : class ChollaVolume;
      17                 :            : class ChollaCurve;
      18                 :            : class ChollaPoint;
      19                 :            : class FacetEntity;
      20                 :            : class CubitFacet;
      21                 :            : class CubitPoint;
      22                 :            : class CubitFacetEdge;
      23                 :            : class FacetEvalTool;
      24                 :            : 
      25                 :            : class ChollaSurface : public ChollaEntity
      26                 :            : {
      27                 :            : private:   
      28                 :            :   int id;
      29                 :            :   int blockId;
      30                 :            :   CubitBoolean myFlag;
      31                 :            : 
      32                 :            :   DLIList<FacetEntity*> surfaceElemList;
      33                 :            :   DLIList<ChollaCurve*> curveList;
      34                 :            :   DLIList<ChollaVolume*> volList;
      35                 :            :   void *mySurface;
      36                 :            :   FacetEvalTool *myEvalTool;
      37                 :            :   ChollaSurface *myMergePartner;
      38                 :            :   void check_faceting();
      39                 :            :   
      40                 :            : public:
      41                 :            :    
      42                 :            :   ChollaSurface(int block_id);
      43                 :            :   ~ChollaSurface();
      44                 :            : 
      45                 :       1078 :   void get_facets(DLIList<FacetEntity*> &surface_facets)
      46                 :       1078 :     {surface_facets += surfaceElemList;}
      47                 :            :   void get_points( DLIList<CubitPoint *> &point_list );
      48                 :            : 
      49                 :        594 :   void assign_geometric_surface(void *surf)
      50                 :        594 :     {mySurface = surf;}
      51                 :        341 :   void* get_geometric_surface()
      52                 :        341 :     {return mySurface;}
      53                 :        341 :   void assign_eval_tool(FacetEvalTool *eval_tool_ptr)
      54                 :        341 :     {myEvalTool = eval_tool_ptr;}
      55                 :        341 :   FacetEvalTool* get_eval_tool()
      56                 :        341 :     {return myEvalTool;}
      57                 :            :   
      58                 :            :   ChollaSurface *merge_partner(){ return myMergePartner; }
      59                 :          0 :   void set_merge_partner( ChollaSurface *merge_partner )
      60                 :          0 :     { myMergePartner = merge_partner;}
      61                 :            :   
      62                 :            :   CubitBoolean get_flag(){ return myFlag; }
      63                 :            :   void set_flag( CubitBoolean stat ){ myFlag = stat; }                       
      64                 :            : 
      65                 :       1859 :   void add_facet(FacetEntity *exterior_face)
      66                 :       1859 :     {surfaceElemList.append(exterior_face);}
      67                 :            : 
      68                 :            :   int add_mesh_unique(FacetEntity *exterior_face)
      69                 :            :     {return surfaceElemList.append_unique(exterior_face);} 
      70                 :            :   
      71                 :          0 :   void remove_facet( FacetEntity *facet )
      72                 :          0 :   {surfaceElemList.remove( facet );}
      73                 :            :   
      74                 :            :   bool is_contain( FacetEntity *facet );
      75                 :            : 
      76                 :          0 :   DLIList<FacetEntity*> &get_facet_list()
      77                 :          0 :     {return surfaceElemList;}
      78                 :            :   DLIList<FacetEntity*> *get_facet_list_ptr()
      79                 :            :     {return &surfaceElemList;}
      80                 :            :   void get_vertices( DLIList<ChollaPoint *> &chpt_list );
      81                 :       1364 :   void get_curves( DLIList<ChollaCurve*> &bcm_list )
      82                 :       1364 :     {bcm_list = curveList; }
      83                 :       2112 :   void add_curve( ChollaCurve *bcm_ptr )
      84                 :       2112 :     {curveList.append(bcm_ptr);}
      85                 :        154 :   void add_curve_unique( ChollaCurve *bcm_ptr )
      86                 :        154 :     {curveList.append_unique(bcm_ptr);}
      87                 :       1463 :   void remove_curve( ChollaCurve *bcm_ptr)
      88                 :       1463 :     {curveList.remove(bcm_ptr);}
      89                 :          0 :   void get_volumes( DLIList<ChollaVolume*> &cholla_vol_list )
      90                 :          0 :     {cholla_vol_list = volList; }
      91                 :          0 :   void add_volume( ChollaVolume *cholla_vol_ptr )
      92                 :          0 :     {volList.append(cholla_vol_ptr);}
      93                 :            :   void add_volume_unique( ChollaVolume *cholla_vol_ptr )
      94                 :            :     {volList.append_unique(cholla_vol_ptr);}
      95                 :          0 :   void remove_volume( ChollaVolume *cholla_vol_ptr)
      96                 :          0 :     {volList.remove(cholla_vol_ptr);}
      97                 :          0 :   int num_volumes(){return volList.size();}
      98                 :            :   CubitBoolean is_in_volume( ChollaVolume *chvol_ptr );
      99                 :            :   
     100                 :          0 :   int get_block_id()
     101                 :          0 :     {return blockId;}
     102                 :            :   void set_block_id(int flag)
     103                 :            :     { blockId = flag; }
     104                 :            : 
     105                 :       6160 :   int get_id(){return id;}
     106                 :            : 
     107                 :            :   CubitStatus get_adj_facets( FacetEntity *start_face_ptr, 
     108                 :            :                              DLIList<FacetEntity*> &face_list,
     109                 :            :                              int mydebug = 0,
     110                 :            :                              bool bound_check = false,
     111                 :            :                              bool feature_edge_check = true);
     112                 :            :     // recursive function that creates a list of all faces connected
     113                 :            :     // the passed in face that are part of this surface (or shell)
     114                 :            : 
     115                 :            : 
     116                 :            :   CubitStatus split_surface( DLIList<ChollaSurface*> &block_surface_list );
     117                 :            :     // split this surface into multiple ChollaSurface where there are
     118                 :            :     // discontinuous faces.
     119                 :            : 
     120                 :            :   CubitStatus feature_angle( double min_dot, 
     121                 :            :                              DLIList<CubitFacetEdge *> &feature_edge_list);
     122                 :            :     // mark all edges that exceed the specified feature angle
     123                 :            :     // min_dot is the minimum dot product between adjacent face normals
     124                 :            :         
     125                 :            :         CubitStatus add_preexisting_feature_edges( DLIList<CubitFacetEdge *> &feature_edge_list);
     126                 :            :           // edges that were marked previously in function ChollaEngine::mark_features
     127                 :            :           // are added to the feature edge list
     128                 :            : 
     129                 :            :   CubitStatus non_manifold_edges( DLIList<CubitFacetEdge *> &feature_edge_list );
     130                 :            :     // mark all edges that are non-manifold (have more than 2 adj facets
     131                 :            : 
     132                 :            :   CubitStatus clean_features( );
     133                 :            :     // clean up edges that do not form complete loops as a result 
     134                 :            :     // of feature angle
     135                 :            :   
     136                 :            :   void init_hit_flags();
     137                 :            :     // initialize the hit flags to the block surface id - used for 
     138                 :            :     // traversing the faces
     139                 :            : 
     140                 :            :   CubitStatus update_boundary_tool_data();
     141                 :            :     //- update the surface IDs on the boundary facet tooldatas
     142                 :            : 
     143                 :            :   void reset_facet_flags();
     144                 :            :     //- reset the marked flags on the facets
     145                 :            : 
     146                 :            :   CubitBoolean is_adjacent( ChollaSurface *other_surf );
     147                 :            :     //- determine if other_surf is adjacent to this surface
     148                 :            : 
     149                 :            :   DLIList<DLIList<CubitFacetEdge *>*> *get_loop_edges( );
     150                 :            :     // return the ordered list of edges on the boundary of this surface 
     151                 :            :   
     152                 :            :   void flip_facets();
     153                 :            :     // invert all the facets on this surface
     154                 :            :   
     155                 :            :   void debug_draw();
     156                 :            : };
     157                 :            : 
     158                 :            : template <> struct DLIListSorter<ChollaSurface*>
     159                 :            : {
     160                 :            :   bool operator()(ChollaSurface* a, ChollaSurface* b) { return a->get_id() < b->get_id(); }
     161                 :            : };
     162                 :            : 
     163                 :            : #endif
     164                 :            : 
     165                 :            : 
     166                 :            : 
     167                 :            : 
     168                 :            : 

Generated by: LCOV version 1.11