LCOV - code coverage report
Current view: top level - geom/Cholla - CubitQuadFacetData.cpp (source / functions) Hit Total Coverage
Test: coverage_sk.info Lines: 0 102 0.0 %
Date: 2020-06-30 00:58:45 Functions: 0 10 0.0 %
Branches: 0 110 0.0 %

           Branch data     Line data    Source code
       1                 :            : //
       2                 :            : // File: CubitQuadFacetData.cpp
       3                 :            : //
       4                 :            : // Owner: sjowen
       5                 :            : //
       6                 :            : 
       7                 :            : #include "CubitQuadFacetData.hpp"
       8                 :            : #include "CubitPoint.hpp"
       9                 :            : #include "CubitFacetEdge.hpp"
      10                 :            : #include "CubitFacetEdgeData.hpp"
      11                 :            : #include "CubitFacet.hpp"
      12                 :            : #include "CubitFacetData.hpp"
      13                 :            : 
      14                 :            : //===========================================================================
      15                 :            : //  Function: CubitQuadFacetData
      16                 :            : //  Purpose:  constructor
      17                 :            : //  Notes:    defines a quad facet given two existing triangle facets.
      18                 :            : //            The points on the facet are also passed in so the quad
      19                 :            : //            can be oriented with respect to its triangles
      20                 :            : //  Date:     4/11/01
      21                 :            : //  Author:   sjowen
      22                 :            : //===========================================================================
      23                 :          0 : CubitQuadFacetData::CubitQuadFacetData(
      24                 :            :   CubitFacet *tri_facets[2],
      25                 :          0 :   CubitPoint *points[4] )
      26                 :            : {
      27                 :          0 :   myTriangleFacets[0] = tri_facets[0];
      28                 :          0 :   myTriangleFacets[1] = tri_facets[1];
      29                 :            : 
      30                 :          0 :   CubitBoolean found = CUBIT_FALSE;
      31                 :            :   CubitPoint *pt;
      32                 :            :   int ii, jj, kk;
      33                 :            : 
      34         [ #  # ]:          0 :   for (jj=0; jj<2; jj++)
      35                 :            :   {
      36         [ #  # ]:          0 :     for (kk=0; kk<3; kk++)
      37                 :            :     {
      38         [ #  # ]:          0 :       pt = myTriangleFacets[jj]->point(kk);
      39                 :          0 :       found = CUBIT_FALSE;
      40 [ #  # ][ #  # ]:          0 :       for (ii=0; ii<4 && !found; ii++)
      41                 :            :       {
      42         [ #  # ]:          0 :         if (points[ii] == pt)
      43                 :            :         {
      44                 :          0 :           triToQuadIndex[jj][kk] = ii;
      45                 :          0 :           found = CUBIT_TRUE;
      46                 :            :         }
      47                 :            :       }
      48                 :            : 
      49                 :            :       // If assertion occurs, the that points passed to the constructor do 
      50                 :            :       // not match the points on the triangle facets
      51                 :            : 
      52         [ #  # ]:          0 :       assert(found == CUBIT_TRUE);
      53                 :            :     }
      54                 :            :   }
      55                 :          0 : }
      56                 :            : 
      57                 :            : //===========================================================================
      58                 :            : //  Function: CubitQuadFacetData
      59                 :            : //  Purpose:  constructor
      60                 :            : //  Notes:    defines a quad facet given its ordered point array.
      61                 :            : //            Two triangle facets are created
      62                 :            : //  Date:     4/11/01
      63                 :            : //  Author:   sjowen
      64                 :            : //===========================================================================
      65                 :          0 : CubitQuadFacetData::CubitQuadFacetData(
      66                 :            :   CubitPoint *point0, CubitPoint *point1, 
      67                 :          0 :   CubitPoint *point2, CubitPoint *point3 )
      68                 :            : {
      69                 :            :   
      70                 :            :   // The orientation of the triangles in the quad is arbitrary.
      71                 :            :   // We may want to split based on some other criteria (ie. angles)
      72                 :            : 
      73 [ #  # ][ #  # ]:          0 :   myTriangleFacets[0] = new CubitFacetData( point0, point1, point2 );
      74 [ #  # ][ #  # ]:          0 :   myTriangleFacets[1] = new CubitFacetData( point2, point3, point0 );
      75                 :            : 
      76                 :          0 :   triToQuadIndex[0][0] = 0;
      77                 :          0 :   triToQuadIndex[0][1] = 1;
      78                 :          0 :   triToQuadIndex[0][2] = 2;
      79                 :          0 :   triToQuadIndex[1][0] = 2;
      80                 :          0 :   triToQuadIndex[1][1] = 3;
      81                 :          0 :   triToQuadIndex[1][2] = 0;
      82                 :          0 : }
      83                 :            : 
      84                 :            : //===========================================================================
      85                 :            : //  Function: CubitQuadFacetData
      86                 :            : //  Purpose:  constructor
      87                 :            : //  Notes:    defines a quad facet given its ordered edge array.
      88                 :            : //            Two triangle facets are created
      89                 :            : //  Date:     4/11/01
      90                 :            : //  Author:   sjowen
      91                 :            : //===========================================================================
      92                 :          0 : CubitQuadFacetData::CubitQuadFacetData(
      93                 :            :   CubitFacetEdge *e0, CubitFacetEdge *e1,
      94                 :          0 :   CubitFacetEdge *e2, CubitFacetEdge *e3 )
      95                 :            : {
      96                 :            :   // create the diagonal edge
      97                 :            : 
      98         [ #  # ]:          0 :   CubitPoint *p0 = e3->shared_point(e0);
      99         [ #  # ]:          0 :   CubitPoint *p2 = e1->shared_point(e2);
     100 [ #  # ][ #  # ]:          0 :   assert(p0 != NULL && p2 != NULL);
     101                 :            : 
     102 [ #  # ][ #  # ]:          0 :   CubitFacetEdge *e4 = (CubitFacetEdge *) new CubitFacetEdgeData( p0, p2 );
     103                 :            : 
     104                 :            :   // create the triangles
     105                 :            : 
     106 [ #  # ][ #  # ]:          0 :   myTriangleFacets[0] = new CubitFacetData( e1, e4, e0 );
     107 [ #  # ][ #  # ]:          0 :   myTriangleFacets[1] = new CubitFacetData( e3, e4, e2 );
     108                 :            : 
     109                 :          0 :   triToQuadIndex[0][0] = 0;
     110                 :          0 :   triToQuadIndex[0][1] = 1;
     111                 :          0 :   triToQuadIndex[0][2] = 2;
     112                 :          0 :   triToQuadIndex[1][0] = 2;
     113                 :          0 :   triToQuadIndex[1][1] = 3;
     114                 :          0 :   triToQuadIndex[1][2] = 0;
     115                 :          0 : }
     116                 :            : 
     117                 :            : //===========================================================================
     118                 :            : //  Function: CubitQuadFacetData
     119                 :            : //  Purpose:  constructor
     120                 :            : //  Notes:    defines a quad facet given its ordered point array.
     121                 :            : //            Two triangle facets are created
     122                 :            : //  Date:     4/11/01
     123                 :            : //  Author:   sjowen
     124                 :            : //===========================================================================
     125                 :          0 : CubitQuadFacetData::CubitQuadFacetData(
     126                 :          0 :   CubitPoint *points[4] )
     127                 :            : {
     128                 :            :   
     129                 :            :   // The orientation of the triangles in the quad is arbitrary.
     130                 :            :   // We may want to split based on some other criteria (ie. angles)
     131                 :            : 
     132 [ #  # ][ #  # ]:          0 :   myTriangleFacets[0] = new CubitFacetData( points[0], points[1], points[2] );
     133 [ #  # ][ #  # ]:          0 :   myTriangleFacets[1] = new CubitFacetData( points[2], points[3], points[0] );
     134                 :            : 
     135                 :          0 :   triToQuadIndex[0][0] = 0;
     136                 :          0 :   triToQuadIndex[0][1] = 1;
     137                 :          0 :   triToQuadIndex[0][2] = 2;
     138                 :          0 :   triToQuadIndex[1][0] = 2;
     139                 :          0 :   triToQuadIndex[1][1] = 3;
     140                 :          0 :   triToQuadIndex[1][2] = 0;
     141                 :          0 : }
     142                 :            : 
     143                 :            : //===========================================================================
     144                 :            : //  Function: ~CubitQuadFacetData
     145                 :            : //  Purpose:  destructor
     146                 :            : //  Date:     4/11/01
     147                 :            : //  Author:   sjowen
     148                 :            : //===========================================================================
     149         [ #  # ]:          0 : CubitQuadFacetData::~CubitQuadFacetData()
     150                 :            : {
     151 [ #  # ][ #  # ]:          0 :   if (myTriangleFacets[0] == NULL && myTriangleFacets[1] == NULL)
     152                 :          0 :     return;
     153                 :            : 
     154 [ #  # ][ #  # ]:          0 :   assert(myTriangleFacets[0] && myTriangleFacets[1]);
     155                 :            : 
     156                 :            :   // determine the dialogonal edge
     157         [ #  # ]:          0 :   CubitPoint *p0 = this->point(0);
     158         [ #  # ]:          0 :   CubitPoint *p2 = this->point(2);
     159                 :          0 :   CubitFacetEdge *dedge = NULL;
     160 [ #  # ][ #  # ]:          0 :   if (p0 != NULL && p2 != NULL)
     161                 :            :   {
     162         [ #  # ]:          0 :     dedge = p0->shared_edge(p2);
     163                 :            :   }
     164                 :            : 
     165                 :            :   // delete both triangles
     166 [ #  # ][ #  # ]:          0 :   delete myTriangleFacets[0];
     167 [ #  # ][ #  # ]:          0 :   delete myTriangleFacets[1];
     168                 :            : 
     169                 :            :   // delete the dialgonal edge
     170         [ #  # ]:          0 :   if (dedge != NULL)
     171                 :            :   { 
     172 [ #  # ][ #  # ]:          0 :     delete dedge;
     173                 :            :   }
     174         [ #  # ]:          0 : }
     175                 :            : 
     176                 :            : //===========================================================================
     177                 :            : //  Function: ~CubitQuadFacetData
     178                 :            : //  Purpose:  destructor
     179                 :            : //  Date:     4/11/01
     180                 :            : //  Author:   sjowen
     181                 :            : //===========================================================================
     182                 :          0 : void CubitQuadFacetData::remove_tri_facets(  )
     183                 :            : {
     184                 :          0 :   myTriangleFacets[0] = NULL;
     185                 :          0 :   myTriangleFacets[1] = NULL;
     186                 :          0 : }
     187                 :            : 
     188                 :            : //===========================================================================
     189                 :            : //  Function: points
     190                 :            : //  Purpose:  get the points from the facet
     191                 :            : //  Date:     4/11/01
     192                 :            : //  Author:   sjowen
     193                 :            : //===========================================================================
     194                 :          0 : void CubitQuadFacetData::points(
     195                 :            :   CubitPoint *thepoints[4] )
     196                 :            : {
     197                 :            : 
     198                 :          0 :   thepoints[triToQuadIndex[0][0]] = myTriangleFacets[0]->point(0);
     199                 :          0 :   thepoints[triToQuadIndex[0][1]] = myTriangleFacets[0]->point(1);
     200                 :          0 :   thepoints[triToQuadIndex[0][2]] = myTriangleFacets[0]->point(2);
     201                 :          0 :   thepoints[triToQuadIndex[1][0]] = myTriangleFacets[1]->point(0);
     202                 :          0 :   thepoints[triToQuadIndex[1][1]] = myTriangleFacets[1]->point(1);
     203                 :          0 :   thepoints[triToQuadIndex[1][2]] = myTriangleFacets[1]->point(2);
     204                 :          0 : }
     205                 :            : 
     206                 :            : //===========================================================================
     207                 :            : //  Function: point
     208                 :            : //  Purpose:  get the point from the facet
     209                 :            : //  Date:     11/28/2002
     210                 :            : //  Author:   sjowen
     211                 :            : //===========================================================================
     212                 :          0 : CubitPoint *CubitQuadFacetData::point( int index )
     213                 :            : {
     214                 :            :   int ii, jj;
     215         [ #  # ]:          0 :   for (ii=0; ii<2; ii++)
     216                 :            :   {
     217         [ #  # ]:          0 :     for (jj=0; jj<3; jj++)
     218                 :            :     {
     219         [ #  # ]:          0 :       if (triToQuadIndex[ii][jj] == index)
     220                 :            :       {
     221                 :          0 :         return myTriangleFacets[ii]->point(jj);
     222                 :            :       }
     223                 :            :     }
     224                 :            :   }
     225                 :          0 :   assert(0);  // index is probably out of range
     226                 :            :   return NULL;
     227                 :            : }
     228                 :            : 
     229                 :            : //===========================================================================
     230                 :            : //  Function: edge
     231                 :            : //  Purpose:  get the edge from the facet
     232                 :            : //  Date:     11/28/2002
     233                 :            : //  Author:   sjowen
     234                 :            : //===========================================================================
     235                 :          0 : CubitFacetEdge *CubitQuadFacetData::edge( int index )
     236                 :            : {
     237                 :            :   int ii, jj;
     238                 :          0 :   CubitPoint *p0 = NULL;
     239                 :          0 :   CubitPoint *p1 = NULL;
     240                 :          0 :   int index1 = (index + 1) % 4;
     241         [ #  # ]:          0 :   for (ii=0; ii<2; ii++)
     242                 :            :   {
     243         [ #  # ]:          0 :     for (jj=0; jj<3; jj++)
     244                 :            :     {
     245         [ #  # ]:          0 :       if (triToQuadIndex[ii][jj] == index)
     246                 :            :       {
     247                 :          0 :         p0 = myTriangleFacets[ii]->point(jj);
     248                 :            :       }
     249         [ #  # ]:          0 :       else if ( triToQuadIndex[ii][jj] == index1 )
     250                 :            :       {
     251                 :          0 :         p1 = myTriangleFacets[ii]->point(jj);
     252                 :            :       }
     253                 :            :     }
     254                 :            :   }
     255 [ #  # ][ #  # ]:          0 :   assert(p0 != NULL && p1 != NULL);  // index is probably out of range
     256                 :            :   
     257                 :          0 :   return p0->shared_edge( p1 );
     258                 :            : }
     259                 :            : 
     260                 :            : 
     261                 :            : //===========================================================================
     262                 :            : //  Function: get_tri_facet
     263                 :            : //  Purpose:  return the underlying triangle of which the point_ptr is a vertex
     264                 :            : //  Date:     11/28/2002
     265                 :            : //  Author:   sjowen
     266                 :            : //===========================================================================
     267                 :          0 : CubitFacet *CubitQuadFacetData::get_tri_facet_at_point( CubitPoint *point_ptr )
     268                 :            : {
     269                 :            :   int ii, jj;
     270         [ #  # ]:          0 :   for (ii=0; ii<2; ii++)
     271                 :            :   {
     272         [ #  # ]:          0 :     for (jj=0; jj<3; jj++)
     273                 :            :     { 
     274         [ #  # ]:          0 :       if (myTriangleFacets[ii]->point(jj) == point_ptr)
     275                 :            :       {
     276                 :          0 :         return myTriangleFacets[ii]; 
     277                 :            :       }
     278                 :            :     }
     279                 :            :   }
     280                 :          0 :   assert(0);  // point isn't on facet
     281                 :            :   return NULL;
     282                 :            : }
     283                 :            : 

Generated by: LCOV version 1.11