X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FNETGENPlugin%2FNETGENPlugin_Hypothesis.hxx;h=e12b9ed30712efb14da4fa165610e9a57ca0a470;hb=92cbce71d361328b23d943ad87d52db9f5282c72;hp=8f1800ee0d5cda3dc78d150ca709f27ad39504a7;hpb=d0f1a65f28a4a4cfc438a14de687f988d695e06c;p=plugins%2Fnetgenplugin.git diff --git a/src/NETGENPlugin/NETGENPlugin_Hypothesis.hxx b/src/NETGENPlugin/NETGENPlugin_Hypothesis.hxx index 8f1800e..e12b9ed 100644 --- a/src/NETGENPlugin/NETGENPlugin_Hypothesis.hxx +++ b/src/NETGENPlugin/NETGENPlugin_Hypothesis.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2022 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 @@ -35,29 +35,28 @@ #include "Utils_SALOME_Exception.hxx" #include +#include // Parameters for work of NETGEN // -using namespace std; - class NETGENPLUGIN_EXPORT NETGENPlugin_Hypothesis: public SMESH_Hypothesis { public: NETGENPlugin_Hypothesis(int hypId, SMESH_Gen * gen); - void SetMaxSize(double theSize); + void SetMaxSize(double theSize); double GetMaxSize() const { return _maxSize; } - void SetMinSize(double theSize); + void SetMinSize(double theSize); double GetMinSize() const { return _minSize; } - void SetSecondOrder(bool theVal); - bool GetSecondOrder() const { return _secondOrder; } + void SetSecondOrder(bool theVal); + bool GetSecondOrder() const { return _secondOrder; } - void SetOptimize(bool theVal); - bool GetOptimize() const { return _optimize; } + void SetOptimize(bool theVal); + bool GetOptimize() const { return _optimize; } enum Fineness { @@ -69,60 +68,91 @@ public: UserDefined }; - void SetFineness(Fineness theFineness); + void SetFineness(Fineness theFineness); Fineness GetFineness() const { return _fineness; } - // the following parameters are controlled by Fineness + // the following 3 parameters are controlled by Fineness - void SetGrowthRate(double theRate); + void SetGrowthRate(double theRate); double GetGrowthRate() const { return _growthRate; } - void SetNbSegPerEdge(double theVal); + void SetNbSegPerEdge(double theVal); double GetNbSegPerEdge() const { return _nbSegPerEdge; } - void SetNbSegPerRadius(double theVal); + void SetNbSegPerRadius(double theVal); double GetNbSegPerRadius() const { return _nbSegPerRadius; } - void SetChordalErrorEnabled(bool value); + void SetChordalErrorEnabled(bool value); double GetChordalErrorEnabled() const { return _chordalErrorEnabled; } - void SetChordalError(double value); + void SetChordalError(double value); double GetChordalError() const { return _chordalError; } typedef std::map TLocalSize; - static TLocalSize GetDefaultLocalSize() { return TLocalSize(); } - void SetLocalSizeOnEntry(const std::string& entry, double localSize); + void SetLocalSizeOnEntry(const std::string& entry, double localSize); double GetLocalSizeOnEntry(const std::string& entry); const TLocalSize& GetLocalSizesAndEntries() const { return _localSize; } - void UnsetLocalSizeOnEntry(const std::string& entry); + void UnsetLocalSizeOnEntry(const std::string& entry); - void SetMeshSizeFile(const std::string& fileName); + void SetMeshSizeFile(const std::string& fileName); const std::string& GetMeshSizeFile() const { return _meshSizeFile; } - void SetQuadAllowed(bool theVal); - bool GetQuadAllowed() const { return _quadAllowed; } + void SetQuadAllowed(bool theVal); + bool GetQuadAllowed() const { return _quadAllowed; } + + void SetSurfaceCurvature(bool theVal); + bool GetSurfaceCurvature() const { return _surfaceCurvature; } + + void SetFuseEdges(bool theVal); + bool GetFuseEdges() const { return _fuseEdges; } + + void SetNbSurfOptSteps( int nb ); + int GetNbSurfOptSteps() const { return _nbSurfOptSteps; } + + void SetNbVolOptSteps( int nb ); + int GetNbVolOptSteps() const { return _nbVolOptSteps; } + + void SetElemSizeWeight( double size ); + double GetElemSizeWeight() const { return _elemSizeWeight; } + + void SetWorstElemMeasure( int val ); + int GetWorstElemMeasure() const { return _worstElemMeasure; } - void SetSurfaceCurvature(bool theVal); - bool GetSurfaceCurvature() const { return _surfaceCurvature; } + void SetUseDelauney( bool toUse); + bool GetUseDelauney() const { return _useDelauney; } - void SetFuseEdges(bool theVal); - bool GetFuseEdges() const { return _fuseEdges; } + void SetCheckOverlapping( bool toCheck ); + bool GetCheckOverlapping() const { return _checkOverlapping; } + + void SetCheckChartBoundary( bool toCheck ); + bool GetCheckChartBoundary() const { return _checkChartBoundary; } + + void SetNbThreads( int val ); + int GetNbThreads() const { return _nbThreads; } // the default values (taken from NETGEN 4.5 sources) - static double GetDefaultMaxSize(); - static Fineness GetDefaultFineness(); - static double GetDefaultGrowthRate(); - static double GetDefaultNbSegPerEdge(); - static double GetDefaultNbSegPerRadius(); - static double GetDefaultChordalError(); - static bool GetDefaultSecondOrder(); - static bool GetDefaultOptimize(); - static bool GetDefaultQuadAllowed(); - static bool GetDefaultSurfaceCurvature(); - static bool GetDefaultFuseEdges(); + static Fineness GetDefaultFineness() { return Moderate; } + static bool GetDefaultSecondOrder() { return false; } + static bool GetDefaultQuadAllowed() { return false; } + static double GetDefaultMaxSize() { return 1000; } + static double GetDefaultGrowthRate() { return 0.3; } + static double GetDefaultNbSegPerRadius() { return 2; } + static double GetDefaultNbSegPerEdge() { return 1; } + static double GetDefaultChordalError() { return -1; } // disabled by default + static bool GetDefaultOptimize() { return true; } + static int GetDefaultNbSurfOptSteps() { return 3; } + static int GetDefaultNbVolOptSteps() { return 3; } + static double GetDefaultElemSizeWeight() { return 0.2; } + static int GetDefaultWorstElemMeasure() { return 2; } + static bool GetDefaultSurfaceCurvature() { return true; } + static bool GetDefaultUseDelauney() { return true; } + static bool GetDefaultCheckOverlapping() { return true; } + static bool GetDefaultCheckChartBoundary(){ return true; } + static bool GetDefaultFuseEdges() { return true; } + static int GetDefaultNbThreads() { return std::thread::hardware_concurrency(); } // Persistence - virtual std::ostream & SaveTo(std::ostream & save); + virtual std::ostream & SaveTo (std::ostream & save); virtual std::istream & LoadFrom(std::istream & load); /*! @@ -140,20 +170,41 @@ public: virtual bool SetParametersByDefaults(const TDefaults& dflts, const SMESH_Mesh* theMesh=0); private: + + // General + Fineness _fineness; + bool _secondOrder; + bool _quadAllowed; + + // Mesh size double _maxSize, _minSize; double _growthRate; - double _nbSegPerEdge; + std::string _meshSizeFile; double _nbSegPerRadius; - Fineness _fineness; + double _nbSegPerEdge; + // (SALOME additions) + TLocalSize _localSize; bool _chordalErrorEnabled; double _chordalError; - bool _secondOrder; + + // Optimizer bool _optimize; - TLocalSize _localSize; - std::string _meshSizeFile; - bool _quadAllowed; + int _nbSurfOptSteps; + int _nbVolOptSteps; + double _elemSizeWeight; + int _worstElemMeasure; + + // Insider bool _surfaceCurvature; + bool _useDelauney; + bool _checkOverlapping; + bool _checkChartBoundary; + //bool _blockFilling; -- not used by netgen + // (SALOME additions) bool _fuseEdges; + + // Parallelism parameters + int _nbThreads; }; #endif