Version: 6.3.1
Defines | Functions | Variables

src/SMDS/SMDS_VolumeTool.cxx File Reference

#include "SMDS_VolumeTool.hxx"
#include "SMDS_MeshElement.hxx"
#include "SMDS_MeshNode.hxx"
#include "SMDS_VtkVolume.hxx"
#include "SMDS_Mesh.hxx"
#include "utilities.h"
#include <map>
#include <float.h>
#include <math.h>
Include dependency graph for SMDS_VolumeTool.cxx:

Go to the source code of this file.

Defines

#define SWAP_NODES(nodes, i1, i2)

Functions

static double getTetraVolume (const SMDS_MeshNode *n1, const SMDS_MeshNode *n2, const SMDS_MeshNode *n3, const SMDS_MeshNode *n4)

Variables

static int Tetra_F [4][4]
static int Tetra_R [4][4]
static int Tetra_RE [4][4]
static int Tetra_nbN [] = { 3, 3, 3, 3 }
static int Pyramid_F [5][5]
static int Pyramid_R [5][5]
static int Pyramid_RE [5][5]
static int Pyramid_nbN [] = { 4, 3, 3, 3, 3 }
static int Penta_F [5][5]
static int Penta_R [5][5]
static int Penta_FE [5][5]
static int Penta_RE [5][5]
static int Penta_nbN [] = { 3, 3, 4, 4, 4 }
static int Hexa_F [6][5]
static int Hexa_FE [6][5]
static int Hexa_RE [6][5]
static int Hexa_nbN [] = { 4, 4, 4, 4, 4, 4 }
static int QuadTetra_F [4][7]
static int QuadTetra_R [4][7]
static int QuadTetra_RE [4][7]
static int QuadTetra_nbN [] = { 6, 6, 6, 6 }
static int QuadPyram_F [5][9]
static int QuadPyram_R [5][9]
static int QuadPyram_RE [5][9]
static int QuadPyram_nbN [] = { 8, 6, 6, 6, 6 }
static int QuadPenta_F [5][9]
static int QuadPenta_R [5][9]
static int QuadPenta_FE [5][9]
static int QuadPenta_RE [5][9]
static int QuadPenta_nbN [] = { 6, 6, 8, 8, 8 }
static int QuadHexa_F [6][9]
static int QuadHexa_FE [6][9]
static int QuadHexa_RE [6][9]
static int QuadHexa_nbN [] = { 8, 8, 8, 8, 8, 8 }

Define Documentation

#define SWAP_NODES (   nodes,
  i1,
  i2 
)
Value:
{                                         \
  const SMDS_MeshNode* tmp = nodes[ i1 ]; \
  nodes[ i1 ] = nodes[ i2 ];              \
  nodes[ i2 ] = tmp;                      \
}

Definition at line 546 of file SMDS_VolumeTool.cxx.

Referenced by SMDS_VolumeTool.Inverse().


Function Documentation

static double getTetraVolume ( const SMDS_MeshNode n1,
const SMDS_MeshNode n2,
const SMDS_MeshNode n3,
const SMDS_MeshNode n4 
) [static]

Definition at line 652 of file SMDS_VolumeTool.cxx.

References SMDS_MeshNode.X(), SMDS_MeshNode.Y(), and SMDS_MeshNode.Z().

Referenced by SMDS_VolumeTool.GetSize().

{
  double X1 = n1->X();
  double Y1 = n1->Y();
  double Z1 = n1->Z();

  double X2 = n2->X();
  double Y2 = n2->Y();
  double Z2 = n2->Z();

  double X3 = n3->X();
  double Y3 = n3->Y();
  double Z3 = n3->Z();

  double X4 = n4->X();
  double Y4 = n4->Y();
  double Z4 = n4->Z();

  double Q1 = -(X1-X2)*(Y3*Z4-Y4*Z3);
  double Q2 =  (X1-X3)*(Y2*Z4-Y4*Z2);
  double R1 = -(X1-X4)*(Y2*Z3-Y3*Z2);
  double R2 = -(X2-X3)*(Y1*Z4-Y4*Z1);
  double S1 =  (X2-X4)*(Y1*Z3-Y3*Z1);
  double S2 = -(X3-X4)*(Y1*Z2-Y2*Z1);

  return (Q1+Q2+R1+R2+S1+S2)/6.0;
}

