mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2025-04-08 10:47:27 +05:00
0022414: [CEA 1010] Regressio on tests 01_composite.py
Fix for a vertex w/o a node
This commit is contained in:
parent
1faf00f679
commit
a004160516
@ -1397,6 +1397,8 @@ bool StdMeshers_Quadrangle_2D::ComputeQuadPref (SMESH_Mesh & aMesh,
|
|||||||
bool WisF = true;
|
bool WisF = true;
|
||||||
int i,j,geomFaceID = meshDS->ShapeToIndex(F);
|
int i,j,geomFaceID = meshDS->ShapeToIndex(F);
|
||||||
|
|
||||||
|
UpdateDegenUV( quad );
|
||||||
|
|
||||||
int nb = quad->side[0]->NbPoints();
|
int nb = quad->side[0]->NbPoints();
|
||||||
int nr = quad->side[1]->NbPoints();
|
int nr = quad->side[1]->NbPoints();
|
||||||
int nt = quad->side[2]->NbPoints();
|
int nt = quad->side[2]->NbPoints();
|
||||||
@ -1436,14 +1438,14 @@ bool StdMeshers_Quadrangle_2D::ComputeQuadPref (SMESH_Mesh & aMesh,
|
|||||||
int addh = 0;
|
int addh = 0;
|
||||||
int addv = 0;
|
int addv = 0;
|
||||||
|
|
||||||
|
// Orientation of face and 3 main domain for future faces
|
||||||
// ----------- Old version ---------------
|
// ----------- Old version ---------------
|
||||||
// orientation of face and 3 main domain for future faces
|
|
||||||
// 0 top 1
|
// 0 top 1
|
||||||
// 1------------1
|
// 1------------1
|
||||||
// | | | |
|
// | | | |
|
||||||
// | | | |
|
// | |C | |
|
||||||
// | L | | R |
|
// | L | | R |
|
||||||
// left | | | | rigth
|
// left | |__| | rigth
|
||||||
// | / \ |
|
// | / \ |
|
||||||
// | / C \ |
|
// | / C \ |
|
||||||
// |/ \|
|
// |/ \|
|
||||||
@ -1451,15 +1453,14 @@ bool StdMeshers_Quadrangle_2D::ComputeQuadPref (SMESH_Mesh & aMesh,
|
|||||||
// 0 bottom 1
|
// 0 bottom 1
|
||||||
|
|
||||||
// ----------- New version ---------------
|
// ----------- New version ---------------
|
||||||
// orientation of face and 3 main domain for future faces
|
|
||||||
// 0 top 1
|
// 0 top 1
|
||||||
// 1------------1
|
// 1------------1
|
||||||
// | |____| |
|
// | |_C__| |
|
||||||
// | / \ |
|
// | / \ |
|
||||||
// | / C \ |
|
// | / C \ |
|
||||||
// left |/________\| rigth
|
// left |/________\| rigth
|
||||||
// | |
|
// | |
|
||||||
// | |
|
// | C |
|
||||||
// | |
|
// | |
|
||||||
// 0------------0
|
// 0------------0
|
||||||
// 0 bottom 1
|
// 0 bottom 1
|
||||||
@ -1481,8 +1482,6 @@ bool StdMeshers_Quadrangle_2D::ComputeQuadPref (SMESH_Mesh & aMesh,
|
|||||||
if (uv_eb.size() != nb || uv_er.size() != nr || uv_et.size() != nt || uv_el.size() != nl)
|
if (uv_eb.size() != nb || uv_er.size() != nr || uv_et.size() != nt || uv_el.size() != nl)
|
||||||
return error(COMPERR_BAD_INPUT_MESH);
|
return error(COMPERR_BAD_INPUT_MESH);
|
||||||
|
|
||||||
UpdateDegenUV( quad );
|
|
||||||
|
|
||||||
// arrays for normalized params
|
// arrays for normalized params
|
||||||
TColStd_SequenceOfReal npb, npr, npt, npl;
|
TColStd_SequenceOfReal npb, npr, npt, npl;
|
||||||
for (i=0; i<nb; i++) {
|
for (i=0; i<nb; i++) {
|
||||||
@ -2758,10 +2757,10 @@ bool StdMeshers_Quadrangle_2D::ComputeReduced (SMESH_Mesh & aMesh,
|
|||||||
|
|
||||||
vector<int> nb_col_by_row;
|
vector<int> nb_col_by_row;
|
||||||
|
|
||||||
int delta_all = nb - nt;
|
int delta_all = nb - nt;
|
||||||
int delta_one_col = nrows * 2;
|
int delta_one_col = nrows * 2;
|
||||||
int nb_col = delta_all / delta_one_col;
|
int nb_col = delta_all / delta_one_col;
|
||||||
int remainder = delta_all - nb_col * delta_one_col;
|
int remainder = delta_all - nb_col * delta_one_col;
|
||||||
if (remainder > 0) {
|
if (remainder > 0) {
|
||||||
nb_col++;
|
nb_col++;
|
||||||
}
|
}
|
||||||
@ -2772,13 +2771,13 @@ bool StdMeshers_Quadrangle_2D::ComputeReduced (SMESH_Mesh & aMesh,
|
|||||||
nb_col = ( nt - 1 ) / col_top_size;
|
nb_col = ( nt - 1 ) / col_top_size;
|
||||||
nb_col_by_row.resize( nrows, nb_col );
|
nb_col_by_row.resize( nrows, nb_col );
|
||||||
int nbrows_not_full = nrows - 1;
|
int nbrows_not_full = nrows - 1;
|
||||||
int cur_top_size = nt - 1;
|
int cur_top_size = nt - 1;
|
||||||
remainder = delta_all - nb_col * delta_one_col;
|
remainder = delta_all - nb_col * delta_one_col;
|
||||||
while ( remainder > 0 )
|
while ( remainder > 0 )
|
||||||
{
|
{
|
||||||
delta_one_col = nbrows_not_full * 2;
|
delta_one_col = nbrows_not_full * 2;
|
||||||
int nb_col_add = remainder / delta_one_col;
|
int nb_col_add = remainder / delta_one_col;
|
||||||
cur_top_size += 2 * nb_col_by_row[ nbrows_not_full ];
|
cur_top_size += 2 * nb_col_by_row[ nbrows_not_full ];
|
||||||
int nb_col_free = cur_top_size / col_top_size - nb_col_by_row[ nbrows_not_full-1 ];
|
int nb_col_free = cur_top_size / col_top_size - nb_col_by_row[ nbrows_not_full-1 ];
|
||||||
if ( nb_col_add > nb_col_free )
|
if ( nb_col_add > nb_col_free )
|
||||||
nb_col_add = nb_col_free;
|
nb_col_add = nb_col_free;
|
||||||
@ -3588,7 +3587,7 @@ int StdMeshers_Quadrangle_2D::GetCorners(const TopoDS_Face& theFace,
|
|||||||
theVertices.push_back( v );
|
theVertices.push_back( v );
|
||||||
cornerInd.push_back( angles.size() );
|
cornerInd.push_back( angles.size() );
|
||||||
}
|
}
|
||||||
angles.push_back( angleByVertex( v ));
|
angles.push_back( angleByVertex.IsBound( v ) ? angleByVertex( v ) : -M_PI );
|
||||||
edgeVec.push_back( *edge );
|
edgeVec.push_back( *edge );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user