Regression of SALOME_TESTS/Grids/smesh/viscous_layers_01/B2

This modif allows re-meshing a face on which _ViscousBuilder::shrink() fails
This commit is contained in:
eap 2016-05-11 16:59:07 +03:00
parent 48c26e46ac
commit d079d327d7
8 changed files with 59 additions and 54 deletions

View File

@ -65,7 +65,6 @@ NETGENPlugin_Hypothesis_i (PortableServer::POA_ptr thePOA,
SMESH_Hypothesis_i( thePOA ),
mySetMethodFlags(0)
{
MESSAGE( "NETGENPlugin_Hypothesis_i::NETGENPlugin_Hypothesis_i" );
myBaseImpl = new ::NETGENPlugin_Hypothesis (theGenImpl->GetANewId(),
theStudyId,
theGenImpl);
@ -80,7 +79,6 @@ NETGENPlugin_Hypothesis_i (PortableServer::POA_ptr thePOA,
//=============================================================================
NETGENPlugin_Hypothesis_i::~NETGENPlugin_Hypothesis_i()
{
MESSAGE( "NETGENPlugin_Hypothesis_i::~NETGENPlugin_Hypothesis_i" );
}
//=============================================================================

View File

@ -572,9 +572,6 @@ void NETGENPlugin_Mesher::PrepareOCCgeometry(netgen::OCCGeometry& occgeo,
BRepBndLib::Add (shape, bb);
double x1,y1,z1,x2,y2,z2;
bb.Get (x1,y1,z1,x2,y2,z2);
MESSAGE("shape bounding box:\n" <<
"(" << x1 << " " << y1 << " " << z1 << ") " <<
"(" << x2 << " " << y2 << " " << z2 << ")");
netgen::Point<3> p1 = netgen::Point<3> (x1,y1,z1);
netgen::Point<3> p2 = netgen::Point<3> (x2,y2,z2);
occgeo.boundingbox = netgen::Box<3> (p1,p2);
@ -1824,7 +1821,7 @@ NETGENPlugin_Mesher::AddSegmentsToMesh(netgen::Mesh& ngMesh,
int edgeID = 1, posID = -2;
bool isInternalWire = false;
double vertexNormPar = 0;
//const int prevNbNGSeg = ngMesh.GetNSeg();
const int prevNbNGSeg = ngMesh.GetNSeg();
for ( int i = 0; i < nbSegments; ++i ) // loop on segments
{
// Add the first point of a segment
@ -1962,6 +1959,8 @@ NETGENPlugin_Mesher::AddSegmentsToMesh(netgen::Mesh& ngMesh,
<< "\tp1 edge: " << seg.epgeominfo[ 1 ].edgenr << endl;
}
cout << "--END WIRE " << iW << endl;
#else
SMESH_Comment __not_unused_variable( prevNbNGSeg );
#endif
} // loop on WIREs of a FACE
@ -2708,7 +2707,8 @@ bool NETGENPlugin_Mesher::Compute()
}
// Build viscous layers
if ( _isViscousLayers2D )
if ( _isViscousLayers2D ||
StdMeshers_ViscousLayers2D::HasProxyMesh( TopoDS::Face( occgeo.fmap(1) ), *_mesh ))
{
if ( !internals.hasInternalVertexInFace() ) {
FillSMesh( occgeo, *_ngMesh, initState, *_mesh, nodeVec, comment );
@ -2722,6 +2722,8 @@ bool NETGENPlugin_Mesher::Compute()
viscousMesh = StdMeshers_ViscousLayers2D::Compute( *_mesh, F );
if ( !viscousMesh )
return false;
if ( viscousMesh->NbProxySubMeshes() == 0 )
continue;
// exclude from computation ng segments built on EDGEs of F
for (int i = 1; i <= _ngMesh->GetNSeg(); i++)
{
@ -2951,12 +2953,6 @@ bool NETGENPlugin_Mesher::Compute()
int nbVol = _ngMesh->GetNE();
bool isOK = ( !err && (_isVolume ? (nbVol > 0) : (nbFac > 0)) );
MESSAGE((err ? "Mesh Generation failure" : "End of Mesh Generation") <<
", nb nodes: " << nbNod <<
", nb segments: " << nbSeg <<
", nb faces: " << nbFac <<
", nb volumes: " << nbVol);
// Feed back the SMESHDS with the generated Nodes and Elements
if ( true /*isOK*/ ) // get whatever built
{
@ -3372,26 +3368,6 @@ double NETGENPlugin_Mesher::GetProgress(const SMESH_Algo* holder,
return Min( progress, 0.99 );
}
//================================================================================
/*!
* \brief Remove "test.out" and "problemfaces" files in current directory
*/
//================================================================================
void NETGENPlugin_Mesher::RemoveTmpFiles()
{
bool rm = SMESH_File("test.out").remove() ;
#ifndef WIN32
if (rm && netgen::testout)
{
delete netgen::testout;
netgen::testout = 0;
}
#endif
SMESH_File("problemfaces").remove();
SMESH_File("occmesh.rep").remove();
}
//================================================================================
/*!
* \brief Read mesh entities preventing successful computation from "test.out" file
@ -3942,6 +3918,18 @@ SMESH_Mesh& NETGENPlugin_Internals::getMesh() const
return const_cast<SMESH_Mesh&>( _mesh );
}
//================================================================================
/*!
* \brief Access to a counter of NETGENPlugin_NetgenLibWrapper instances
*/
//================================================================================
int& NETGENPlugin_NetgenLibWrapper::instanceCounter()
{
static int theCouner = 0;
return theCouner;
}
//================================================================================
/*!
* \brief Initialize netgen library
@ -3950,14 +3938,21 @@ SMESH_Mesh& NETGENPlugin_Internals::getMesh() const
NETGENPlugin_NetgenLibWrapper::NETGENPlugin_NetgenLibWrapper()
{
Ng_Init();
if ( instanceCounter() == 0 )
Ng_Init();
++instanceCounter();
_isComputeOk = false;
_coutBuffer = NULL;
_ngcout = NULL;
_ngcerr = NULL;
if ( !getenv( "KEEP_NETGEN_OUTPUT" ))
{
// redirect all netgen output (mycout,myerr,cout) to _outputFileName
_outputFileName = getOutputFileName();
_ngcout = netgen::mycout;
_ngcerr = netgen::myerr;
netgen::mycout = new ofstream ( _outputFileName.c_str() );
netgen::myerr = netgen::mycout;
_coutBuffer = std::cout.rdbuf();
@ -3979,9 +3974,11 @@ NETGENPlugin_NetgenLibWrapper::NETGENPlugin_NetgenLibWrapper()
NETGENPlugin_NetgenLibWrapper::~NETGENPlugin_NetgenLibWrapper()
{
--instanceCounter();
Ng_DeleteMesh( _ngMesh );
Ng_Exit();
NETGENPlugin_Mesher::RemoveTmpFiles();
RemoveTmpFiles();
if ( _coutBuffer )
std::cout.rdbuf( _coutBuffer );
#ifdef _DEBUG_
@ -4027,6 +4024,26 @@ std::string NETGENPlugin_NetgenLibWrapper::getOutputFileName()
return aGenericName.ToCString();
}
//================================================================================
/*!
* \brief Remove "test.out" and "problemfaces" files in current directory
*/
//================================================================================
void NETGENPlugin_NetgenLibWrapper::RemoveTmpFiles()
{
bool rm = SMESH_File("test.out").remove() ;
#ifndef WIN32
if ( rm && netgen::testout && instanceCounter() == 0 )
{
delete netgen::testout;
netgen::testout = 0;
}
#endif
SMESH_File("problemfaces").remove();
SMESH_File("occmesh.rep").remove();
}
//================================================================================
/*!
* \brief Remove file with netgen output
@ -4037,11 +4054,12 @@ void NETGENPlugin_NetgenLibWrapper::removeOutputFile()
{
if ( !_outputFileName.empty() )
{
if ( netgen::mycout )
if ( _ngcout )
{
delete netgen::mycout;
netgen::mycout = 0;
netgen::myerr = 0;
netgen::mycout = _ngcout;
netgen::myerr = _ngcerr;
_ngcout = 0;
}
string tmpDir = SALOMEDS_Tool::GetDirFromPath ( _outputFileName );
string aFileName = SALOMEDS_Tool::GetNameFromPath( _outputFileName ) + ".out";

View File

@ -88,11 +88,16 @@ struct NETGENPLUGIN_EXPORT NETGENPlugin_NetgenLibWrapper
~NETGENPlugin_NetgenLibWrapper();
void setMesh( nglib::Ng_Mesh* mesh );
static void RemoveTmpFiles();
static int& instanceCounter();
private:
std::string getOutputFileName();
void removeOutputFile();
std::string _outputFileName;
ostream * _ngcout;
ostream * _ngcerr;
std::streambuf* _coutBuffer; // to re-/store cout.rdbuf()
};
@ -181,8 +186,6 @@ class NETGENPLUGIN_EXPORT NETGENPlugin_Mesher
void SetDefaultParameters();
static void RemoveTmpFiles();
static SMESH_ComputeErrorPtr ReadErrors(const std::vector< const SMDS_MeshNode* >& nodeVec);

View File

@ -58,7 +58,6 @@ NETGENPlugin_NETGEN_2D::NETGENPlugin_NETGEN_2D(int hypId, int studyId,
SMESH_Gen* gen)
: SMESH_2D_Algo(hypId, studyId, gen)
{
MESSAGE("NETGENPlugin_NETGEN_2D::NETGENPlugin_NETGEN_2D");
_name = "NETGEN_2D";
_shapeType = (1 << TopAbs_FACE); // 1 bit /shape type
_compatibleHypothesis.push_back("NETGEN_Parameters_2D");
@ -78,7 +77,6 @@ NETGENPlugin_NETGEN_2D::NETGENPlugin_NETGEN_2D(int hypId, int studyId,
NETGENPlugin_NETGEN_2D::~NETGENPlugin_NETGEN_2D()
{
MESSAGE("NETGENPlugin_NETGEN_2D::~NETGENPlugin_NETGEN_2D");
}
//=============================================================================

View File

@ -50,7 +50,6 @@ NETGENPlugin_NETGEN_2D_i::NETGENPlugin_NETGEN_2D_i( PortableServer::POA_ptr theP
SMESH_Algo_i( thePOA ),
SMESH_2D_Algo_i( thePOA )
{
MESSAGE( "NETGENPlugin_NETGEN_2D_i::NETGENPlugin_NETGEN_2D_i" );
myBaseImpl = new ::NETGENPlugin_NETGEN_2D( theGenImpl->GetANewId(),
theStudyId,
theGenImpl );
@ -66,7 +65,6 @@ NETGENPlugin_NETGEN_2D_i::NETGENPlugin_NETGEN_2D_i( PortableServer::POA_ptr theP
NETGENPlugin_NETGEN_2D_i::~NETGENPlugin_NETGEN_2D_i()
{
MESSAGE( "NETGENPlugin_NETGEN_2D_i::~NETGENPlugin_NETGEN_2D_i" );
}
//=============================================================================
@ -79,6 +77,5 @@ NETGENPlugin_NETGEN_2D_i::~NETGENPlugin_NETGEN_2D_i()
::NETGENPlugin_NETGEN_2D* NETGENPlugin_NETGEN_2D_i::GetImpl()
{
MESSAGE( "NETGENPlugin_NETGEN_2D_i::GetImpl" );
return ( ::NETGENPlugin_NETGEN_2D* )myBaseImpl;
}

View File

@ -96,7 +96,6 @@ NETGENPlugin_NETGEN_3D::NETGENPlugin_NETGEN_3D(int hypId, int studyId,
SMESH_Gen* gen)
: SMESH_3D_Algo(hypId, studyId, gen)
{
MESSAGE("NETGENPlugin_NETGEN_3D::NETGENPlugin_NETGEN_3D");
_name = "NETGEN_3D";
_shapeType = (1 << TopAbs_SHELL) | (1 << TopAbs_SOLID);// 1 bit /shape type
_compatibleHypothesis.push_back("MaxElementVolume");
@ -120,7 +119,6 @@ NETGENPlugin_NETGEN_3D::NETGENPlugin_NETGEN_3D(int hypId, int studyId,
NETGENPlugin_NETGEN_3D::~NETGENPlugin_NETGEN_3D()
{
MESSAGE("NETGENPlugin_NETGEN_3D::~NETGENPlugin_NETGEN_3D");
}
//=============================================================================
@ -133,8 +131,6 @@ bool NETGENPlugin_NETGEN_3D::CheckHypothesis (SMESH_Mesh& aMesh,
const TopoDS_Shape& aShape,
Hypothesis_Status& aStatus)
{
MESSAGE("NETGENPlugin_NETGEN_3D::CheckHypothesis");
_hypMaxElementVolume = NULL;
_hypParameters = NULL;
_viscousLayersHyp = NULL;

View File

@ -51,7 +51,6 @@ NETGENPlugin_NETGEN_3D_i::NETGENPlugin_NETGEN_3D_i( PortableServer::POA_ptr theP
SMESH_Algo_i( thePOA ),
SMESH_3D_Algo_i( thePOA )
{
MESSAGE( "NETGENPlugin_NETGEN_3D_i::NETGENPlugin_NETGEN_3D_i" );
myBaseImpl = new ::NETGENPlugin_NETGEN_3D( theGenImpl->GetANewId(),
theStudyId,
theGenImpl );
@ -67,7 +66,6 @@ NETGENPlugin_NETGEN_3D_i::NETGENPlugin_NETGEN_3D_i( PortableServer::POA_ptr theP
NETGENPlugin_NETGEN_3D_i::~NETGENPlugin_NETGEN_3D_i()
{
MESSAGE( "NETGENPlugin_NETGEN_3D_i::~NETGENPlugin_NETGEN_3D_i" );
}
//=============================================================================
@ -80,7 +78,6 @@ NETGENPlugin_NETGEN_3D_i::~NETGENPlugin_NETGEN_3D_i()
::NETGENPlugin_NETGEN_3D* NETGENPlugin_NETGEN_3D_i::GetImpl()
{
MESSAGE( "NETGENPlugin_NETGEN_3D_i::GetImpl" );
return ( ::NETGENPlugin_NETGEN_3D* )myBaseImpl;
}

View File

@ -56,8 +56,6 @@ extern "C"
NETGENPLUGIN_EXPORT
GenericHypothesisCreator_i* GetHypothesisCreator (const char* aHypName)
{
MESSAGE("GetHypothesisCreator " << aHypName);
GenericHypothesisCreator_i* aCreator = 0;
// Hypotheses