Variable Documentation

int Hexa_F[6][5] [static]
Initial value:
 { 
  { 0, 1, 2, 3, 0 },         
  { 4, 5, 6, 7, 4 },         
  { 1, 0, 4, 5, 1 },         
  { 2, 3, 7, 6, 2 }, 
  { 0, 3, 7, 4, 0 }, 
  { 1, 2, 6, 5, 1 }}

Definition at line 161 of file SMDS_VolumeTool.cxx.

Referenced by SMDS_VolumeTool.GetFaceNodesIndices(), and SMDS_VolumeTool.setFace().

int Hexa_FE[6][5] [static]
Initial value:
 { 
  { 0, 1, 2, 3, 0 } ,         
  { 4, 7, 6, 5, 4 },          
  { 0, 4, 5, 1, 0 },          
  { 3, 2, 6, 7, 3 }, 
  { 0, 3, 7, 4, 0 },
  { 1, 5, 6, 2, 1 }}

Definition at line 175 of file SMDS_VolumeTool.cxx.

Referenced by SMDS_VolumeTool.GetFaceNodesIndices(), and SMDS_VolumeTool.setFace().

int Hexa_nbN[] = { 4, 4, 4, 4, 4, 4 } [static]

Definition at line 189 of file SMDS_VolumeTool.cxx.

Referenced by SMDS_VolumeTool.NbFaceNodes(), and SMDS_VolumeTool.setFace().

int Hexa_RE[6][5] [static]
Initial value:
 { 
  { 0, 3, 2, 1, 0 },          
  { 4, 5, 6, 7, 4 },          
  { 0, 1, 5, 4, 0 },          
  { 3, 7, 6, 2, 3 }, 
  { 0, 4, 7, 3, 0 },
  { 1, 2, 6, 5, 1 }}

Definition at line 182 of file SMDS_VolumeTool.cxx.

Referenced by SMDS_VolumeTool.setFace().

int Penta_F[5][5] [static]
Initial value:
 { 
  { 0, 1, 2, 0, 0 },          
  { 3, 4, 5, 3, 3 },          
  { 0, 2, 5, 3, 0 },
  { 1, 4, 5, 2, 1 },
  { 0, 3, 4, 1, 0 }}

Definition at line 120 of file SMDS_VolumeTool.cxx.

Referenced by SMDS_VolumeTool.GetFaceNodesIndices(), and SMDS_VolumeTool.setFace().

int Penta_FE[5][5] [static]
Initial value:
 { 
  { 0, 1, 2, 0, 0 },
  { 3, 5, 4, 3, 3 },
  { 0, 2, 5, 3, 0 },
  { 1, 4, 5, 2, 1 },
  { 0, 3, 4, 1, 0 }}

Definition at line 132 of file SMDS_VolumeTool.cxx.

Referenced by SMDS_VolumeTool.GetFaceNodesIndices(), and SMDS_VolumeTool.setFace().

int Penta_nbN[] = { 3, 3, 4, 4, 4 } [static]

Definition at line 144 of file SMDS_VolumeTool.cxx.

Referenced by SMDS_VolumeTool.NbFaceNodes(), and SMDS_VolumeTool.setFace().

int Penta_R[5][5] [static]
Initial value:
 { 
  { 0, 1, 2, 0, 0 },          
  { 3, 4, 5, 3, 3 },          
  { 0, 3, 5, 2, 0 },
  { 1, 2, 5, 4, 1 },
  { 0, 1, 4, 3, 0 }}

Definition at line 126 of file SMDS_VolumeTool.cxx.

Referenced by SMDS_VolumeTool.setFace().

