-// Copyright (C) 2007-2013 CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE
//
// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
-// version 2.1 of the License.
+// version 2.1 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
*
*/
//=============================================================================
-NETGENPlugin_Hypothesis::NETGENPlugin_Hypothesis (int hypId, int studyId,
+NETGENPlugin_Hypothesis::NETGENPlugin_Hypothesis (int hypId,
SMESH_Gen * gen)
- : SMESH_Hypothesis(hypId, studyId, gen),
- _maxSize (GetDefaultMaxSize()),
- _minSize (0),
- _growthRate (GetDefaultGrowthRate()),
- _nbSegPerEdge (GetDefaultNbSegPerEdge()),
- _nbSegPerRadius(GetDefaultNbSegPerRadius()),
- _fineness (GetDefaultFineness()),
- _secondOrder (GetDefaultSecondOrder()),
- _optimize (GetDefaultOptimize()),
- _localSize (GetDefaultLocalSize()),
- _quadAllowed (GetDefaultQuadAllowed())
+ : SMESH_Hypothesis(hypId, gen),
+ _maxSize (GetDefaultMaxSize()),
+ _minSize (0),
+ _growthRate (GetDefaultGrowthRate()),
+ _nbSegPerEdge (GetDefaultNbSegPerEdge()),
+ _nbSegPerRadius (GetDefaultNbSegPerRadius()),
+ _fineness (GetDefaultFineness()),
+ _secondOrder (GetDefaultSecondOrder()),
+ _optimize (GetDefaultOptimize()),
+ _localSize (GetDefaultLocalSize()),
+ _quadAllowed (GetDefaultQuadAllowed()),
+ _surfaceCurvature(GetDefaultSurfaceCurvature()),
+ _fuseEdges (GetDefaultFuseEdges())
{
_name = "NETGEN_Parameters";
_param_algo_dim = 3;
void NETGENPlugin_Hypothesis::SetLocalSizeOnEntry(const std::string& entry, double localSize)
{
if(_localSize[entry] != localSize)
- {
- _localSize[entry] = localSize;
- NotifySubMeshesHypothesisModification();
- }
+ {
+ _localSize[entry] = localSize;
+ NotifySubMeshesHypothesisModification();
+ }
}
//=============================================================================
/*!
- *
+ *
*/
//=============================================================================
double NETGENPlugin_Hypothesis::GetLocalSizeOnEntry(const std::string& entry)
NotifySubMeshesHypothesisModification();
}
+//=============================================================================
+/*!
+ *
+ */
+//=============================================================================
+void NETGENPlugin_Hypothesis::SetMeshSizeFile(const std::string& fileName)
+{
+ if ( fileName != _meshSizeFile )
+ {
+ _meshSizeFile = fileName;
+ NotifySubMeshesHypothesisModification();
+ }
+}
+
//=============================================================================
/*!
*
*
*/
//=============================================================================
+void NETGENPlugin_Hypothesis::SetSurfaceCurvature(bool theVal)
+{
+ if (theVal != _surfaceCurvature)
+ {
+ _surfaceCurvature = theVal;
+ NotifySubMeshesHypothesisModification();
+ }
+}
+
+//=============================================================================
+/*!
+ *
+ */
+//=============================================================================
+bool NETGENPlugin_Hypothesis::GetDefaultSurfaceCurvature()
+{
+ return true;
+}
+
+//=============================================================================
+/*!
+ *
+ */
+//=============================================================================
+void NETGENPlugin_Hypothesis::SetFuseEdges(bool theVal)
+{
+ if (theVal != _fuseEdges)
+ {
+ _fuseEdges = theVal;
+ NotifySubMeshesHypothesisModification();
+ }
+}
+
+//=============================================================================
+/*!
+ *
+ */
+//=============================================================================
+bool NETGENPlugin_Hypothesis::GetDefaultFuseEdges()
+{
+ return true; // false; -- for SALOME_TESTS/Grids/smesh/3D_mesh_NETGEN_05/F6
+}
+
+//=============================================================================
+/*!
+ *
+ */
+//=============================================================================
ostream & NETGENPlugin_Hypothesis::SaveTo(ostream & save)
{
save << _maxSize << " " << _fineness;
}
save << " " << _minSize;
save << " " << _quadAllowed;
+ save << " " << _surfaceCurvature;
+ save << " " << _fuseEdges;
+
+ save << " " << _meshSizeFile.size() << " " << _meshSizeFile;
return save;
}
int is;
double val;
- isOK = (load >> val);
+ isOK = static_cast<bool>(load >> val);
if (isOK)
_maxSize = val;
else
load.clear(ios::badbit | load.rdstate());
- isOK = (load >> is);
+ isOK = static_cast<bool>(load >> is);
if (isOK)
SetFineness((Fineness) is);
else
if (_fineness == UserDefined)
{
- isOK = (load >> val);
+ isOK = static_cast<bool>(load >> val);
if (isOK)
_growthRate = val;
else
load.clear(ios::badbit | load.rdstate());
- isOK = (load >> val);
+ isOK = static_cast<bool>(load >> val);
if (isOK)
_nbSegPerEdge = val;
else
load.clear(ios::badbit | load.rdstate());
- isOK = (load >> val);
+ isOK = static_cast<bool>(load >> val);
if (isOK)
_nbSegPerRadius = val;
else
load.clear(ios::badbit | load.rdstate());
}
- isOK = (load >> is);
+ isOK = static_cast<bool>(load >> is);
if (isOK)
_secondOrder = (bool) is;
else
load.clear(ios::badbit | load.rdstate());
- isOK = (load >> is);
+ isOK = static_cast<bool>(load >> is);
if (isOK)
_optimize = (bool) is;
else
std::string option_or_sm;
bool hasLocalSize = false;
- isOK = (load >> option_or_sm);
+ isOK = static_cast<bool>(load >> option_or_sm);
if (isOK)
if (option_or_sm == "__LOCALSIZE_BEGIN__")
hasLocalSize = true;
std::string smEntry, smValue;
while (isOK && hasLocalSize) {
- isOK = (load >> smEntry);
+ isOK = static_cast<bool>(load >> smEntry);
if (isOK) {
if (smEntry == "__LOCALSIZE_END__")
break;
- isOK = (load >> smValue);
+ isOK = static_cast<bool>(load >> smValue);
}
if (isOK) {
std::istringstream tmp(smValue);
if ( !hasLocalSize && !option_or_sm.empty() )
_minSize = atof( option_or_sm.c_str() );
+ else
+ load >> _minSize;
- isOK = ( load >> _quadAllowed );
- if ( !isOK )
+ isOK = static_cast<bool>( load >> is );
+ if ( isOK )
+ _quadAllowed = (bool) is;
+ else
_quadAllowed = GetDefaultQuadAllowed();
+ isOK = static_cast<bool>( load >> is );
+ if ( isOK )
+ _surfaceCurvature = (bool) is;
+ else
+ _surfaceCurvature = GetDefaultSurfaceCurvature();
+
+ isOK = static_cast<bool>( load >> is );
+ if ( isOK )
+ _fuseEdges = (bool) is;
+ else
+ _fuseEdges = GetDefaultFuseEdges();
+
+ isOK = static_cast<bool>( load >> is >> std::ws ); // size of meshSizeFile
+ if ( isOK && is > 0 )
+ {
+ _meshSizeFile.resize( is );
+ load.get( &_meshSizeFile[0], is+1 );
+ }
+
return load;
}