IPAL53702: Quadrangle mapping does not use some boundary nodes

IPAL53864: Viscous Layers 2D fails and is uneven at some points
    Fix failure but non-uniform thickness remains
This commit is contained in:
eap 2017-01-24 19:31:19 +03:00
parent 07c4cd4c20
commit e613ea2b8d
3 changed files with 25 additions and 21 deletions

View File

@ -1787,27 +1787,29 @@ class Mesh:
pass
pass
## Export the mesh in a file in MED format and chooses the \a version of MED format
## Export the mesh in a file in MED format
## allowing to overwrite the file if it exists or add the exported data to its contents
# @param f is the file name
# @param auto_groups boolean parameter for creating/not creating
# the groups Group_On_All_Nodes, Group_On_All_Faces, ... ;
# the typical use is auto_groups=false.
# @param version MED format version(MED_V2_1 or MED_V2_2)
# the typical use is auto_groups=False.
# @param version MED format version (MED_V2_1 or MED_V2_2,
# the latter meaning any current version). The parameter is
# obsolete since MED_V2_1 is no longer supported.
# @param overwrite boolean parameter for overwriting/not overwriting the file
# @param meshPart a part of mesh (group, sub-mesh) to export instead of the mesh
# @param autoDimension: if @c True (default), a space dimension of a MED mesh can be either
# @param autoDimension if @c True (default), a space dimension of a MED mesh can be either
# - 1D if all mesh nodes lie on OX coordinate axis, or
# - 2D if all mesh nodes lie on XOY coordinate plane, or
# - 3D in the rest cases.
# - 3D in the rest cases.<br>
# If @a autoDimension is @c False, the space dimension is always 3.
# @param fields : list of GEOM fields defined on the shape to mesh.
# @param geomAssocFields : each character of this string means a need to export a
# @param fields list of GEOM fields defined on the shape to mesh.
# @param geomAssocFields each character of this string means a need to export a
# corresponding field; correspondence between fields and characters is following:
# - 'v' stands for _vertices_ field;
# - 'e' stands for _edges_ field;
# - 'f' stands for _faces_ field;
# - 's' stands for _solids_ field.
# - 'v' stands for "_vertices _" field;
# - 'e' stands for "_edges _" field;
# - 'f' stands for "_faces _" field;
# - 's' stands for "_solids _" field.
# @ingroup l2_impexp
def ExportMED(self, f, auto_groups=0, version=MED_V2_2,
overwrite=1, meshPart=None, autoDimension=True, fields=[], geomAssocFields=''):
@ -1906,22 +1908,23 @@ class Mesh:
meshPart = self.mesh
self.mesh.ExportGMF(meshPart, f, True)
## Deprecated, used only for compatibility! Please, use ExportToMEDX() method instead.
# Export the mesh in a file in MED format and chooses the \a version of MED format
## allowing to overwrite the file if it exists or add the exported data to its contents
## Deprecated, used only for compatibility! Please, use ExportMED() method instead.
# Export the mesh in a file in MED format
# allowing to overwrite the file if it exists or add the exported data to its contents
# @param f the file name
# @param version values are SMESH.MED_V2_1, SMESH.MED_V2_2
# @param version MED format version (MED_V2_1 or MED_V2_2,
# the latter meaning any current version). The parameter is
# obsolete since MED_V2_1 is no longer supported.
# @param opt boolean parameter for creating/not creating
# the groups Group_On_All_Nodes, Group_On_All_Faces, ...
# @param overwrite boolean parameter for overwriting/not overwriting the file
# @param autoDimension: if @c True (default), a space dimension of a MED mesh can be either
# @param autoDimension if @c True (default), a space dimension of a MED mesh can be either
# - 1D if all mesh nodes lie on OX coordinate axis, or
# - 2D if all mesh nodes lie on XOY coordinate plane, or
# - 3D in the rest cases.
#
# - 3D in the rest cases.<br>
# If @a autoDimension is @c False, the space dimension is always 3.
# @ingroup l2_impexp
def ExportToMED(self, f, version, opt=0, overwrite=1, autoDimension=True):
def ExportToMED(self, f, version=MED_V2_2, opt=0, overwrite=1, autoDimension=True):
self.mesh.ExportToMEDX(f, opt, version, overwrite, autoDimension)
# Operations with groups:

View File

@ -4523,7 +4523,7 @@ int StdMeshers_Quadrangle_2D::getCorners(const TopoDS_Face& theFace,
// move corners to make sides equal by length
int nbEqualV = equVerts.size();
int nbExcessV = nbEqualV - ( 1 + nbC[0] + nbC[1] );
if ( nbExcessV > 0 ) // there is nbExcessV vertices that can become corners
if ( nbExcessV > 0 ) // there are nbExcessV vertices that can become corners
{
// calculate normalized length of each "side" enclosed between neighbor equVerts
vector< double > accuLength;
@ -4584,6 +4584,7 @@ int StdMeshers_Quadrangle_2D::getCorners(const TopoDS_Face& theFace,
if ( iBestEV > iS-1 + nbExcessV )
iBestEV = iS-1 + nbExcessV;
theVertices[ iCorner ] = helper.IthVertex( 0, edgeVec[ evVec[ iBestEV ]]);
cornerInd [ iCorner ] = evVec[ iBestEV ];
refinedCorners.insert( evVec[ iBestEV ]);
iCorner = helper.WrapIndex( iCorner + 1, cornerInd.size() );
}

View File

@ -1263,7 +1263,7 @@ void _ViscousBuilder2D::adjustCommonEdge( _PolyLine& LL, _PolyLine& LR )
if ( isR )
LR._lEdges.erase( LR._lEdges.begin()+1, eIt );
else
LL._lEdges.erase( eIt, --LL._lEdges.end() );
LL._lEdges.erase( eIt+1, --LL._lEdges.end() );
// eIt = isR ? L._lEdges.begin()+1 : L._lEdges.end()-2;
// for ( size_t i = 1; i < iLE; ++i, eIt += dIt )
// eIt->_isBlocked = true;