LCOV - code coverage report
Current view: top level - geom - CAEntityTol.cpp (source / functions) Hit Total Coverage
Test: coverage_sk.info Lines: 28 70 40.0 %
Date: 2020-06-30 00:58:45 Functions: 7 13 53.8 %
Branches: 22 126 17.5 %

           Branch data     Line data    Source code
       1                 :            : //- File:           CAEntityTol.cpp
       2                 :            : //- Owner:          W. Roshan Quadros
       3                 :            : //- Description:    Cubit Attribute for entity ids.
       4                 :            : //- Checked By:
       5                 :            : //- Version:
       6                 :            : 
       7                 :            : 
       8                 :            : #include "CAEntityTol.hpp"
       9                 :            : #include "CAMergePartner.hpp"
      10                 :            : #include "TDUniqueId.hpp"
      11                 :            : #include "TopologyBridge.hpp"
      12                 :            : #include "RefEntity.hpp"
      13                 :            : #include "RefVertex.hpp"
      14                 :            : #include "RefEdge.hpp"
      15                 :            : #include "RefFace.hpp"
      16                 :            : #include "CastTo.hpp"
      17                 :            : #include "MergeTool.hpp"
      18                 :            : #include "RefEntityFactory.hpp"
      19                 :            : #include "GeometryQueryTool.hpp"
      20                 :            : #include "GSaveOpen.hpp"
      21                 :            : #include "CADeferredAttrib.hpp"
      22                 :            : #include "BasicTopologyEntity.hpp"
      23                 :            : #include "GeometryEntity.hpp"
      24                 :            : 
      25                 :      10348 : CubitAttrib* CAEntityTol_creator(RefEntity* entity, const CubitSimpleAttrib &p_csa)
      26                 :            : {
      27         [ +  - ]:      10348 :     return new CAEntityTol(entity, p_csa);
      28                 :            : }
      29                 :            : 
      30                 :      10348 : CAEntityTol::CAEntityTol(RefEntity* new_attrib_owner,
      31                 :            :                        const CubitSimpleAttrib &csa_ptr)
      32                 :      10348 :         : CubitAttrib(new_attrib_owner)
      33                 :            : {
      34                 :      10348 :   entityTol = 0.0;
      35 [ +  - ][ -  + ]:      10348 :   if(!csa_ptr.isEmpty())
      36                 :            :   {
      37 [ #  # ][ #  # ]:          0 :    PRINT_DEBUG_95( "Creating ENTITY_TOL attribute from CSA for %s %d\n",
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
      38                 :            :       (attribOwnerEntity ? attribOwnerEntity->class_name() : "(none)"),
      39         [ #  # ]:          0 :       (attribOwnerEntity ? attribOwnerEntity->id() : 0));
      40                 :            :    
      41         [ #  # ]:          0 :    const std::vector<double>& d_list = csa_ptr.double_data_list();
      42                 :            : 
      43 [ #  # ][ #  # ]:          0 :    assert(d_list.size() == 1);
      44         [ #  # ]:          0 :    entityTol =  d_list[0];
      45                 :            :   }
      46                 :      10348 : }
      47                 :            : 
      48                 :          0 : CAEntityTol::CAEntityTol(RefEntity* new_attrib_owner)
      49                 :          0 :         : CubitAttrib(new_attrib_owner)
      50                 :            : {
      51                 :          0 :   entityTol = 0.0;
      52                 :            :     
      53 [ #  # ][ #  # ]:          0 :   PRINT_DEBUG_95( "Creating ENTITY_TOL attribute for %s %d\n",
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
      54                 :            :               (attribOwnerEntity ? attribOwnerEntity->class_name() : "(none)"),
      55         [ #  # ]:          0 :               (attribOwnerEntity ? attribOwnerEntity->id() : 0));
      56                 :          0 : }
      57                 :            : 
      58                 :      31044 : CAEntityTol::~CAEntityTol()
      59                 :            : {
      60         [ -  + ]:      20696 : }
      61                 :            : 
      62                 :          0 : CubitStatus CAEntityTol::reset()
      63                 :            : {
      64                 :            : 
      65                 :          0 :   return CUBIT_SUCCESS;
      66                 :            : }
      67                 :            : 
      68                 :          0 : CubitStatus CAEntityTol::actuate()
      69                 :            : {
      70         [ #  # ]:          0 :    if ( hasActuated)
      71                 :          0 :       return CUBIT_SUCCESS;
      72                 :            :    
      73         [ #  # ]:          0 :    if ( !attribOwnerEntity )
      74                 :          0 :       return CUBIT_FAILURE;
      75                 :            :    
      76                 :          0 :    deleteAttrib = CUBIT_FALSE;
      77                 :            :    
      78                 :            :    //- If actuating after import, change the tol.  Else (auto actuated) tol is already changed...
      79         [ #  # ]:          0 :    if( attribOwnerEntity->local_tolerance() == 0.0 )
      80                 :            :    {
      81                 :          0 :       attribOwnerEntity->local_tolerance(entityTol);
      82                 :            :    }
      83                 :            :    
      84                 :          0 :    hasActuated = CUBIT_TRUE;
      85                 :          0 :    return CUBIT_SUCCESS;
      86                 :            : }
      87                 :            : 
      88                 :      10348 : CubitStatus CAEntityTol::update()
      89                 :            : {
      90                 :            :   //delete_attrib(CUBIT_TRUE);
      91                 :            :   //return CUBIT_SUCCESS;
      92                 :            : 
      93         [ -  + ]:      10348 :   if (hasUpdated) return CUBIT_SUCCESS;
      94                 :            :   
      95 [ -  + ][ #  # ]:      10348 :   PRINT_DEBUG_95( "Updating ENTITY_TOL attribute for %s %d\n",
      96         [ #  # ]:          0 :               attribOwnerEntity->class_name(), attribOwnerEntity->id());
      97                 :            : 
      98                 :            :     // set the updated flag
      99                 :      10348 :   hasUpdated = CUBIT_TRUE;
     100                 :            : 
     101                 :            :     // first, remove this attrib in its old form from the geometry entity
     102         [ -  + ]:      10348 :   if (hasWritten == CUBIT_TRUE) 
     103                 :            :   {
     104                 :          0 :     attribOwnerEntity->remove_attrib_geometry_entity(this);
     105                 :          0 :     hasWritten = CUBIT_FALSE;
     106                 :            :   }
     107                 :            :   
     108                 :      10348 :   double local_tol = attribOwnerEntity->local_tolerance();
     109         [ +  - ]:      10348 :   if( local_tol == 0.0)
     110                 :            :   {
     111                 :      10348 :     delete_attrib(CUBIT_TRUE);
     112                 :      10348 :     return CUBIT_SUCCESS;
     113                 :            :   }
     114                 :            :   else
     115                 :            :   {
     116                 :            :          
     117                 :            :     // reset the delete flag if it was set before
     118                 :          0 :     delete_attrib(CUBIT_FALSE);
     119                 :            :     
     120                 :            :       // now, write to geometry entity
     121                 :          0 :     entityTol = local_tol;
     122                 :          0 :     attribOwnerEntity->write_specific_cubit_attrib(this);
     123                 :            :   }
     124                 :      10348 :   return CUBIT_SUCCESS;
     125                 :            : }
     126                 :            : 
     127                 :          0 : void CAEntityTol::merge_owner(CubitAttrib *deletable_attrib)
     128                 :            : {
     129                 :            :     // take the id with the lowest value
     130         [ #  # ]:          0 :   CAEntityTol *other_ca_tol = CAST_TO(deletable_attrib, CAEntityTol);
     131                 :            :   
     132 [ #  # ][ #  # ]:          0 :   if (other_ca_tol && ( entityTol == 0.0 || entityTol < other_ca_tol->tolerance() ))
         [ #  # ][ #  # ]
     133                 :          0 :     entityTol = other_ca_tol->tolerance();
     134                 :          0 : }
     135                 :            : 
     136                 :      10348 : CubitSimpleAttrib CAEntityTol::cubit_simple_attrib()
     137                 :            : {
     138         [ +  - ]:      10348 :   std::vector<CubitString> cs_list;
     139 [ +  - ][ +  - ]:      20696 :   std::vector<double> d_list;
     140 [ +  - ][ +  - ]:      20696 :   std::vector<int, std::allocator<int> > i_list;
     141                 :            : 
     142         [ +  - ]:      10348 :   d_list.push_back ( entityTol );
     143                 :            : 
     144 [ +  - ][ +  - ]:      10348 :   cs_list.push_back(att_internal_name());
         [ +  - ][ +  - ]
     145                 :            : 
     146         [ +  - ]:      10348 :   CubitSimpleAttrib csattrib_ptr(&cs_list, &d_list, &i_list);
     147                 :            :  
     148         [ +  - ]:      20696 :   return csattrib_ptr;
     149                 :            : }
     150                 :            : 
     151                 :          0 : void CAEntityTol::print()
     152                 :            : {
     153                 :            :     // print info on this attribute
     154                 :            :   
     155         [ #  # ]:          0 :   PRINT_INFO("CAEntityTol: owner = %s %d:  tolerance =%f\n",
     156                 :            :              attribOwnerEntity->class_name(), attribOwnerEntity->id(),
     157         [ #  # ]:          0 :              entityTol);
     158                 :          0 : }
     159                 :            : 
     160                 :            : 
     161                 :          0 : CubitSimpleAttrib CAEntityTol::split_owner()
     162                 :            : {
     163                 :            :     // if this entity is to be split, pass back a simple attribute with
     164                 :            :     // duplicate tol data to be put on new entity
     165 [ #  # ][ #  # ]:          0 :   PRINT_DEBUG_95("CAEntityName::split_owner()\n");
                 [ #  # ]
     166                 :          0 :   update();
     167                 :          0 :   return cubit_simple_attrib();
     168 [ +  - ][ +  - ]:       6540 : }
     169                 :            : 

Generated by: LCOV version 1.11