LCOV - code coverage report
Current view: top level - geom/virtual - PartPTCurve.cpp (source / functions) Hit Total Coverage
Test: coverage_sk.info Lines: 1 116 0.9 %
Date: 2020-06-30 00:58:45 Functions: 2 36 5.6 %
Branches: 2 136 1.5 %

           Branch data     Line data    Source code
       1                 :            : #include "PartPTCurve.hpp"
       2                 :            : #include "PartitionSurface.hpp"
       3                 :            : #include "PartitionPoint.hpp"
       4                 :            : #include "GMem.hpp"
       5                 :            : #include "PartitionEngine.hpp"
       6                 :            : #include "CubitMessage.hpp"
       7                 :            : 
       8                 :          0 : PartPTCurve::PartPTCurve( PartitionSurface* owner )
       9                 :            : {
      10 [ #  # ][ #  # ]:          0 :   owner->sub_entity_set().add_lower_order( this );
      11                 :          0 : }
      12                 :            : 
      13                 :          0 : PartPTCurve* PartPTCurve::construct( const CubitSimpleAttrib& attrib,
      14                 :            :                                      PartitionSurface* owner )
      15                 :            : {
      16         [ #  # ]:          0 :   DLIList<int> vertex_conn;
      17 [ #  # ][ #  # ]:          0 :   PartPTCurve* result = new PartPTCurve( owner, attrib, vertex_conn );
      18                 :            :   
      19 [ #  # ][ #  # ]:          0 :   if ( vertex_conn.size() != 4 )
      20                 :            :   {
      21 [ #  # ][ #  # ]:          0 :     delete result;
      22                 :          0 :     return 0;
      23                 :            :   }
      24                 :            :   
      25                 :          0 :   PartitionPoint *start = 0, *end = 0;
      26                 :            :   PartitionEntity* ent;
      27         [ #  # ]:          0 :   vertex_conn.reset();
      28         [ #  # ]:          0 :   int set_id = vertex_conn.get_and_step();
      29         [ #  # ]:          0 :   int ent_id = vertex_conn.get_and_step();
      30 [ #  # ][ #  # ]:          0 :   ent = PartitionEngine::instance().entity_from_id(set_id,ent_id,owner->sub_entity_set());
                 [ #  # ]
      31         [ #  # ]:          0 :   start = dynamic_cast<PartitionPoint*>(ent);
      32         [ #  # ]:          0 :   set_id = vertex_conn.get_and_step();
      33         [ #  # ]:          0 :   ent_id = vertex_conn.get_and_step();
      34 [ #  # ][ #  # ]:          0 :   ent = PartitionEngine::instance().entity_from_id(set_id,ent_id,owner->sub_entity_set());
                 [ #  # ]
      35         [ #  # ]:          0 :   end = dynamic_cast<PartitionPoint*>(ent);
      36                 :            :   
      37 [ #  # ][ #  # ]:          0 :   if ( !start || !end || start != end )
                 [ #  # ]
      38                 :            :   {
      39 [ #  # ][ #  # ]:          0 :     delete result;
      40                 :          0 :     return 0;
      41                 :            :   }
      42                 :            :   
      43         [ #  # ]:          0 :   result->start_point( end );
      44         [ #  # ]:          0 :   result->end_point( end );
      45         [ #  # ]:          0 :   return result;
      46                 :            : }
      47                 :            : 
      48                 :          0 : PartPTCurve::PartPTCurve( PartitionSurface* surface,
      49                 :            :                           const CubitSimpleAttrib& attrib,
      50                 :          0 :                           DLIList<int>& vertex_conn )
      51                 :            : {
      52         [ #  # ]:          0 :   DLIList<CubitVector*> points;
      53 [ #  # ][ #  # ]:          0 :   DLIList<int> junk;
      54 [ #  # ][ #  # ]:          0 :   surface->sub_entity_set().add_lower_order( this, attrib, 1, points, junk, vertex_conn, junk );
      55 [ #  # ][ #  # ]:          0 :   assert( points.size() == 0 );
                 [ #  # ]
      56                 :          0 : }
      57                 :            : 
      58                 :          0 : PartPTCurve::~PartPTCurve()
      59         [ #  # ]:          0 :   {}
      60                 :            : 
      61                 :          0 : PartitionCurve* PartPTCurve::split( double )
      62                 :          0 :   { assert(0); return 0; }
      63                 :            :   
      64                 :          0 : CubitStatus PartPTCurve::combine( PartitionCurve* curve )
      65                 :            : {
      66 [ #  # ][ #  # ]:          0 :   assert( dynamic_cast<PartPTCurve*>(curve) != NULL );
      67                 :          0 :   assert( 0 );
      68                 :            :   return CUBIT_FAILURE;
      69                 :            : }
      70                 :            : 
      71                 :          0 : CubitStatus PartPTCurve::get_graphics( GMem& result, 
      72                 :            :                                     double /*angle_tolerance*/,
      73                 :            :                                     double /*distance_tolerance*/,
      74                 :            :                                     double /*max_edge_length*/) 
      75                 :            : {
      76                 :          0 :   result.pointListCount = 0;
      77                 :          0 :   return CUBIT_SUCCESS;
      78                 :            : }
      79                 :            : 
      80                 :            : 
      81                 :          0 : void PartPTCurve::append_simple_attribute_virt(const CubitSimpleAttrib& csa)
      82                 :          0 :   { sub_entity_set().add_attribute( this, csa ); }
      83                 :          0 : void PartPTCurve::remove_simple_attribute_virt(const CubitSimpleAttrib& csa)
      84                 :          0 :   { sub_entity_set().rem_attribute( this, csa ); }
      85                 :          0 : void PartPTCurve::remove_all_simple_attribute_virt()
      86                 :          0 :   { sub_entity_set().rem_all_attrib( this ); }
      87                 :          0 : CubitStatus PartPTCurve::get_simple_attribute(DLIList<CubitSimpleAttrib>& list)
      88                 :            : { 
      89                 :          0 :   sub_entity_set().get_attributes( this, list ); 
      90                 :          0 :   return CUBIT_SUCCESS;
      91                 :            : }
      92                 :          0 : CubitStatus PartPTCurve::get_simple_attribute(const CubitString& name,
      93                 :            :                                        DLIList<CubitSimpleAttrib>& list)
      94                 :            : { 
      95                 :          0 :   sub_entity_set().get_attributes( this, name.c_str(), list ); 
      96                 :          0 :   return CUBIT_SUCCESS;
      97                 :            : }
      98                 :            : 
      99                 :          0 : CubitBox PartPTCurve::bounding_box() const
     100         [ #  # ]:          0 :   { return CubitBox( coordinates() ); }
     101                 :          0 : double PartPTCurve::measure()
     102                 :          0 :   { return 0.0; }
     103                 :          0 : GeometryType PartPTCurve::geometry_type()
     104                 :          0 :   { return POINT_CURVE_TYPE; }
     105                 :            : 
     106                 :          0 : CubitStatus PartPTCurve::closest_point( CubitVector const& ,
     107                 :            :                                         CubitVector& closest,
     108                 :            :                                         CubitVector* tangent,
     109                 :            :                                         CubitVector* curvature,
     110                 :            :                                         double* param )
     111                 :            : {
     112         [ #  # ]:          0 :   closest = coordinates();
     113         [ #  # ]:          0 :   if( tangent ) tangent->set(0.,0.,0.);
     114         [ #  # ]:          0 :   if( curvature) curvature->set(0.,0.,0.);
     115         [ #  # ]:          0 :   if( param ) *param = 0.0;
     116                 :          0 :   return CUBIT_SUCCESS;
     117                 :            : }
     118                 :            : 
     119                 :          0 : CubitPointContainment PartPTCurve::point_containment( const CubitVector& position )
     120         [ #  # ]:          0 :   { return is_position_on(position) ? CUBIT_PNT_BOUNDARY : CUBIT_PNT_OFF; }
     121                 :            : 
     122                 :          0 : CubitBoolean  PartPTCurve::is_position_on( const CubitVector& position )
     123                 :            : {
     124                 :          0 :   const double tolsqr = GEOMETRY_RESABS * GEOMETRY_RESABS;
     125 [ #  # ][ #  # ]:          0 :   return (position - coordinates()).length_squared() < tolsqr;
     126                 :            : }
     127                 :            : 
     128                 :          0 : CubitBoolean PartPTCurve::G1_discontinuous( double, CubitVector* min, CubitVector* plu )
     129                 :            : {
     130         [ #  # ]:          0 :   if( min ) min->set( 0., 0., 0. );
     131         [ #  # ]:          0 :   if( plu ) plu->set( 0., 0., 0. );
     132                 :          0 :   return CUBIT_TRUE;
     133                 :            : }
     134                 :            : 
     135                 :          0 : CubitStatus PartPTCurve::get_interior_extrema( DLIList<CubitVector*>&, CubitSense& )
     136                 :          0 :   { return CUBIT_SUCCESS; }
     137                 :            : 
     138                 :          0 : CubitStatus PartPTCurve::get_center_radius( CubitVector&, double& )
     139                 :          0 :   { return CUBIT_FAILURE; }
     140                 :            : 
     141                 :          0 : CubitBoolean PartPTCurve::get_param_range( double& lower, double& upper )
     142                 :          0 :   { lower = upper = 0.0; return CUBIT_TRUE; }
     143                 :            : 
     144                 :          0 : double PartPTCurve::start_param()
     145                 :          0 :   { return 0.0; }
     146                 :          0 : double PartPTCurve::end_param()
     147                 :          0 :   { return 0.0; }
     148                 :            : 
     149                 :          0 : CubitBoolean PartPTCurve::is_periodic( double& period )
     150                 :          0 :   { period = 0.0; return CUBIT_TRUE; }
     151                 :            : 
     152                 :          0 : double PartPTCurve::length_from_u( double, double )
     153                 :          0 :   { return  0.0; }
     154                 :            : 
     155                 :          0 : double PartPTCurve::u_from_position( const CubitVector& )
     156                 :          0 :   { return 0.0; }
     157                 :            : 
     158                 :          0 : CubitStatus PartPTCurve::position_from_u( double, CubitVector& result )
     159         [ #  # ]:          0 :   { result = coordinates(); return CUBIT_SUCCESS; }
     160                 :            : 
     161                 :          0 : double PartPTCurve::u_from_arc_length( double, double )
     162                 :          0 :   { return 0.0; }
     163                 :            : 
     164                 :          0 : CubitVector PartPTCurve::coordinates() const
     165                 :            : {
     166         [ #  # ]:          0 :   if( start_point() )
     167                 :          0 :     return start_point()->coordinates();
     168                 :            :   
     169         [ #  # ]:          0 :   if( end_point() )
     170                 :          0 :     return end_point()->coordinates();
     171                 :            :   
     172                 :          0 :   return CubitVector(0.,0.,0.);
     173                 :            : }
     174                 :            : 
     175                 :          0 : void PartPTCurve::reverse_sense()
     176                 :          0 :   { }
     177                 :            :   
     178                 :          0 : CubitStatus PartPTCurve::save( CubitSimpleAttrib& attrib )
     179                 :            : {
     180 [ #  # ][ #  # ]:          0 :   int id = sub_entity_set().get_id(this);
     181         [ #  # ]:          0 :   if( id <= 0 ) return CUBIT_FAILURE;
     182                 :            :   
     183         [ #  # ]:          0 :   DLIList<int> end_points(4);
     184         [ #  # ]:          0 :   get_save_topology(end_points);
     185                 :            : 
     186 [ #  # ][ #  # ]:          0 :   return sub_entity_set().save_geometry( id, 1, 0, 0, &end_points, 0, attrib );
                 [ #  # ]
     187                 :            : }
     188                 :            : 
     189                 :          0 : CubitStatus PartPTCurve::get_spline_params
     190                 :            : (
     191                 :            :   bool &rational,    // return true/false
     192                 :            :   int &degree,       // the degree of this spline
     193                 :            :   DLIList<CubitVector> &cntrl_pts,  // xyz position of controlpoints
     194                 :            :   DLIList<double> &cntrl_pt_weights, // if rational, a weight for each cntrl point.
     195                 :            :   DLIList<double> &knots,   // There should be order+cntrl_pts.size()-2 knots
     196                 :            :   bool &spline_is_reversed
     197                 :            : ) const
     198                 :            : {
     199 [ #  # ][ #  # ]:          0 :   PRINT_ERROR("Currently, Cubit is unable to determine spline parameters for PartPTCurves.\n");
     200                 :          0 :   return CUBIT_FAILURE;
     201                 :            : }
     202                 :            : 
     203                 :          0 : CubitStatus PartPTCurve::get_ellipse_params
     204                 :            : (
     205                 :            :   CubitVector &center_vec,
     206                 :            :   CubitVector &normal,
     207                 :            :   CubitVector &major_axis,
     208                 :            :   double &radius_ratio
     209                 :            : ) const
     210                 :            : {
     211 [ #  # ][ #  # ]:          0 :   PRINT_ERROR("Currently, Cubit is unable to determine ellipse parameters for PartPTCurves.\n");
     212                 :          0 :   return CUBIT_FAILURE;
     213 [ +  - ][ +  - ]:       6364 : }

Generated by: LCOV version 1.11