int Penta_RE[5][5] [static]
Initial value:
 { 
  { 0, 2, 1, 0, 0 },
  { 3, 4, 5, 3, 3 },
  { 0, 3, 5, 2, 0 },
  { 1, 2, 5, 4, 1 },
  { 0, 1, 4, 3, 0 }}

Definition at line 138 of file SMDS_VolumeTool.cxx.

Referenced by SMDS_VolumeTool.setFace().

int Pyramid_F[5][5] [static]
Initial value:
 { 
  { 0, 1, 2, 3, 0 },            
  { 0, 4, 1, 0, 4 },
  { 1, 4, 2, 1, 4 },
  { 2, 4, 3, 2, 4 },
  { 3, 4, 0, 3, 4 }}

Definition at line 85 of file SMDS_VolumeTool.cxx.

Referenced by SMDS_VolumeTool.GetFaceNodesIndices(), and SMDS_VolumeTool.setFace().

int Pyramid_nbN[] = { 4, 3, 3, 3, 3 } [static]

Definition at line 103 of file SMDS_VolumeTool.cxx.

Referenced by SMDS_VolumeTool.NbFaceNodes(), and SMDS_VolumeTool.setFace().

int Pyramid_R[5][5] [static]
Initial value:
 { 
  { 0, 1, 2, 3, 0 },            
  { 0, 1, 4, 0, 4 },
  { 1, 2, 4, 1, 4 },
  { 2, 3, 4, 2, 4 },
  { 3, 0, 4, 3, 4 }}

Definition at line 91 of file SMDS_VolumeTool.cxx.

Referenced by SMDS_VolumeTool.setFace().

int Pyramid_RE[5][5] [static]
Initial value:
 { 
  { 0, 3, 2, 1, 0 },             
  { 0, 1, 4, 0, 4 },
  { 1, 2, 4, 1, 4 },
  { 2, 3, 4, 2, 4 },
  { 3, 0, 4, 3, 4 }}

Definition at line 97 of file SMDS_VolumeTool.cxx.

Referenced by SMDS_VolumeTool.setFace().

int QuadHexa_F[6][9] [static]
Initial value:
 {  
  { 0, 8, 1, 9, 2, 10,3, 11,0 },  
  { 4, 12,5, 13,6, 14,7, 15,4 },  
  { 1, 8, 0, 16,4, 12,5, 17,1 },  
  { 2, 10,3, 19,7, 14,6, 18,2 }, 
  { 0, 11,3, 19,7, 15,4, 16,0 }, 
  { 1, 9, 2, 18,6, 13,5, 17,1 }}

Definition at line 338 of file SMDS_VolumeTool.cxx.

Referenced by SMDS_VolumeTool.GetFaceNodesIndices(), and SMDS_VolumeTool.setFace().

int QuadHexa_FE[6][9] [static]
Initial value:
 {  
  { 0, 8, 1, 9, 2, 10,3, 11,0 },   
  { 4, 15,7, 14,6, 13,5, 12,4 },   
  { 0, 16,4, 12,5, 17,1, 8, 0 },   
  { 3, 10,2, 18,6, 14,7, 19,3 }, 
  { 0, 11,3, 19,7, 15,4, 16,0 },
  { 1, 17,5, 13,6, 18,2, 9, 1 }}

Definition at line 352 of file SMDS_VolumeTool.cxx.

Referenced by SMDS_VolumeTool.GetFaceNodesIndices(), and SMDS_VolumeTool.setFace().

int QuadHexa_nbN[] = { 8, 8, 8, 8, 8, 8 } [static]

Definition at line 366 of file SMDS_VolumeTool.cxx.

Referenced by SMDS_VolumeTool.NbFaceNodes(), and SMDS_VolumeTool.setFace().

int QuadHexa_RE[6][9] [static]
Initial value:
 {  
  { 0, 11,3, 10,2, 9, 1, 8, 0 },   
  { 4, 12,5, 13,6, 14,7, 15,4 },   
  { 0, 8, 1, 17,5, 12,4, 16,0 },   
  { 3, 19,7, 14,6, 18,2, 10,3 }, 
  { 0, 16,4, 15,7, 19,3, 11,0 },
  { 1, 9, 2, 18,6, 13,5, 17,1 }}

