Compare commits

...

9 Commits

Author SHA1 Message Date
maintenance team
25c824bbfc Changing version to 4.1.3 2008-06-02 06:55:18 +00:00
skl
0a178ce702 Updated for NPAL15716. 2008-05-26 07:27:50 +00:00
eap
3dcb2645a2 remove obsolete file 2008-05-23 10:13:17 +00:00
maintenance team
1e3bfa2970 key --with/whithout-ihm has been replaced by --with/whithout-gui 2008-05-19 12:26:12 +00:00
eap
7c2ac5565e PAL13464: SMESH homogenize algorithm hypothesis
can work with no hypothesis, LengthFromEdges is default one
2008-05-07 18:00:49 +00:00
eap
1ed2c1a5b5 remove NETGEN resources to NETGENPLUGIN 2008-04-17 08:42:52 +00:00
eap
eb8f61fcf1 add method allowing to customize help page
+  virtual QString helpPage() const;
2008-04-17 08:27:36 +00:00
maintenance team
e15e15b563 Changing version to 4.1.2 2008-04-16 08:05:42 +00:00
jfa
f1f61535d6 Join delta from tag V4_1_1 till tag mergeto_V4_1_0_maintainance_07Mar2008. 2008-03-07 11:05:58 +00:00
8 changed files with 103 additions and 63 deletions

View File

@ -32,10 +32,10 @@ fi
for option
do
case $option in
-with-ihm | --with-ihm)
-with-gui | --with-gui)
NETGENPLUGIN_WITH_GUI="yes"
break;;
-without-ihm | --without-ihm | -with-ihm=no | --with-ihm=no)
-without-gui | --without-gui | -with-gui=no | --with-gui=no)
NETGENPLUGIN_WITH_GUI="no"
break;;
esac

View File

@ -17,7 +17,7 @@
# Created from configure.in.base
#
AC_INIT([Salome2 Project NETGENPLUGIN module], [4.1.1], [webmaster.salome@opencascade.com], [salome])
AC_INIT([Salome2 Project NETGENPLUGIN module], [4.1.3], [webmaster.salome@opencascade.com], [salome])
AC_CONFIG_AUX_DIR(salome_adm/unix/config_files)
AC_CANONICAL_HOST
AC_CANONICAL_TARGET

Binary file not shown.

After

Width:  |  Height:  |  Size: 148 B

View File

