0020982: EDF 1547 SMESH: Creation of non-conformal quadratic pyramids

double MaxLinearSize2() const;
  // Return maximal square distance between connected corner nodes
This commit is contained in:
eap 2012-09-17 10:16:21 +00:00
parent 9731c7f189
commit 3a58968846
2 changed files with 42 additions and 0 deletions

View File

@ -1452,6 +1452,45 @@ double SMDS_VolumeTool::MinLinearSize2() const
return minSize;
}
//================================================================================
/*!
* \brief Return maximal square distance between connected corner nodes
*/
//================================================================================
double SMDS_VolumeTool::MaxLinearSize2() const
{
double maxSize = -1e+100;
int iQ = myVolume->IsQuadratic() ? 2 : 1;
// store current face data
int curFace = myCurFace, nbN = myFaceNbNodes;
int* ind = myFaceNodeIndices;
myFaceNodeIndices = NULL;
const SMDS_MeshNode** nodes = myFaceNodes;
myFaceNodes = NULL;
// it seems that compute distance twice is faster than organization of a sole computing
myCurFace = -1;
for ( int iF = 0; iF < myNbFaces; ++iF )
{
setFace( iF );
for ( int iN = 0; iN < myFaceNbNodes; iN += iQ )
{
XYZ n1( myFaceNodes[ iN ]);
XYZ n2( myFaceNodes[(iN + iQ) % myFaceNbNodes]);
maxSize = std::max( maxSize, (n1 - n2).SquareMagnitude());
}
}
// restore current face data
myCurFace = curFace;
myFaceNbNodes = nbN;
myFaceNodeIndices = ind;
delete [] myFaceNodes; myFaceNodes = nodes;
return maxSize;
}
//================================================================================
/*!
* \brief check that only one volume is build on the face nodes

View File

@ -128,6 +128,9 @@ class SMDS_EXPORT SMDS_VolumeTool
double MinLinearSize2() const;
// Return minimal square distance between connected corner nodes
double MaxLinearSize2() const;
// Return maximal square distance between connected corner nodes
// -------------
// info on faces
// -------------