Definition at line 359 of file SMDS_VolumeTool.cxx.

Referenced by SMDS_VolumeTool.setFace().

int QuadPenta_F[5][9] [static]
Initial value:
 {  
  { 0, 6, 1, 7, 2, 8, 0, 0, 0 },   
  { 3, 9, 4, 10,5, 11,3, 3, 3 },   
  { 0, 8, 2, 14,5, 11,3, 12,0 },
  { 1, 13,4, 10,5, 14,2, 7, 1 },
  { 0, 12,3, 9, 4, 13,1, 6, 0 }}

Definition at line 289 of file SMDS_VolumeTool.cxx.

Referenced by SMDS_VolumeTool.GetFaceNodesIndices(), and SMDS_VolumeTool.setFace().

int QuadPenta_FE[5][9] [static]
Initial value:
 { 
  { 0, 6, 1, 7, 2, 8, 0, 0, 0 },
  { 3,11, 5, 10,4, 9, 3, 3, 3 },
  { 0, 8, 2, 14,5, 11,3, 12,0 },
  { 1, 13,4, 10,5, 14,2, 7, 1 },
  { 0, 12,3, 9, 4, 13,1, 6, 0 }}

Definition at line 301 of file SMDS_VolumeTool.cxx.

Referenced by SMDS_VolumeTool.GetFaceNodesIndices(), and SMDS_VolumeTool.setFace().

int QuadPenta_nbN[] = { 6, 6, 8, 8, 8 } [static]

Definition at line 313 of file SMDS_VolumeTool.cxx.

Referenced by SMDS_VolumeTool.NbFaceNodes(), and SMDS_VolumeTool.setFace().

int QuadPenta_R[5][9] [static]
Initial value:
 { 
  { 0, 6, 1, 7, 2, 8, 0, 0, 0 },  
  { 3, 9, 4, 10,5, 11,3, 3, 3 },  
  { 0, 12,3, 11,5, 14,2, 8, 0 },
  { 1, 7, 2, 14,5, 10,4, 13,1 },
  { 0, 6, 1, 13,4, 9, 3, 12,0 }}

Definition at line 295 of file SMDS_VolumeTool.cxx.

Referenced by SMDS_VolumeTool.setFace().

int QuadPenta_RE[5][9] [static]
Initial value:
 { 
  { 0, 8, 2, 7, 1, 6, 0, 0, 0 },
  { 3, 9, 4, 10,5, 11,3, 3, 3 },
  { 0, 12,3, 11,5, 14,2, 8, 0 },
  { 1, 7, 2, 14,5, 10,4, 13,1 },
  { 0, 6, 1, 13,4, 9, 3, 12,0 }}

Definition at line 307 of file SMDS_VolumeTool.cxx.

Referenced by SMDS_VolumeTool.setFace().

int QuadPyram_F[5][9] [static]
Initial value:
 {  
  { 0, 5, 1, 6, 2, 7, 3, 8, 0 },   
  { 0, 9, 4, 10,1, 5, 0, 4, 4 },
  { 1, 10,4, 11,2, 6, 1, 4, 4 },
  { 2, 11,4, 12,3, 7, 2, 4, 4 },
  { 3, 12,4, 9, 0, 8, 3, 4, 4 }}

Definition at line 244 of file SMDS_VolumeTool.cxx.

Referenced by SMDS_VolumeTool.GetFaceNodesIndices(), and SMDS_VolumeTool.setFace().

int QuadPyram_nbN[] = { 8, 6, 6, 6, 6 } [static]

Definition at line 262 of file SMDS_VolumeTool.cxx.

Referenced by SMDS_VolumeTool.NbFaceNodes(), and SMDS_VolumeTool.setFace().

int QuadPyram_R[5][9] [static]
Initial value:
 {  
  { 0, 5, 1, 6, 2, 7, 3, 8, 0 },   
  { 0, 5, 1, 10,4, 9, 0, 4, 4 },
  { 1, 6, 2, 11,4, 10,1, 4, 4 },
  { 2, 7, 3, 12,4, 11,2, 4, 4 },
  { 3, 8, 0, 9, 4, 12,3, 4, 4 }}