@ -122,16 +122,18 @@ QFrame* NETGENPluginGUI_HypothesisCreator::buildFrame()
myGrowthRate->setMinValue( 0.1 );
myGrowthRate->setMaxValue( 10 );
myGrowthRate->setLineStep( 0.1 );
const double VALUE_MAX = 1.0e+6;
new QLabel( tr( "NETGEN_SEG_PER_EDGE" ), GroupC1 );
myNbSegPerEdge = new QtxDblSpinBox( GroupC1 );
myNbSegPerEdge->setMinValue( 0.2 );
myNbSegPerEdge->setMaxValue( 5.0 );
myNbSegPerEdge->setMaxValue( VALUE_MAX ); // (PAL14890) max value in native netgen gui is 5
new QLabel( tr( "NETGEN_SEG_PER_RADIUS" ), GroupC1 );
myNbSegPerRadius = new QtxDblSpinBox( GroupC1 );
myNbSegPerRadius->setMinValue( 0.2 );
myNbSegPerRadius->setMaxValue( 5.0 );
myNbSegPerRadius->setMaxValue( VALUE_MAX ); // (PAL14890) max value in native netgen gui is 5
if ( hypType()=="NETGEN_Parameters_2D" )
{
@ -343,3 +345,8 @@ QString NETGENPluginGUI_HypothesisCreator::type() const
{
return tr( QString( "NETGEN_%1_HYPOTHESIS" ).arg(myIs2D?QString("2D"):QString("3D")) );
}
QString NETGENPluginGUI_HypothesisCreator::helpPage() const
{
return "netgen_2d_3d_hypo_page.html";
}

View File

@ -64,7 +64,8 @@ public:
NETGENPluginGUI_HypothesisCreator( const QString& );
virtual ~NETGENPluginGUI_HypothesisCreator();
virtual bool checkParams() const;
virtual bool checkParams() const;
virtual QString helpPage() const;
protected:
virtual QFrame* buildFrame ();

View File

@ -114,11 +114,15 @@ bool NETGENPlugin_NETGEN_2D_ONLY::CheckHypothesis (SMESH_Mesh& aMesh,
_hypLengthFromEdges = 0;
_hypQuadranglePreference = 0;
aStatus = HYP_MISSING;
const list<const SMESHDS_Hypothesis*>& hyps = GetUsedHypothesis(aMesh, aShape, false);
if (hyps.empty()) return false; // can't work with no hypothesis
if (hyps.empty())
{
aStatus = HYP_OK; //SMESH_Hypothesis::HYP_MISSING;
return true; // (PAL13464) can work with no hypothesis, LengthFromEdges is default one
}
aStatus = HYP_MISSING;
list<const SMESHDS_Hypothesis*>::const_iterator ith;
for (ith = hyps.begin(); ith != hyps.end(); ++ith )
@ -328,7 +332,7 @@ bool NETGENPlugin_NETGEN_2D_ONLY::Compute(SMESH_Mesh& aMesh,
// --------------------
double edgeLength = 0;
if (_hypLengthFromEdges)
if (_hypLengthFromEdges || !_hypLengthFromEdges && !_hypMaxElementArea)
{
int nbSegments = 0;
for ( int iW = 0; iW < nbWires; ++iW )

View File

@ -38,6 +38,7 @@
#include "SMESH_Gen.hxx"
#include "SMESH_Mesh.hxx"
#include "SMESH_MesherHelper.hxx"
#include "StdMeshers_QuadToTriaAdaptor.hxx"
#include <BRep_Tool.hxx>
#include <TopExp.hxx>
@ -179,6 +180,9 @@ bool NETGENPlugin_NETGEN_3D::Compute(SMESH_Mesh& aMesh,
map< int, int* >::iterator shId_ngId;
list< int > degenNgIds;
StdMeshers_QuadToTriaAdaptor Adaptor;
Adaptor.Compute(aMesh,aShape);
for (TopExp_Explorer exp(aShape,TopAbs_FACE);exp.More();exp.Next())
{
const TopoDS_Shape& aShapeFace = exp.Current();
@ -195,20 +199,43 @@ bool NETGENPlugin_NETGEN_3D::Compute(SMESH_Mesh& aMesh,
if ( !elem )
return error( COMPERR_BAD_INPUT_MESH, "Null element encounters");
bool isTraingle = ( elem->NbNodes()==3 || (_quadraticMesh && elem->NbNodes()==6 ));
if ( !isTraingle )
return error( COMPERR_BAD_INPUT_MESH,
SMESH_Comment("Not triangle element ")<<elem->GetID());
// keep a triangle
triangles.push_back( elem );
isReversed.push_back( isRev );
// put elem nodes to nodeToNetgenID map
SMDS_ElemIteratorPtr triangleNodesIt = elem->nodesIterator();
while ( triangleNodesIt->more() ) {
const SMDS_MeshNode * node =
static_cast<const SMDS_MeshNode *>(triangleNodesIt->next());
if(myTool->IsMedium(node))
continue;
nodeToNetgenID.insert( make_pair( node, invalid_ID ));
if ( !isTraingle ) {
//return error( COMPERR_BAD_INPUT_MESH,
// SMESH_Comment("Not triangle element ")<<elem->GetID());
// using adaptor
std::list<const SMDS_FaceOfNodes*> faces = Adaptor.GetTriangles(elem);
if(faces.size()==0) {
return error( COMPERR_BAD_INPUT_MESH,
SMESH_Comment("Not triangles in adaptor for element ")<<elem->GetID());
}
std::list<const SMDS_FaceOfNodes*>::iterator itf = faces.begin();
for(; itf!=faces.end(); itf++ ) {
triangles.push_back( (*itf) );
isReversed.push_back( isRev );
// put triange's nodes to nodeToNetgenID map
SMDS_ElemIteratorPtr triangleNodesIt = (*itf)->nodesIterator();
while ( triangleNodesIt->more() ) {
const SMDS_MeshNode * node =
static_cast<const SMDS_MeshNode *>(triangleNodesIt->next());
if(myTool->IsMedium(node))
continue;
nodeToNetgenID.insert( make_pair( node, invalid_ID ));
}
}
}
else {
// keep a triangle
triangles.push_back( elem );
isReversed.push_back( isRev );
// put elem nodes to nodeToNetgenID map
SMDS_ElemIteratorPtr triangleNodesIt = elem->nodesIterator();
while ( triangleNodesIt->more() ) {
const SMDS_MeshNode * node =
static_cast<const SMDS_MeshNode *>(triangleNodesIt->next());
if(myTool->IsMedium(node))
continue;
nodeToNetgenID.insert( make_pair( node, invalid_ID ));
}
}
#ifdef _DEBUG_
// check if a trainge is degenerated
@ -413,30 +440,51 @@ bool NETGENPlugin_NETGEN_3D::Compute(SMESH_Mesh& aMesh,
else if (MeshType == SMESH_MesherHelper::QUADRATIC)
_quadraticMesh = true;
SMDS_FaceIteratorPtr iteratorFace = MeshDS->facesIterator();
StdMeshers_QuadToTriaAdaptor Adaptor;
Adaptor.Compute(aMesh);
while(iteratorFace->more())
{
SMDS_FaceIteratorPtr iteratorFace = MeshDS->facesIterator();
while(iteratorFace->more()) {
// check element
const SMDS_MeshElement* elem = iteratorFace->next();
if ( !elem )
return error( COMPERR_BAD_INPUT_MESH, "Null element encounters");
bool isTraingle = ( elem->NbNodes()==3 || (_quadraticMesh && elem->NbNodes()==6 ));
if ( !isTraingle )
return error( COMPERR_BAD_INPUT_MESH,
SMESH_Comment("Not triangle element ")<<elem->GetID());
// keep a triangle
triangles.push_back( elem );
// put elem nodes to nodeToNetgenID map
SMDS_ElemIteratorPtr triangleNodesIt = elem->nodesIterator();
while ( triangleNodesIt->more() ) {
const SMDS_MeshNode * node =
static_cast<const SMDS_MeshNode *>(triangleNodesIt->next());
if(aHelper->IsMedium(node))
continue;
nodeToNetgenID.insert( make_pair( node, invalid_ID ));
if ( !isTraingle ) {
//return error( COMPERR_BAD_INPUT_MESH,
// SMESH_Comment("Not triangle element ")<<elem->GetID());
// using adaptor
std::list<const SMDS_FaceOfNodes*> faces = Adaptor.GetTriangles(elem);
if(faces.size()==0) {
return error( COMPERR_BAD_INPUT_MESH,
SMESH_Comment("Not triangles in adaptor for element ")<<elem->GetID());
}
std::list<const SMDS_FaceOfNodes*>::iterator itf = faces.begin();
for(; itf!=faces.end(); itf++ ) {
triangles.push_back( (*itf) );
// put triange's nodes to nodeToNetgenID map
SMDS_ElemIteratorPtr triangleNodesIt = (*itf)->nodesIterator();
while ( triangleNodesIt->more() ) {
const SMDS_MeshNode * node =
static_cast<const SMDS_MeshNode *>(triangleNodesIt->next());
if(aHelper->IsMedium(node))
continue;
nodeToNetgenID.insert( make_pair( node, invalid_ID ));
}
}
}
else {
// keep a triangle
triangles.push_back( elem );
// put elem nodes to nodeToNetgenID map
SMDS_ElemIteratorPtr triangleNodesIt = elem->nodesIterator();
while ( triangleNodesIt->more() ) {
const SMDS_MeshNode * node =
static_cast<const SMDS_MeshNode *>(triangleNodesIt->next());
if(aHelper->IsMedium(node))
continue;
nodeToNetgenID.insert( make_pair( node, invalid_ID ));
}
}
}

View File

@ -1,20 +0,0 @@
# This is a Qt message file in .po format. Each msgid starts with
# a scope. This scope should *NOT* be translated - eg. "Foo::Bar"
# would be translated to "Pub", not "Foo::Pub".
msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"POT-Creation-Date: 2002-05-28 10:57:43 AM CEST\n"
"PO-Revision-Date: YYYY-MM-DD\n"
"Last-Translator: FULLNAME <EMAIL@ADDRESS>\n"
"Content-Type: text/plain; charset=iso-8859-1\n"
#-----------------------------------------------------------
# ObjectBrowser
#-----------------------------------------------------------
#mesh_tree_algo_netgen
msgid "ICON_SMESH_TREE_ALGO_NETGEN_3D"
msgstr "mesh_tree_algo_tetra.png"
#msgstr "mesh_tree_algo_netgen.png"