Salome HOME
bos #32737 Allow to choose between MG-Tetra and MG-Tetra_HPC multithread
[plugins/ghs3dplugin.git] / src / GUI / GHS3DPluginGUI_HypothesisCreator.h
index 1c093caf12bf82bfd1afdf3ad7e8b348d989345a..7a69145ba1817a21dfb1f211ea2252130146ecf7 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2004-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2004-2022  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -49,6 +49,7 @@
 #include CORBA_SERVER_HEADER(SMESH_Mesh)
 
 class QWidget;
+class QButtonGroup;
 class QComboBox;
 class QCheckBox;
 class QLineEdit;
@@ -56,12 +57,14 @@ class QSpinBox;
 class QTableWidget;
 class QTableWidgetItem;
 class QHeaderView;
+class QGroupBox;
 
-class SMESHGUI_SpinBox;
-class StdMeshersGUI_ObjectReferenceParamWdg;
+class GHS3DPluginGUI_AdvWidget;
 class LightApp_SelectionMgr;
+class SMESHGUI_SpinBox;
 class SUIT_SelectionFilter;
-class GHS3DPluginGUI_AdvWidget;
+class SalomeApp_IntSpinBox;
+class StdMeshersGUI_ObjectReferenceParamWdg;
 
 class QTEnfVertex
 {
@@ -141,16 +144,25 @@ typedef std::set< TEnfMesh*, CompareEnfMeshes > TEnfMeshList;
 
 typedef struct
 {
-  bool    myToMeshHoles,myToMakeGroupsOfDomains,myKeepFiles,myToCreateNewNodes,myBoundaryRecovery,myFEMCorrection,myRemoveInitialCentralPoint,
-          myLogInStandardOutput, myRemoveLogOnSuccess;
-  long    myMaximumMemory;
-  long    myInitialMemory;
   int     myOptimizationLevel;
-  QString myName,myWorkingDir,myTextOption;
+  double  myMinSize, myMaxSize, myMinSizeDefault, myMaxSizeDefault;
   double  myGradation;
+  int     myNbProximityLayers;
+  bool    myUseMinSize, myUseMaxSize, myUseGradation, myUseProximity;
+  bool    myToMeshHoles, myToMakeGroupsOfDomains;
+  bool    myToCreateNewNodes,myBoundaryRecovery,myFEMCorrection,myRemoveInitialCentralPoint,
+          myKeepFiles,myLogInStandardOutput, myRemoveLogOnSuccess;
+  float   myInitialMemory, myMaximumMemory;
+  QString myName,myWorkingDir;
   short   myVerboseLevel;
   TEnfVertexList myEnforcedVertices;
   TEnfMeshList myEnforcedMeshes;
+  short   myAlgorithm, myNumOfThreads, myPthreadMode, myParallelMode;
+  bool    myUseNumOfThreads;
+
+  int myOptimization, mySplitOverConstrained, myPThreadsMode, myNumberOfThreads;
+  bool mySmoothOffSlivers;
+
 } GHS3DHypothesisData;
 
 /*!
@@ -177,6 +189,7 @@ protected:
   virtual QString  type() const;
 
 protected slots:
+  void                onAddOption();
   void                onToMeshHoles(bool);
   void                onDirBtnClicked();
   void                updateWidgets();
@@ -198,6 +211,8 @@ protected slots:
   void                onRemoveEnforcedMesh();
   //void                synchronizeEnforcedMesh();
   void                checkEnfMeshIsDefined();
+  void                onRadioButtonSelect();
+  void                onNumOfThreadsCheck();
   
 signals:
   void                vertexDefined(bool);
@@ -209,46 +224,67 @@ private:
   bool                storeParamsToHypo( const GHS3DHypothesisData& ) const;
   GeomSelectionTools* getGeomSelectionTool();
   GEOM::GEOM_Gen_var  getGeomEngine();
+  bool                isOptimization() const;
 
 private:
-  QWidget*            myStdGroup;
-  QLineEdit*          myName;
-  QCheckBox*          myToMeshHolesCheck;
-  QCheckBox*          myToMakeGroupsOfDomains;
-  QComboBox*          myOptimizationLevelCombo;
+  QWidget*              myStdGroup;
+  QLineEdit*            myName;
+  // main
+  QComboBox*            myOptimizationLevelCombo;
+  QCheckBox*            myMinSizeCheck;
+  QCheckBox*            myMaxSizeCheck;
+  SMESHGUI_SpinBox*     myMinSizeSpin;
+  SMESHGUI_SpinBox*     myMaxSizeSpin;
+  QCheckBox*            myNumOfThreadsCheck;
+  SalomeApp_IntSpinBox* myNumOfThreadsSpin;
+  mutable double        myMinSizeDefault, myMaxSizeDefault;
+  // proximity
+  QCheckBox*            myGradationCheck;
+  SMESHGUI_SpinBox*     myGradationSpin;
+  QGroupBox*            myUseProximityGroup;
+  SalomeApp_IntSpinBox* myNbProximityLayers;
+  // other
+  QCheckBox*            myToMakeGroupsOfDomains;
+  QCheckBox*            myToMeshHolesCheck;
+
+  QComboBox*            myOptimizationCombo;
+  QComboBox*            mySplitOverConstrainedCombo;
+  QComboBox*            myPThreadsModeCombo;
+  SalomeApp_IntSpinBox* myNumberOfThreadsSpin;
+  QCheckBox*            mySmoothOffSliversCheck;
+  QCheckBox*            myCreateNewNodesCheck;
+  QComboBox*            myPthreadMode;
+  QComboBox*            myParallelMode;
+  QButtonGroup*         myRadioBottomGroup;
 
   QWidget*                  myAdvGroup;
   GHS3DPluginGUI_AdvWidget* myAdvWidget;
+  mutable GHS3DPlugin::string_array_var myOptions, myCustomOptions;
+
   
-  QWidget*            myEnfGroup;
-  QPixmap             iconVertex, iconCompound;
+  QWidget*              myEnfGroup;
+  QPixmap               iconVertex, iconCompound;
   StdMeshersGUI_ObjectReferenceParamWdg *myEnfVertexWdg;
   GEOM::GEOM_Object_var myEnfVertex;
-  QTableWidget*       myEnforcedTableWidget;
-  SMESHGUI_SpinBox*   myXCoord;
-  SMESHGUI_SpinBox*   myYCoord;
-  SMESHGUI_SpinBox*   myZCoord;
-  SMESHGUI_SpinBox*   mySizeValue;
-  QLineEdit*          myGroupName;
-//   QGroupBox*          makeGroupsCheck;
-//   QCheckBox*          myGlobalGroupName;  
-  QPushButton*        addVertexButton;
-  QPushButton*        removeVertexButton;
+  QTableWidget*         myEnforcedTableWidget;
+  SMESHGUI_SpinBox*     myXCoord;
+  SMESHGUI_SpinBox*     myYCoord;
+  SMESHGUI_SpinBox*     myZCoord;
+  SMESHGUI_SpinBox*     mySizeValue;
+  QLineEdit*            myGroupName;
+  QPushButton*          addVertexButton;
+  QPushButton*          removeVertexButton;
   
-  QWidget*            myEnfMeshGroup;
+  QWidget*              myEnfMeshGroup;
   StdMeshersGUI_ObjectReferenceParamWdg *myEnfMeshWdg;
-//   SMESH::SMESH_IDSource_var myEnfMesh;
-  QComboBox*          myEnfMeshConstraint;
-  QStringList         myEnfMeshConstraintLabels;
-//   SMESH::mesh_array_var myEnfMeshArray;
-  QTableWidget*       myEnforcedMeshTableWidget;
-  QLineEdit*          myMeshGroupName;
-  QPushButton*        addEnfMeshButton;
-  QPushButton*        removeEnfMeshButton;
+  QComboBox*            myEnfMeshConstraint;
+  QStringList           myEnfMeshConstraintLabels;
+  QTableWidget*         myEnforcedMeshTableWidget;
+  QLineEdit*            myMeshGroupName;
+  QPushButton*          addEnfMeshButton;
+  QPushButton*          removeEnfMeshButton;
   
   GeomSelectionTools*     GeomToolSelected;
-//   SVTK_Selector*          mySelector;
-//   LightApp_SelectionMgr*  mySelectionMgr; /* User shape selection */
 };
 
 class EnforcedVertexTableWidgetDelegate : public QItemDelegate