LCOV - code coverage report
Current view: top level - geom/Cholla/cgm - ChollaEngine.hpp (source / functions) Hit Total Coverage
Test: coverage_sk.info Lines: 7 10 70.0 %
Date: 2020-06-30 00:58:45 Functions: 4 7 57.1 %
Branches: 0 0 -

           Branch data     Line data    Source code
       1                 :            : /** \class ChollaEngine
       2                 :            : //-------------------------------------------------------------------------
       3                 :            : // Filename      : ChollaEngine.hpp 
       4                 :            : //
       5                 :            : // Purpose       : For a list of facets, builds a topology of
       6                 :            : //                 surfaces, curves and vertices 
       7                 :            : //
       8                 :            : // Special Notes : 
       9                 :            : //
      10                 :            : // Creator       : Steven J. Owen
      11                 :            : //
      12                 :            : // Date          : 4/29/2001
      13                 :            : //
      14                 :            : // Owner         : Steven J. Owen
      15                 :            : //-------------------------------------------------------------------------
      16                 :            : */
      17                 :            : #ifndef CHOLLAENGINE_HPP
      18                 :            : #define CHOLLAENGINE_HPP
      19                 :            : 
      20                 :            : #include <set>
      21                 :            : #include <map>
      22                 :            : #include <vector>
      23                 :            : #include "DLIList.hpp"
      24                 :            : 
      25                 :            : #define FACET_ENTITY_UNINITIALIZED -1
      26                 :            : 
      27                 :            : class FacetEntity;
      28                 :            : class ChollaVolume;
      29                 :            : class ChollaCurve;
      30                 :            : class ChollaSurface;
      31                 :            : class ChollaPoint;
      32                 :            : class CubitPoint;
      33                 :            : class CubitFacetEdge;
      34                 :            : class CubitFacet;
      35                 :            : class GMem;
      36                 :            : class ChollaEntity;
      37                 :            : class FacetEvalTool;
      38                 :            : class ChollaMesh;
      39                 :            : 
      40                 :            : class ChollaEngine
      41                 :            : {
      42                 :            : public:
      43                 :            :   //! Constructor
      44                 :            :   ChollaEngine( );
      45                 :            :   //! Constructor
      46                 :            :   ChollaEngine(DLIList<FacetEntity*> &face_list,
      47                 :            :                DLIList<FacetEntity*> &edge_list,
      48                 :            :                DLIList<FacetEntity*> &point_list );
      49                 :            :   //! Constructor
      50                 :            :   ChollaEngine(DLIList<CubitFacet*> &facet_list,
      51                 :            :                DLIList<CubitFacetEdge*> &edge_list,
      52                 :            :                DLIList<CubitPoint*> &point_list );
      53                 :            :   
      54                 :            :   //! Constructor
      55                 :            :   ChollaEngine(DLIList<CubitFacet*>     &facet_list,
      56                 :            :                DLIList<CubitFacetEdge*> &edge_list,
      57                 :            :                DLIList<CubitPoint*>     &point_list,
      58                 :            :                DLIList<ChollaVolume *>  &cholla_volumes,
      59                 :            :                DLIList<ChollaSurface *> &cholla_surfaces,
      60                 :            :                DLIList<ChollaCurve *>   &cholla_curves,
      61                 :            :                DLIList<ChollaPoint *>   &cholla_points );
      62                 :            :   
      63                 :            :     //! Destructor
      64                 :            :   ~ChollaEngine();
      65                 :            :   void delete_me();
      66                 :            : 
      67                 :            :   //! Creates the geometry infrastructure based on the given mesh data.
      68                 :            :   CubitStatus create_geometry (CubitBoolean use_feature_angle = CUBIT_TRUE,
      69                 :            :                               double angle = 135.0,
      70                 :            :                               int interp_order = 0,
      71                 :            :                               CubitBoolean smooth_non_manifold = CUBIT_TRUE,
      72                 :            :                               CubitBoolean split_surfaces = CUBIT_FALSE);
      73                 :            : 
      74                 :            :   void get_volumes( DLIList<ChollaVolume *> & cholla_volume_list )
      75                 :            :     { cholla_volume_list += chollaVolumeList; }
      76                 :         88 :   void get_surfaces( DLIList<ChollaSurface *> & cholla_surface_list )
      77                 :         88 :     { cholla_surface_list += chollaSurfaceList; }
      78                 :         88 :   void get_curves( DLIList<ChollaCurve *> & cholla_curve_list )
      79                 :         88 :     { cholla_curve_list += chollaCurveList; }
      80                 :         88 :   void get_points( DLIList<ChollaPoint *> & cholla_point_list )
      81                 :         88 :     { cholla_point_list += chollaPointList; }
      82                 :            : 
      83                 :            :   void delete_eval_tools();
      84                 :            :     //! delete the eval tools associated with the cholla geom entities
      85                 :            :   void delete_eval_tools_but_not_facets();
      86                 :            :     
      87                 :            : 
      88                 :            :   // collapses a cholla curve
      89                 :            :   CubitStatus collapse_curve( ChollaCurve *cholla_curve, ChollaPoint *point_to_keep );
      90                 :            :   
      91                 :            :   // disassociate cholla surface
      92                 :            :   CubitStatus disassociate_surface( ChollaSurface *cholla_surf );
      93                 :            : 
      94                 :            :   // collase a cholla surface
      95                 :            :   CubitStatus collapse_surface( ChollaSurface *cholla_surface );
      96                 :            : 
      97                 :            :   // remove functions to update facet entities
      98                 :            :   CubitStatus remove_facet_entity( CubitFacet *facet, ChollaSurface *cholla_surf = NULL );
      99                 :            :   CubitStatus remove_facet_entity( CubitFacetEdge *facet_edge, ChollaCurve *cholla_curve = NULL);
     100                 :            :   CubitStatus remove_facet_entity( CubitPoint *facet_pnt, ChollaPoint *cholla_point = NULL );
     101                 :            :   CubitStatus remove_facet_entity( CubitFacet *facet, std::set<ChollaEntity *> &cholla_surfs );
     102                 :            :   CubitStatus remove_facet_entity( CubitFacetEdge *facet_edge, std::set<ChollaEntity *> &cholla_curves );
     103                 :            :   CubitStatus remove_facet_entity( CubitPoint *facet_pnt, std::set<ChollaEntity *> &cholla_points );
     104                 :            : 
     105                 :            :   // replace funcctions to update facet entities in cholla entities
     106                 :            :   CubitStatus replace_facet_entity( CubitFacetEdge *remove_edge, CubitFacetEdge *replace_edge, std::set<ChollaEntity *> cholla_curves );
     107                 :            : 
     108                 :            : 
     109                 :            :     //! Create the new features by cracking the facets at feature edges.
     110                 :            :     //! Creates new edges and points and updates connectivity
     111                 :            : 
     112                 :            :   static CubitStatus make_features( DLIList<CubitFacetEdge *> &feature_edge_list,
     113                 :            :                              CubitBoolean split_surfaces );
     114                 :            : 
     115                 :            : #ifdef ALPHA_CABLE
     116                 :            :   CubitStatus split_surface_at_edges( ChollaSurface* owning_surface,
     117                 :            :                                       DLIList<CubitFacetEdge *> &feature_edge_list,
     118                 :            :                                       DLIList<ChollaCurve*> &cholla_curves,
     119                 :            :                                       DLIList<ChollaSurface*> &cholla_surfaces);
     120                 :            :     // given a list of edges, crack the surface.
     121                 :            : #endif
     122                 :            :     //! assumes that valid CubitPoint* are supplied
     123                 :            :     //! marks the CubitPoints as features to manually break up curves
     124                 :            :     //! and surfaces
     125                 :            :   static void mark_features (DLIList<CubitPoint*> &feature_points);
     126                 :            :         static void mark_features (DLIList<CubitFacetEdge*> &feature_edges);
     127                 :            : 
     128                 :            :     //! fix the control points so they are C-zero          
     129                 :            :   static CubitStatus fix_geometry( CubitBoolean smooth_non_manifold,
     130                 :            :                                    CubitBoolean split_surfaces,
     131                 :            :                                    CubitBoolean use_feature_angle,
     132                 :            :                                    double min_dot,
     133                 :            :                                    DLIList <CubitFacetEdge *> &feature_edge_list );
     134                 :            : 
     135                 :            :     //! ensure facets are all oriented consistently
     136                 :            :     //Cubit is not using this anymore.
     137                 :            :   static CubitStatus check_all_facet_orientations( DLIList <CubitFacet*> &facet_list,
     138                 :            :                                                   CubitBoolean do_flip = CUBIT_FALSE);
     139                 :            : 
     140                 :            :     //! determine orienation of curve w.r.t. the surface    
     141                 :            :   static CubitStatus determine_curve_orientation( ChollaSurface *chsurf_ptr,
     142                 :            :                                                   ChollaCurve *chcurv_ptr,
     143                 :            :                                                   CubitSense & orientation );
     144                 :            : 
     145                 :            :   static CubitStatus get_facets(GMem& gmem, DLIList<CubitFacet*> &facet_list, 
     146                 :            :                                 DLIList<CubitPoint*> &dl_point_list,
     147                 :            :                                 bool insert_null_facets = false);
     148                 :            :   
     149                 :            :     //set the ChollaEngine to actually flip facets, or to just set a flag
     150                 :            :     // when facets need to be reoriented
     151                 :         55 :   void set_flip_flag(CubitBoolean flip){ doFlip = flip; }
     152                 :            :     
     153                 :            :   void print_me();
     154                 :            :   void dump( const char *filename, double angle );
     155                 :            : 
     156                 :            :   // create cholla curve
     157                 :            :   //CubitStatus create_curve( int block_id, ChollaPoint *new_ch_pnt0, ChollaPoint *new_ch_pnt1, ChollaCurve *&new_ch_curve );
     158                 :            :   CubitStatus create_curve( int block_id, 
     159                 :            :                             ChollaPoint *new_ch_pnt0, 
     160                 :            :                             ChollaPoint *new_ch_pnt1, 
     161                 :            :                             ChollaCurve *&new_ch_curve
     162                 :            :                             );
     163                 :            : 
     164                 :            : 
     165                 :            : 
     166                 :            :   CubitStatus create_point( CubitPoint *pnt, ChollaPoint *&new_ch_pnt );
     167                 :            : 
     168                 :            :   CubitStatus create_surface( int block_id,
     169                 :            :                               ChollaSurface *&new_ch_surf );
     170                 :            : 
     171                 :            :   // disassoicate ch_curve from ch_points, ch_curve, ch_surf, and ch_engine
     172                 :            :   CubitStatus disassociate_curve( ChollaCurve *ch_curve, 
     173                 :            :                                   bool disassociate_with_vert = true,
     174                 :            :                                   bool disassociate_with_surf = true,
     175                 :            :                                   bool disassociate_with_model = true );
     176                 :            :   // remove a cholla sub-entities 
     177                 :          0 :   void remove_curve( ChollaCurve *ch_curve ){ chollaCurveList.remove( ch_curve ); }
     178                 :          0 :   void remove_surface( ChollaSurface *ch_surface ){ chollaSurfaceList.remove( ch_surface ); }
     179                 :          0 :   void remove_point( ChollaPoint *ch_pnt ){ chollaPointList.remove( ch_pnt ); }
     180                 :            :   
     181                 :            :   // Create independent manifold volumes from the non-manifold set
     182                 :            :   CubitStatus detach_volumes();
     183                 :            :   
     184                 :            :   //! From the facet surface list, create geometric surface,
     185                 :            :   //! loops and coedges for each surface in the list
     186                 :            :   CubitStatus build_surface_and_curve_eval_tools( DLIList<ChollaSurface*> &cholla_surface_list,
     187                 :            :                                                  int interp_order, double min_dot);
     188                 :            : 
     189                 :            :   CubitStatus rebuild_surface_and_curve_eval_tools(DLIList<ChollaSurface*> &cholla_surface_list,
     190                 :            :                                                    int interp_order, double min_dot);
     191                 :            : 
     192                 :            :   // verify the connectivity between points and curves
     193                 :            :   CubitStatus verify_points_to_curves();
     194                 :            : 
     195                 :            :   //calls private build_eval_tools function
     196                 :            :   CubitStatus build_eval_tools();  
     197                 :            : 
     198                 :            :   // merges two points 
     199                 :            :   CubitStatus merge_two_points( ChollaPoint *point_to_keep, ChollaPoint *point_to_del );
     200                 :            :    
     201                 :            : private:
     202                 :            : 
     203                 :            :   DLIList<FacetEntity*> faceList;
     204                 :            :   DLIList<FacetEntity*> edgeList;
     205                 :            :   DLIList<FacetEntity*> pointList;
     206                 :            :   DLIList<ChollaVolume*> chollaVolumeList;
     207                 :            :   DLIList<ChollaSurface*> chollaSurfaceList;
     208                 :            :   DLIList<ChollaCurve*> chollaCurveList;
     209                 :            :   DLIList<ChollaPoint*> chollaPointList;
     210                 :            : 
     211                 :            :   DLIList<ChollaCurve*> *hashCurveArray;
     212                 :            :   int hashCurveSize;
     213                 :            :   DLIList<ChollaPoint*> *hashPointArray;
     214                 :            :   int hashPointSize;
     215                 :            :     //boolean to determine whether flip the facets (when needed) or set
     216                 :            :     // the isBackwards flag.
     217                 :            :   CubitBoolean doFlip;
     218                 :            : 
     219                 :            :   void set_up_tool_datas( );
     220                 :            :   void delete_tool_datas( );
     221                 :            :   
     222                 :            :     //! returns the dimension of the facet entity.
     223                 :            :   int facet_dimension(FacetEntity *facet_ptr);
     224                 :            :    
     225                 :            :     //! creates the correct facetsurfaces for all the element blocks.
     226                 :            :   CubitStatus create_volume_boundaries( DLIList<ChollaSurface*> &facet_surface_sheets,
     227                 :            :                                         CubitBoolean use_feature_angle,
     228                 :            :                                         double min_dot,
     229                 :            :                                         CubitBoolean split_surfaces );
     230                 :            : 
     231                 :            :     //! creates the correct blockcurves for all the surfaces  
     232                 :            :   CubitStatus create_surface_boundaries( DLIList<ChollaSurface*> &cholla_surface_list,
     233                 :            :                                          DLIList<ChollaCurve*> &cholla_curve_list,
     234                 :            :                                          CubitBoolean use_feature_angle,
     235                 :            :                                          double min_dot );
     236                 :            :   
     237                 :            :     //! creates the correct blockpoints for all the curves
     238                 :            :   CubitStatus create_curve_boundaries( DLIList<ChollaCurve*> &cholla_curve_list,
     239                 :            :                                        DLIList<ChollaPoint*> &cholla_point_list );
     240                 :            :   
     241                 :            :     //! sorts a edge into its correct curve based on its associated
     242                 :            :     //! blocks and sidesets.  Creates a new facet curve if necessary.
     243                 :            :   CubitStatus classify_edge( FacetEntity *edge_ptr,
     244                 :            :                              DLIList<ChollaCurve*> &cholla_curve_list,
     245                 :            :                              ChollaSurface *fsm_ptr );
     246                 :            :     
     247                 :            :     //! sorts a node into correct point based on its associated
     248                 :            :     //! curve.  Creates a new facet point if necessary
     249                 :            :   CubitStatus classify_point(CubitPoint *point_ptr,
     250                 :            :                              DLIList<ChollaPoint*> &cholla_point_list,
     251                 :            :                              ChollaCurve *fcm_ptr ); 
     252                 :            :        
     253                 :            :     //! build the CUBIT geometry based on the Facet entity class lists
     254                 :            :   CubitStatus build_eval_tools( DLIList<ChollaSurface*> &cholla_surface_list,
     255                 :            :                                 DLIList<ChollaCurve*> &cholla_curve_list,
     256                 :            :                                 int interp_order,
     257                 :            :                                 CubitBoolean use_feature_angle,
     258                 :            :                                 double min_dot,
     259                 :            :                                 CubitBoolean smooth_non_manifold ,
     260                 :            :                                 CubitBoolean split_surfaces );
     261                 :            :     //! build the CUBIT geometry based on the Facet entity class lists
     262                 :            :     //! From the facet curve list, create geometric curves for each
     263                 :            :   CubitStatus build_curve_eval_tools( DLIList<ChollaCurve*> &cholla_curve_list,
     264                 :            :                                     int interp_order );
     265                 :            : 
     266                 :            :   
     267                 :            :     //! functions for hashing curves - to speed up edge classification
     268                 :            :   CubitStatus init_hash_curves( );
     269                 :            :   void delete_hash_curves( );
     270                 :            :   int get_curve_hash_key( DLIList<ChollaSurface*> *bsm_list_ptr );
     271                 :            : 
     272                 :            :     //! functions for hashing points - to speed up node classification
     273                 :            :   CubitStatus init_hash_points( );
     274                 :            :   void delete_hash_points( );
     275                 :            :   int get_point_hash_key( DLIList<ChollaCurve*> *bsm_list_ptr );
     276                 :            : 
     277                 :            :     //! fix the edge control points and the normals so they are conforming
     278                 :            :     //! (or non-conforming) accross curves
     279                 :            :   CubitStatus clean_geometry( CubitBoolean smooth_non_manifold,
     280                 :            :                             CubitBoolean split_surfaces,
     281                 :            :                             CubitBoolean use_feature_angle,
     282                 :            :                             double min_dot,
     283                 :            :                             DLIList <ChollaCurve *> &cholla_curve_list );
     284                 :            : 
     285                 :            : 
     286                 :            :     //! make sure the facets are oriented consistently
     287                 :            :   static CubitStatus check_facet_orientation( CubitFacet *facet, 
     288                 :            :                                               CubitBoolean do_flip, 
     289                 :            :                                               int &nfacets, int mydebug = 0 );
     290                 :            : 
     291                 :            :     //! split the surface facets at a point if required based on features.  
     292                 :            :     //! Create new points and edges as needed
     293                 :            :   static CubitStatus crack_open_point( CubitPoint *point_ptr, int mydebug );
     294                 :            : 
     295                 :            :     //! does the same as crack_open_point, but does not create new facet entities
     296                 :            :     //! at surface boundaries.  Instead, it creates facet boundary tooldatas
     297                 :            :     //! to hold the additional control point and normal data
     298                 :            :   static CubitStatus insert_discontinuity_at_point( CubitPoint *point_ptr );
     299                 :            : 
     300                 :            :     //! recursive function - returns a list of facets adjacent to
     301                 :            :     //! a point that are bounded by feature edges
     302                 :            :   static CubitStatus get_facets_at_point( CubitPoint *point_ptr,
     303                 :            :                                    CubitFacet *facet_ptr,
     304                 :            :                                    DLIList<CubitFacet *> &facet_list,
     305                 :            :                                    DLIList<CubitFacetEdge *> &feature_edge_list );
     306                 :            :     //! fix control points on a single edge and its partners
     307                 :            :   static CubitStatus fix_edge( CubitFacetEdge *edge_ptr, 
     308                 :            :                         DLIList<CubitFacet *> &update_facet_list );
     309                 :            :   static CubitStatus fix_split_edge( CubitFacetEdge *edge_ptr, 
     310                 :            :                         DLIList<CubitFacet *> &update_facet_list );
     311                 :            : 
     312                 :            :     //! fix normals at non-manifold edges to maintain
     313                 :            :     //! continuity across facets that don't meet feature angle criteria
     314                 :            :   static CubitStatus fix_split_non_manifold_edge( CubitFacetEdge *edge_ptr,
     315                 :            :                                      double min_dot,
     316                 :            :                                      DLIList <CubitPoint *> &changed_points );
     317                 :            :   static CubitStatus fix_non_manifold_edge( CubitFacetEdge *edge_ptr,
     318                 :            :                                      double min_dot,
     319                 :            :                                      DLIList <CubitPoint *> &changed_points );
     320                 :            : 
     321                 :            :     //! update the edge control points at all edges connected to points
     322                 :            :     //! in point_list
     323                 :            :   static CubitStatus update_edges_at_points( CubitBoolean split_surfaces,
     324                 :            :                                       DLIList<CubitPoint *> &point_list,
     325                 :            :                                       DLIList<CubitFacet *> &facet_update_list,
     326                 :            :                                       double mindot );
     327                 :            :     //! set the normals on two points so they are the same
     328                 :            :   static CubitStatus merge_normals( CubitPoint *pt0, CubitPoint *pt1);
     329                 :            :  
     330                 :            :   
     331                 :            :   // given a non-manifold surface in a cholla model, create a copy and update child entities
     332                 :            :   CubitStatus detach_surfaces(DLIList<ChollaSurface*> &chsurfs,
     333                 :            :                               DLIList<ChollaCurve*> &chcurves,
     334                 :            :                              ChollaVolume *detaching_volume,
     335                 :            :                              std::map<ChollaSurface *, ChollaSurface *> &surf_map,
     336                 :            :                              std::map<ChollaCurve *, ChollaCurve *> &curve_map,
     337                 :            :                              std::map<ChollaPoint *, ChollaPoint *> &point_map);
     338                 :            : 
     339                 :            :   CubitStatus detach_curves( DLIList<ChollaCurve*> &curves,
     340                 :            :                              ChollaVolume *detaching_volume,                                         
     341                 :            :                              std::map<ChollaCurve *, ChollaCurve *> &curve_map,
     342                 :            :                              std::map<ChollaPoint *, ChollaPoint *> &point_map );
     343                 :            :   
     344                 :            :   CubitStatus detach_curve(ChollaCurve *chcurv_ptr,
     345                 :            :                            DLIList<ChollaSurface*> &new_surfs,        
     346                 :            :                            ChollaVolume *chvol2_ptr,
     347                 :            :                            std::map<ChollaCurve*, ChollaCurve*> &curve_map,
     348                 :            :                            std::map<ChollaPoint*, ChollaPoint*> &point_map );
     349                 :            : 
     350                 :            :   CubitStatus detach_point(ChollaPoint *chpt_ptr,
     351                 :            :                            ChollaVolume *chvol2_ptr,
     352                 :            :                            std::map<ChollaPoint*, ChollaPoint*> &point_map,
     353                 :            :                            std::map<ChollaCurve*, ChollaCurve*> &curve_map );                           
     354                 :            :     
     355                 :            :   // Create independent manifold volumes from the non-manifold set
     356                 :            :   CubitStatus detach_facets( DLIList<ChollaSurface*> &chsurfs, 
     357                 :            :                              DLIList<ChollaCurve*> &chcurves,
     358                 :            :                              ChollaVolume *chvol,
     359                 :            :                              std::map<ChollaSurface *, ChollaSurface *> &surf_map,
     360                 :            :                              std::map<ChollaCurve *, ChollaCurve *> &curve_map,
     361                 :            :                              std::map<ChollaPoint *, ChollaPoint *> &point_map);
     362                 :            :     
     363                 :            :   CubitStatus detach_facet_edges(DLIList<ChollaCurve*> &chcurves,
     364                 :            :                                  ChollaVolume *detaching_volume,                                             
     365                 :            :                                  std::map<ChollaCurve *, ChollaCurve *> &curve_map,
     366                 :            :                                  std::map<ChollaPoint *, ChollaPoint *> &point_map);
     367                 :            : 
     368                 :            :   CubitStatus copy_facets_at_interface(DLIList<ChollaSurface*> &chsurfs, 
     369                 :            :                                        DLIList<ChollaCurve*> &chcurves,
     370                 :            :                                        std::vector<CubitPoint *> &new_points,
     371                 :            :                                        std::vector<CubitFacetEdge *> &new_edges,                                       
     372                 :            :                                        std::map<ChollaSurface *, ChollaSurface *> &surf_map,
     373                 :            :                                        std::map<ChollaCurve *, ChollaCurve *> &curve_map,
     374                 :            :                                        std::map<ChollaPoint *, ChollaPoint *> &point_map);
     375                 :            : 
     376                 :            :   CubitStatus copy_facet_edges_at_interface(DLIList<ChollaCurve*> &chcurves,
     377                 :            :                                             std::vector<CubitPoint *> &new_points,
     378                 :            :                                             std::vector<CubitFacetEdge *> &new_edges,                                                                                                      
     379                 :            :                                             std::map<ChollaCurve *, ChollaCurve *> &curve_map,
     380                 :            :                                             std::map<ChollaPoint *, ChollaPoint *> &point_map);
     381                 :            : 
     382                 :            :   CubitStatus copy_points_at_interface(DLIList<FacetEntity *> &facet_list,
     383                 :            :                                        std::vector<CubitPoint *> &new_points,                                       
     384                 :            :                                        std::map<ChollaSurface *, ChollaSurface *> &surf_map,
     385                 :            :                                        std::map<ChollaCurve *, ChollaCurve *> &curve_map,
     386                 :            :                                        std::map<ChollaPoint *, ChollaPoint *> &point_map);
     387                 :            :   CubitStatus copy_edges_at_interface(DLIList<FacetEntity *> &facet_list,
     388                 :            :                                       std::vector<CubitPoint *> &new_points,
     389                 :            :                                       std::vector<CubitFacetEdge *> &new_edges,                                      
     390                 :            :                                       std::map<ChollaSurface *, ChollaSurface *> &surf_map,
     391                 :            :                                       std::map<ChollaCurve *, ChollaCurve *> &curve_map,
     392                 :            :                                       std::map<ChollaPoint *, ChollaPoint *> &point_map);
     393                 :            :   
     394                 :            :   // detach the facets from original points and edges and reattach to new copy
     395                 :            :   CubitStatus connect_facets_at_interface(DLIList<ChollaSurface*> &chsurfs,  
     396                 :            :                                           DLIList<ChollaCurve*> &churves,
     397                 :            :                                           ChollaVolume *chvol_ptr,
     398                 :            :                                           std::vector<CubitPoint *> &new_points,
     399                 :            :                                           std::vector<CubitFacetEdge *> &new_edges);
     400                 :            :   CubitStatus connect_points_at_interface(ChollaCurve *chcurv_ptr,
     401                 :            :                                           ChollaVolume *chvol_ptr,
     402                 :            :                                           std::vector<CubitPoint *> &new_points);
     403                 :            :   CubitStatus connect_edges_at_interface(ChollaCurve *chcurv_ptr,
     404                 :            :                                          ChollaVolume *chvol_ptr,
     405                 :            :                                          std::vector<CubitFacetEdge *> &new_edges);
     406                 :            :   
     407                 :            :   // update the ownenrship of the new detached facet entity based uponthe map set up in detach_volumes
     408                 :            :   CubitStatus set_new_facet_owners(int type, //0, 1, or 2 based on dimension of facet entity
     409                 :            :                                    FacetEntity *fe_ptr, FacetEntity *newfe_ptr,                                    
     410                 :            :                                    std::map<ChollaSurface *, ChollaSurface *> &surf_map,
     411                 :            :                                    std::map<ChollaCurve *, ChollaCurve *> &curve_map,
     412                 :            :                                    std::map<ChollaPoint *, ChollaPoint *> &point_map );
     413                 :            :   
     414                 :            :   // set the end points of the curves that are adjacent to the interface surface  
     415                 :            :   CubitStatus set_curve_endpoints(std::map<ChollaPoint*, ChollaPoint*> &point_map,
     416                 :            :                                   std::map<ChollaCurve*, ChollaCurve*> &curve_map );
     417                 :            : 
     418                 :            : };
     419                 :            : 
     420                 :            : #endif
     421                 :            : 
     422                 :            : 

Generated by: LCOV version 1.11