Definition at line 250 of file SMDS_VolumeTool.cxx.

Referenced by SMDS_VolumeTool.setFace().

int QuadPyram_RE[5][9] [static]
Initial value:
 { 
  { 0, 8, 3, 7, 2, 6, 1, 5, 0 },   
  { 0, 5, 1, 10,4, 9, 0, 4, 4 },
  { 1, 6, 2, 11,4, 10,1, 4, 4 },
  { 2, 7, 3, 12,4, 11,2, 4, 4 },
  { 3, 8, 0, 9, 4, 12,3, 4, 4 }}

Definition at line 256 of file SMDS_VolumeTool.cxx.

Referenced by SMDS_VolumeTool.setFace().

int QuadTetra_F[4][7] [static]
Initial value:
 { 
  { 0, 4, 1, 5, 2, 6, 0 },        
  { 0, 7, 3, 8, 1, 4, 0 },
  { 1, 8, 3, 9, 2, 5, 1 },
  { 0, 6, 2, 9, 3, 7, 0 }}

Definition at line 206 of file SMDS_VolumeTool.cxx.

Referenced by SMDS_VolumeTool.GetFaceNodesIndices(), and SMDS_VolumeTool.setFace().

int QuadTetra_nbN[] = { 6, 6, 6, 6 } [static]

Definition at line 221 of file SMDS_VolumeTool.cxx.

Referenced by SMDS_VolumeTool.NbFaceNodes(), and SMDS_VolumeTool.setFace().

int QuadTetra_R[4][7] [static]
Initial value:
 { 
  { 0, 4, 1, 5, 2, 6, 0 },        
  { 0, 4, 1, 8, 3, 7, 0 },
  { 1, 5, 2, 9, 3, 8, 1 },
  { 0, 7, 3, 9, 2, 6, 0 }}

Definition at line 211 of file SMDS_VolumeTool.cxx.

Referenced by SMDS_VolumeTool.setFace().

int QuadTetra_RE[4][7] [static]
Initial value:
 { 
  { 0, 6, 2, 5, 1, 4, 0 },              
  { 0, 4, 1, 8, 3, 7, 0 },
  { 1, 5, 2, 9, 3, 8, 1 },
  { 0, 7, 3, 9, 2, 6, 0 }}

Definition at line 216 of file SMDS_VolumeTool.cxx.

Referenced by SMDS_VolumeTool.setFace().

int Tetra_F[4][4] [static]
Initial value:
 { 
  { 0, 1, 2, 0 },              
  { 0, 3, 1, 0 },
  { 1, 3, 2, 1 },
  { 0, 2, 3, 0 }}

Definition at line 65 of file SMDS_VolumeTool.cxx.

Referenced by SMDS_VolumeTool.GetFaceNodesIndices(), and SMDS_VolumeTool.setFace().

int Tetra_nbN[] = { 3, 3, 3, 3 } [static]

Definition at line 80 of file SMDS_VolumeTool.cxx.

Referenced by SMDS_VolumeTool.NbFaceNodes(), and SMDS_VolumeTool.setFace().

int Tetra_R[4][4] [static]
Initial value:
 { 
  { 0, 1, 2, 0 },             
  { 0, 1, 3, 0 },
  { 1, 2, 3, 1 },
  { 0, 3, 2, 0 }}

Definition at line 70 of file SMDS_VolumeTool.cxx.

Referenced by SMDS_VolumeTool.setFace().

int Tetra_RE[4][4] [static]
Initial value:
 { 
  { 0, 2, 1, 0 },              
  { 0, 1, 3, 0 },
  { 1, 2, 3, 1 },
  { 0, 3, 2, 0 }}

Definition at line 75 of file SMDS_VolumeTool.cxx.

Referenced by SMDS_VolumeTool.setFace().

Copyright © 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE
Copyright © 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS