From dd1c07ac2e861320e08e67be6beacb39f95c60aa Mon Sep 17 00:00:00 2001 From: cconopoima Date: Fri, 24 Mar 2023 15:07:46 -0300 Subject: [PATCH] proposal for plugin merge Update documentation to reflect availability of MGTetra HPC optionalities. Doc improvement. Define new Set... methods in GHS3DPluginBuilder.py Update methods SaveTo and LoadFrom to include new hypothesis options. Solve problems observed with hdf dumped files. Fixing issues pointed. Eliminate reference to MG_TetraHPC_API class since it is not be used. Fix typo when MGTetra HPC (parallel_mode is parallel_strategy). Reuse the same command line for MGTetra and MGTetraHPC changing the called executable depending on the user selection. Define ghs3dSetParametersDemo.py as test folling suggested instructions. Solving more issues. Carefull var init in constructor to avoid compilation warnings. Diasable EnforcedVertice and EnforceMesh widget when MGTetraHPC is selected. Avoid ref to non initialized class member on call to CommandToRun static method. Fixing CmakeLists in examples to properly copy the test from python example file into the SALOME_TEST_INSTALLDIR. Add missing CTestTestfileInstall.cmake file as suggested. Set reproducible_given_max_number_of_thread as default for MGTetraHPC and safe by default for MG-Tetra. --- CMakeLists.txt | 4 +- doc/salome/examples/CMakeLists.txt | 31 +- .../examples/CTestTestfileInstall.cmake | 31 ++ doc/salome/examples/examples.set | 22 ++ doc/salome/examples/ghs3dSetParametersDemo.py | 49 +++ .../images/ghs3d_parameters_advanced.png | Bin 37953 -> 88705 bytes .../images/ghs3d_parameters_basic.png | Bin 34799 -> 74843 bytes .../gui/GHS3DPLUGIN/input/ghs3d_hypo.doc | 60 +-- doc/salome/gui/GHS3DPLUGIN/input/index.doc | 4 +- idl/GHS3DPlugin_Algorithm.idl | 25 ++ src/GHS3DPlugin/GHS3DPluginBuilder.py | 37 ++ src/GHS3DPlugin/GHS3DPlugin_GHS3D.cxx | 5 +- src/GHS3DPlugin/GHS3DPlugin_GHS3D.hxx | 11 +- src/GHS3DPlugin/GHS3DPlugin_Hypothesis.cxx | 362 +++++++++++++----- src/GHS3DPlugin/GHS3DPlugin_Hypothesis.hxx | 60 ++- src/GHS3DPlugin/GHS3DPlugin_Hypothesis_i.cxx | 117 +++++- src/GHS3DPlugin/GHS3DPlugin_Hypothesis_i.hxx | 27 ++ .../GHS3DPlugin_OptimizerHypothesis.cxx | 2 +- src/GUI/GHS3DPluginGUI_AdvWidget.cxx | 20 + src/GUI/GHS3DPluginGUI_Dlg.h | 2 +- src/GUI/GHS3DPluginGUI_HypothesisCreator.cxx | 216 +++++++++-- src/GUI/GHS3DPluginGUI_HypothesisCreator.h | 10 + src/GUI/GHS3DPlugin_msg_en.ts | 48 ++- src/GUI/GHS3DPlugin_msg_fr.ts | 44 +++ 24 files changed, 1013 insertions(+), 174 deletions(-) create mode 100644 doc/salome/examples/CTestTestfileInstall.cmake create mode 100644 doc/salome/examples/examples.set create mode 100644 doc/salome/examples/ghs3dSetParametersDemo.py diff --git a/CMakeLists.txt b/CMakeLists.txt index 4683a30..376548c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -195,12 +195,14 @@ SET(SALOME_INSTALL_DOC "${SALOME_INSTALL_DOC}" CACHE PATH "Install path: SALOME SET(SALOME_GHS3DPLUGIN_INSTALL_RES_DATA "${SALOME_INSTALL_RES}/ghs3dplugin" CACHE PATH "Install path: SALOME GHS3DPLUGIN specific data") +SET(SALOME_GHS3DPLUGIN_INSTALL_TESTS "${SALOME_INSTALL_BINS}/test") + MARK_AS_ADVANCED(SALOME_INSTALL_BINS SALOME_INSTALL_LIBS SALOME_INSTALL_IDLS SALOME_INSTALL_HEADERS) MARK_AS_ADVANCED(SALOME_INSTALL_SCRIPT_SCRIPTS SALOME_INSTALL_SCRIPT_DATA SALOME_INSTALL_SCRIPT_PYTHON) MARK_AS_ADVANCED(SALOME_INSTALL_APPLISKEL_SCRIPTS SALOME_INSTALL_APPLISKEL_PYTHON SALOME_INSTALL_CMAKE_LOCAL SALOME_INSTALL_RES) MARK_AS_ADVANCED(SALOME_INSTALL_PYTHON SALOME_INSTALL_PYTHON_SHARED) MARK_AS_ADVANCED(SALOME_INSTALL_AMCONFIG_LOCAL SALOME_INSTALL_DOC) -MARK_AS_ADVANCED(SALOME_GHS3DPLUGIN_INSTALL_RES_DATA) +MARK_AS_ADVANCED(SALOME_GHS3DPLUGIN_INSTALL_RES_DATA SALOME_GHS3DPLUGIN_INSTALL_TESTS) # Accumulate environment variables for GHS3DPLUGIN module SALOME_ACCUMULATE_ENVIRONMENT(PYTHONPATH NOCHECK ${CMAKE_INSTALL_PREFIX}/${SALOME_INSTALL_BINS} diff --git a/doc/salome/examples/CMakeLists.txt b/doc/salome/examples/CMakeLists.txt index edf8555..ab22a12 100644 --- a/doc/salome/examples/CMakeLists.txt +++ b/doc/salome/examples/CMakeLists.txt @@ -18,4 +18,33 @@ # FILE(GLOB files "${CMAKE_CURRENT_SOURCE_DIR}/*.py") -INSTALL(FILES ${files} DESTINATION ${SALOME_INSTALL_DOC}/examples/GHS3DPLUGIN) +INCLUDE(examples.set) + +SET(COMPONENT_NAME GHS3DPLUGIN) + +SET(TEST_INSTALL_DIRECTORY ${SALOME_GHS3DPLUGIN_INSTALL_TESTS}) + +# make test +SALOME_GENERATE_TESTS_ENVIRONMENT(tests_env) + +FOREACH(tfile ${EXAMPLE_NAMES}) + SET(TEST_NAME ${COMPONENT_NAME}_${tfile}) + ADD_TEST(NAME ${TEST_NAME} + COMMAND ${PYTHON_EXECUTABLE} -B ${CMAKE_CURRENT_SOURCE_DIR}/${tfile}.py) + SET_TESTS_PROPERTIES(${TEST_NAME} PROPERTIES ENVIRONMENT "${tests_env}") + SET_TESTS_PROPERTIES(${TEST_NAME} PROPERTIES LABELS "${COMPONENT_NAME}") + MESSAGE( ${SALOME_INSTALL_DOC}) + INSTALL(FILES ${tfile}.py DESTINATION ${SALOME_INSTALL_DOC}/examples/GHS3DPLUGIN) +ENDFOREACH() + +# salome test +FOREACH(tfile ${EXAMPLE_NAMES}) + INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${tfile}.py + DESTINATION ${TEST_INSTALL_DIRECTORY}) +ENDFOREACH() + +INSTALL(FILES CTestTestfileInstall.cmake + DESTINATION ${TEST_INSTALL_DIRECTORY} + RENAME CTestTestfile.cmake) + +INSTALL(FILES examples.set DESTINATION ${TEST_INSTALL_DIRECTORY}) \ No newline at end of file diff --git a/doc/salome/examples/CTestTestfileInstall.cmake b/doc/salome/examples/CTestTestfileInstall.cmake new file mode 100644 index 0000000..0e36b3f --- /dev/null +++ b/doc/salome/examples/CTestTestfileInstall.cmake @@ -0,0 +1,31 @@ +# Copyright (C) 2016-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 +# License as published by the Free Software Foundation; either +# 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 +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# + +INCLUDE(examples.set) + +SET(COMPONENT_NAME GHS3DPLUGIN) +SET(SALOME_TEST_DRIVER "$ENV{KERNEL_ROOT_DIR}/bin/salome/appliskel/python_test_driver.py") +SET(TIMEOUT 300) + + +FOREACH(tfile ${EXAMPLE_NAMES}) + SET(TEST_NAME ${COMPONENT_NAME}_${tfile}) + ADD_TEST(${TEST_NAME} python ${SALOME_TEST_DRIVER} ${TIMEOUT} ${tfile}.py) + SET_TESTS_PROPERTIES(${TEST_NAME} PROPERTIES LABELS "${COMPONENT_NAME}") +ENDFOREACH() diff --git a/doc/salome/examples/examples.set b/doc/salome/examples/examples.set new file mode 100644 index 0000000..11f137d --- /dev/null +++ b/doc/salome/examples/examples.set @@ -0,0 +1,22 @@ +# Copyright (C) 2016-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 +# License as published by the Free Software Foundation; either +# 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 +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# + +SET(EXAMPLE_NAMES + ghs3dSetParametersDemo +) \ No newline at end of file diff --git a/doc/salome/examples/ghs3dSetParametersDemo.py b/doc/salome/examples/ghs3dSetParametersDemo.py new file mode 100644 index 0000000..b2c6f4c --- /dev/null +++ b/doc/salome/examples/ghs3dSetParametersDemo.py @@ -0,0 +1,49 @@ +import unittest + +import salome +salome.salome_init() + +from salome.geom import geomBuilder +geompy = geomBuilder.New() + +from salome.smesh import smeshBuilder +smesh = smeshBuilder.New() + +# create a box +box = geompy.MakeBoxDXDYDZ(200., 200., 200.) +geompy.addToStudy(box, "box") + +# create a mesh on the box +mgtetraMesh = smesh.Mesh(box,"box: MG-Tetra and NETGEN_1D_2D mesh") + +# create a NETGEN1D2D algorithm for faces and vertices +NETGEN_1D_2D = mgtetraMesh.Triangle(algo=smeshBuilder.NETGEN_1D2D) +NETGEN_2D_Parameters_1 = NETGEN_1D_2D.Parameters() +MG_Tetra = mgtetraMesh.Tetrahedron(algo=smeshBuilder.MG_Tetra) +MG_Tetra_Parameters_1 = MG_Tetra.Parameters() +MG_Tetra_Parameters_1.SetAlgorithm( 1 ) # 1 MGTetra (Default) - 0 MGTetra HPC +MG_Tetra_Parameters_1.SetUseNumOfThreads( 1 ) # 1 true - 0 false +MG_Tetra_Parameters_1.SetNumOfThreads( 6 ) # Number of threads +MG_Tetra_Parameters_1.SetPthreadMode( 1 ) # 0 - none, 1 - aggressive, 2 - safe + +# compute the mesh with MGTetra +status = mgtetraMesh.Compute() +assert( status ) + +mgtetraHPCMesh = smesh.Mesh(box,"box: MG-Tetra HPC and NETGEN_1D_2D mesh") +status = mgtetraHPCMesh.AddHypothesis(NETGEN_2D_Parameters_1) +NETGEN_1D_2D_1 = mgtetraHPCMesh.Triangle(algo=smeshBuilder.NETGEN_1D2D) +MG_Tetra_1 = mgtetraHPCMesh.Tetrahedron(algo=smeshBuilder.MG_Tetra) +MG_Tetra_Parameters_2 = MG_Tetra_1.Parameters() +MG_Tetra_Parameters_2.SetAlgorithm( 0 ) # 1 MGTetra (Default) - 0 MGTetra HPC +MG_Tetra_Parameters_2.SetUseNumOfThreads( 1 ) # 1 true - 0 false +MG_Tetra_Parameters_2.SetNumOfThreads( 6 ) # Number of threads +MG_Tetra_Parameters_2.SetParallelMode( 1 ) # 0 - none, 1 - reproducible_given_max_num_of_threads, 2 - reproducible, 3 - aggressive + +# compute the mesh with MGTetra HPC +status = mgtetraHPCMesh.Compute() +assert( status ) + + +# End of script + diff --git a/doc/salome/gui/GHS3DPLUGIN/images/ghs3d_parameters_advanced.png b/doc/salome/gui/GHS3DPLUGIN/images/ghs3d_parameters_advanced.png index a0bca6ada0636b84e2c24f4269055c1850a58092..e28fdb2fc313fdf53238efbeeddcebe45396051b 100644 GIT binary patch literal 88705 zcmb5VV|1la(zC#zjJmI{Z%%>|%8*|lZ%E_t zuV+kW5p`!JJ5y&j14k1eGg~_w6B;KYM-vlUCv!XJOVDm!AfO*W62bz??wMyBZtf^5 z=zq2WO?Q&eBv8jc5hMjsAv>u$gTjAwssjmxz<*29EeyY-B=3xjWIoQ#&3nxML4u(8 zgTTb?;FahblDMFtRQTcjir7Y07KfA5;YFI)<+%CB+pV0-Qnik?dUI@PDS0r0AS6Nm zY2VDuFVcy0L@cbxhs7!_94^P;qobqDSSd(?uNuZm%E~BWy}d0ir)aB3N9MhD8-gke z|5KV!UcTPt67^NkaD9C(yxE#C#{l)WUAUR^;Uw6 zGv>lIGIto}3ITM7g=*&3Is88D!f3+k zziCIgwNBMgz}{P(4t0eqzt$a$KnUuieK9x9OCU9tZlUbS4k*bLFc_p6qqf^!Z*?*U z1qIDv5hdvNOB)1#R7@&cYd|!)HS-(hha~u*O6MXr<|vb@s`UYp!L9q~{PTyuff0o& zcsP1-9hl9J??#LJA%Hh^5_$0U`Hx%K(MvoMR|SIS_o)rts*Y2XoCg^hQkw\dvPA&s0yZ5ag=iL>BgmWD28-HwdTS2w1^tX^); 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

h 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%0DQFby<4`Ey!H>WHD9^H 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 literal 37953 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

;a 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 V)%Px{_HY1?fiCh+>21`@{{n}kIN1OI literal 34799 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 A6#xJL diff --git a/doc/salome/gui/GHS3DPLUGIN/input/ghs3d_hypo.doc b/doc/salome/gui/GHS3DPLUGIN/input/ghs3d_hypo.doc index af2ab19..d66b2f8 100644 --- a/doc/salome/gui/GHS3DPLUGIN/input/ghs3d_hypo.doc +++ b/doc/salome/gui/GHS3DPLUGIN/input/ghs3d_hypo.doc @@ -17,6 +17,8 @@ To get a license, visit http://www.meshgems.com/meshgems-products.html - Name - allows to define the name of the hypothesis (MG-Tetra Parameters by default). +- Algorithm Selection - allows to select the version of MG-Tetra algorithm to be used. + - Optimization level - allows choosing the required optimization level (higher level of optimization provides better mesh, but can be time-consuming): @@ -27,7 +29,7 @@ but can be time-consuming): - medium (standard) - - standard+ + - standard+ (not available whem MG-Tetra HPC is selected) - strong @@ -35,6 +37,22 @@ but can be time-consuming): - Maximal size - sets the maximum edge size in the generated mesh. +- Maximal number of threads - define the maximal number of threads to be used by the meshing algorithm. + On selection of this box the Pthread mode is activated when MG-Tetra is selected and + Parallel mode is activated if the MG-Tetra HPC algorithm is selected. + +- Pthread mode - define the parallel strategy used by the mesher when MG-Tetra is selected. + - none + - aggresive - is faster than the sequential mode, but the quality of the resulting mesh may altered compared to the sequential mode. + - safe - is slower than the sequential mode, but the quality of the mesh can only improve; + +- Paralle strategy (HPC) - define the parallel strategy used by the mesher when MG-Tetra HPC is selected. + - none + - reproducible_given_max_number_of_threads + - reproducible + - aggressive + + - Volumic gradation - Defines the volumic ratio between 2 consecutive elements. WARNING: Changing the default value of this parameter may dramatically decrease the quality of the resulting mesh. @@ -58,7 +76,7 @@ domain.
\image html ghs3d_parameters_advanced.png -\subsection advanced_meshing_options Advanced meshing options +\subsection advanced_meshing_options Advanced meshing options for MG-Tetra algorithm Advanced page tab expose mostly useful advanced options. Initially, default values of the options are displayed and they are not @@ -130,10 +148,6 @@ option will be erased upon pressing \a Ok. to a given maximum number of errors. At least 1 error is printed and at most 100 errors are printed to prevent infinite loops. -- Maximal number of threads - This allows to set the maximal - number of threads the software can use in parallel for the - multi-threading optimization mode. - - No central point - yes prevents adding an internal point at the centre of gravity of the bounding box that MeshGems-Tetra uses by default in order to speed up and to simplify the meshing @@ -151,17 +165,6 @@ option will be erased upon pressing \a Ok. - Optimise worst elements - Applies an optimization processing to improve the worst quality elements whenever possible. -- Mode of pthreads - This option sets the optimization mode - when using multithread capabilities. By default, this option is not - activated which means that only a sequential optimization is - performed. - - - safe is slower than the sequential mode, but the - quality of the mesh can only improve; - - - aggressive - is faster than the sequential mode, but - the quality of the resulting mesh may altered compared to the sequential mode. - - Rectify jacobian - This option activates correction of some nodes so as to make the Jacobian of element strictly positive when generating a quadratic mesh. @@ -172,6 +175,19 @@ option will be erased upon pressing \a Ok. caracterizes a sliver : any tetrahedron which has at least an angle below this value will be considered as a sliver. +- Target quality - Sets the desired maximum target of worst + quality acceptable for the volume mesh used during optimisation + phase. When defined, an optimization processing is applied to + improve the quality until the given target is reached whenever + possible. By default, this option is not activated which means that + only the standard optimisations are performed (the quality target is + the target quality computed by the program). + +\subsection advanced_meshing_options_HPC Advanced meshing options for MG-Tetra and MG-Tetra HPC algorithms + +This option is common to both algorithms. When MG-Tetra HPC algorithm is selected on the General Parameters view, all advanced options +are disabled except the follow ones: + - Remove overconstrained tetrahedra - This option can be used to only split the tetrahadra which have at least two facets that belong to the surface mesh. It will not split the overconstrained @@ -185,15 +201,7 @@ option will be erased upon pressing \a Ok. - only means only correction is applied to an existing mesh. -- Target quality - Sets the desired maximum target of worst - quality acceptable for the volume mesh used during optimisation - phase. When defined, an optimization processing is applied to - improve the quality until the given target is reached whenever - possible. By default, this option is not activated which means that - only the standard optimisations are performed (the quality target is - the target quality computed by the program). - -\subsection memory_settings Memory settings +\subsection memory_settings Memory settings (disable when MG-Tetra HPC is selected) - Maximum memory size - launches MG-Tetra software with work space limited to the specified amount of RAM, in Mbytes. If this option is diff --git a/doc/salome/gui/GHS3DPLUGIN/input/index.doc b/doc/salome/gui/GHS3DPLUGIN/input/index.doc index 9313082..8fd532e 100644 --- a/doc/salome/gui/GHS3DPLUGIN/input/index.doc +++ b/doc/salome/gui/GHS3DPLUGIN/input/index.doc @@ -3,9 +3,9 @@ \mainpage Introduction to MG-Tetra plug-in MG-Tetra plug-in adds two meshing algorithm to the SALOME Mesh: -\b MG-Tetra (former GHS3D) and MG-Tetra Optimization. + MG-Tetra or MG-Tetra HPC (former GHS3D) and MG-Tetra Optimization. -\b MG-Tetra meshing algorithm is destined for: + MG-Tetra or MG-Tetra HPC meshing algorithm is destined for: - Meshing 3D geometric entities: solids are split into tetrahedral (pyramidal) elements. - Generating 3D meshes from 2D meshes (triangles and quadrangles), working without geometrical objects. diff --git a/idl/GHS3DPlugin_Algorithm.idl b/idl/GHS3DPlugin_Algorithm.idl index ad673c2..3467b6f 100644 --- a/idl/GHS3DPlugin_Algorithm.idl +++ b/idl/GHS3DPlugin_Algorithm.idl @@ -118,6 +118,31 @@ module GHS3DPlugin */ void SetOptimizationLevel(in short level) raises (SALOME::SALOME_Exception); short GetOptimizationLevel(); + /*! + * Algorithm selection: 0-MGTetra HPC, 1-MGTetra + */ + void SetAlgorithm(in short level) raises (SALOME::SALOME_Exception); + short GetAlgorithm(); + /*! + * Set use number of threads + */ + void SetUseNumOfThreads(in boolean setThread) raises (SALOME::SALOME_Exception); + boolean GetUseNumOfThreads(); + /*! + * Set number of threads to use + */ + void SetNumOfThreads(in short numThreads); + short GetNumOfThreads(); + /*! + * PThreadMode defined for MGTetra + */ + void SetPthreadMode(in short pThreadMode) raises (SALOME::SALOME_Exception); + short GetPthreadMode(); + /*! + * ParallelMode defined for MGTetra HPC + */ + void SetParallelMode(in short parallelMode) raises (SALOME::SALOME_Exception); + short GetParallelMode(); /*! * Path to working directory */ diff --git a/src/GHS3DPlugin/GHS3DPluginBuilder.py b/src/GHS3DPlugin/GHS3DPluginBuilder.py index 06f1a87..8ce03ed 100644 --- a/src/GHS3DPlugin/GHS3DPluginBuilder.py +++ b/src/GHS3DPlugin/GHS3DPluginBuilder.py @@ -222,6 +222,43 @@ class GHS3D_Algorithm(Mesh_Algorithm): self.Parameters().SetToRemoveCentralPoint(toRemove) pass + ## To set the algorithm id + # @param algorithm ID 0 MGTetra HPC - 1 MGTetra + def SetAlgorithm(self,algoId): + self.Parameters().SetAlgorithm(algoId) + pass + + ## To use parallel mode + # @param toUseNumOfThreads "use max number of threads" flag value + def SetUseNumOfThreads(self,useThreads): + self.Parameters().SetUseNumOfThreads(useThreads) + pass + + ## To set the number of threads to be used + # @param numberOfThreads define max_num_threads for MGTetra and MGTetra HPC + def SetNumOfThreads(self,numThreads): + self.Parameters().SetNumOfThreads(numThreads) + pass + + ## Set SetPthreadMode. + # @param pthreadMode for parallel algorithm in MGTetra + # - 0 - none + # - 1 - aggresive + # - 2 - safe + def SetPthreadMode(self,pthreadMode): + self.Parameters().SetPthreadMode(pthreadMode) + pass + + ## Set SetParallelMode. + # @param parallelMode for parallel algorithm in MGTetra HPC + # - 0 - none + # - 1 - reproducible_given_max_number_of_threads + # - 2 - reproducible + # - 3 - aggressive + def SetPthreadMode(self,parallelMode): + self.Parameters().SetParallelMode(parallelMode) + pass + ## To set an enforced vertex. # @param x : x coordinate # @param y : y coordinate diff --git a/src/GHS3DPlugin/GHS3DPlugin_GHS3D.cxx b/src/GHS3DPlugin/GHS3DPlugin_GHS3D.cxx index b7b3109..0b48cdf 100644 --- a/src/GHS3DPlugin/GHS3DPlugin_GHS3D.cxx +++ b/src/GHS3DPlugin/GHS3DPlugin_GHS3D.cxx @@ -1580,12 +1580,12 @@ static bool writeGMFFile(MG_Tetra_API* MGInput return true; } + //============================================================================= /*! *Here we are going to use the MG-Tetra mesher with geometry */ //============================================================================= - bool GHS3DPlugin_GHS3D::Compute(SMESH_Mesh& theMesh, const TopoDS_Shape& theShape) { @@ -1871,7 +1871,8 @@ bool GHS3DPlugin_GHS3D::Compute(SMESH_Mesh& theMesh, /*! *Here we are going to use the MG-Tetra mesher w/o geometry */ -//============================================================================= +//================================0============================================= + bool GHS3DPlugin_GHS3D::Compute(SMESH_Mesh& theMesh, SMESH_MesherHelper* theHelper) { diff --git a/src/GHS3DPlugin/GHS3DPlugin_GHS3D.hxx b/src/GHS3DPlugin/GHS3DPlugin_GHS3D.hxx index 620d336..7f5a6b5 100644 --- a/src/GHS3DPlugin/GHS3DPlugin_GHS3D.hxx +++ b/src/GHS3DPlugin/GHS3DPlugin_GHS3D.hxx @@ -57,19 +57,18 @@ public: virtual bool CheckHypothesis(SMESH_Mesh& aMesh, const TopoDS_Shape& aShape, Hypothesis_Status& aStatus); - - virtual bool Compute(SMESH_Mesh& aMesh, - const TopoDS_Shape& aShape); - virtual void CancelCompute(); bool computeCanceled() { return _computeCanceled; } virtual bool Evaluate(SMESH_Mesh& aMesh, const TopoDS_Shape& aShape, MapShapeNbElems& aResMap); + virtual bool Compute(SMESH_Mesh& aMesh, + const TopoDS_Shape& aShape); + virtual bool Compute(SMESH_Mesh& theMesh, - SMESH_MesherHelper* aHelper); - + SMESH_MesherHelper* aHelper); + virtual void SubmeshRestored(SMESH_subMesh* subMesh); virtual void SetEventListener(SMESH_subMesh* subMesh); diff --git a/src/GHS3DPlugin/GHS3DPlugin_Hypothesis.cxx b/src/GHS3DPlugin/GHS3DPlugin_Hypothesis.cxx index 73a58fb..ceffc05 100644 --- a/src/GHS3DPlugin/GHS3DPlugin_Hypothesis.cxx +++ b/src/GHS3DPlugin/GHS3DPlugin_Hypothesis.cxx @@ -70,6 +70,11 @@ GHS3DPlugin_Hypothesis::GHS3DPlugin_Hypothesis(int hypId, SMESH_Gen * gen) myGradation(DefaultGradation()), myUseVolumeProximity(DefaultUseVolumeProximity()), myNbVolumeProximityLayers(DefaultNbVolumeProximityLayers()), + myAlgorithm(DefaultAlgorithm()), + myNumOfThreads(DefaultNumOfThreads()), + myUseNumOfThreads(false), + myPthreadModeMG(DefaultMyPthreadMode()), + myPthreadModeMGHPC(DefaultMyPthreadModeHPC()), myMinSize(0), myMinSizeDefault(0), myMaxSize(0), @@ -88,15 +93,13 @@ GHS3DPlugin_Hypothesis::GHS3DPlugin_Hypothesis(int hypId, SMESH_Gen * gen) "" // mark of end }; const char* intOptionNames[] = { "max_number_of_errors_printed", // 1 - "max_number_of_threads", // 4 "" // mark of end }; const char* doubleOptionNames[] = { "target_quality", // 0 "sliver_angle", // 5 "" // mark of end }; - const char* charOptionNames[] = { "pthreads_mode", // "" - "boundary_regeneration", // standard + const char* charOptionNames[] = { "boundary_regeneration", // standard "split_overconstrained_tetrahedra", // no "" // mark of end }; @@ -132,10 +135,8 @@ GHS3DPlugin_Hypothesis::GHS3DPlugin_Hypothesis(int hypId, SMESH_Gen * gen) _defaultOptionValues["rectify_jacobian" ] = "yes"; _defaultOptionValues["jacobian_rectification_respect_input_surface_mesh"] = "yes"; _defaultOptionValues["max_number_of_errors_printed" ] = "1"; - _defaultOptionValues["max_number_of_threads" ] = "4"; _defaultOptionValues["target_quality" ] = "";//NoValue(); _defaultOptionValues["sliver_angle" ] = "5"; - _defaultOptionValues["pthreads_mode" ] = "";//NoValue(); _defaultOptionValues["boundary_regeneration" ] = "standard"; _defaultOptionValues["split_overconstrained_tetrahedra" ] = "no"; @@ -354,9 +355,108 @@ void GHS3DPlugin_Hypothesis::SetToCreateNewNodes(bool toCreate) } //======================================================================= -//function : GetToCreateNewNodes +//function : SetAlgorithm +//======================================================================= +void GHS3DPlugin_Hypothesis::SetAlgorithm(ImplementedAlgorithms algoId) +{ + if ( myAlgorithm != algoId ) { + myAlgorithm = algoId; + NotifySubMeshesHypothesisModification(); + } +} + +//======================================================================= +//function : short GetAlgorithm() const; + +//======================================================================= +GHS3DPlugin_Hypothesis::ImplementedAlgorithms GHS3DPlugin_Hypothesis::GetAlgorithm() const +{ + return (ImplementedAlgorithms) myAlgorithm; +} + +//======================================================================= +//function : SetPthreadMode +//======================================================================= +void GHS3DPlugin_Hypothesis::SetPthreadMode(PThreadMode pThreadsMode ) +{ + if ( myPthreadModeMG != pThreadsMode ) { + myPthreadModeMG = pThreadsMode; + NotifySubMeshesHypothesisModification(); + } +} + +//======================================================================= +//function : short GetPthreadMode() const; + +//======================================================================= +GHS3DPlugin_Hypothesis::PThreadMode GHS3DPlugin_Hypothesis::GetPthreadMode() const +{ + return (PThreadMode)myPthreadModeMG; +} + +//======================================================================= +//function : SetParallelMode +//======================================================================= +void GHS3DPlugin_Hypothesis::SetParallelMode(ParallelMode parallelMode ) +{ + if ( myPthreadModeMGHPC != parallelMode ) { + myPthreadModeMGHPC = parallelMode; + NotifySubMeshesHypothesisModification(); + } +} + +//======================================================================= +//function : short GetParallelMode() const; + +//======================================================================= +GHS3DPlugin_Hypothesis::ParallelMode GHS3DPlugin_Hypothesis::GetParallelMode() const +{ + return (ParallelMode)myPthreadModeMGHPC; +} + +//======================================================================= +//function : SetUseNumOfThreads +//======================================================================= +void GHS3DPlugin_Hypothesis::SetUseNumOfThreads(bool setUseOfThreads) +{ + if ( myUseNumOfThreads != setUseOfThreads ) { + myUseNumOfThreads = setUseOfThreads; + NotifySubMeshesHypothesisModification(); + } +} + //======================================================================= +//function : bool GetUseNumOfThreads() const; +//======================================================================= +bool GHS3DPlugin_Hypothesis::GetUseNumOfThreads() const +{ + return myUseNumOfThreads; +} + +//======================================================================= +//function : SetNumOfThreads +//======================================================================= +void GHS3DPlugin_Hypothesis::SetNumOfThreads(short numOfThreads) +{ + if ( myNumOfThreads != numOfThreads ) { + myNumOfThreads = numOfThreads; + NotifySubMeshesHypothesisModification(); + } +} + +//======================================================================= +//function : short GetUseNumOfThreads() const; + +//======================================================================= +short GHS3DPlugin_Hypothesis::GetNumOfThreads() const +{ + return myNumOfThreads; +} + +//======================================================================= +//function : GetToCreateNewNodes +//======================================================================= bool GHS3DPlugin_Hypothesis::GetToCreateNewNodes() const { return myToCreateNewNodes; @@ -1252,6 +1352,13 @@ std::ostream & GHS3DPlugin_Hypothesis::SaveTo(std::ostream & save) for ( o2v = _customOption2value.begin(); o2v != _customOption2value.end(); ++o2v ) save << " -" << o2v->first << " -" << o2v->second; + // New options (issue #32737) + save << " " << myAlgorithm; + save << " " << myUseNumOfThreads; + save << " " << myNumOfThreads; + save << " " << myPthreadModeMG; + save << " " << myPthreadModeMGHPC; + return save; } @@ -1608,6 +1715,36 @@ std::istream & GHS3DPlugin_Hypothesis::LoadFrom(std::istream & load) } } + isOK = static_cast(load >> i); + if (isOK) + myAlgorithm = (short) i; + else + load.clear(ios::badbit | load.rdstate()); + + isOK = static_cast(load >> i); + if (isOK) + myUseNumOfThreads = (short) i; + else + load.clear(ios::badbit | load.rdstate()); + + isOK = static_cast(load >> i); + if (isOK) + myNumOfThreads = (short) i; + else + load.clear(ios::badbit | load.rdstate()); + + isOK = static_cast(load >> i); + if (isOK) + myPthreadModeMG = (short) i; + else + load.clear(ios::badbit | load.rdstate()); + + isOK = static_cast(load >> i); + if (isOK) + myPthreadModeMGHPC = (short) i; + else + load.clear(ios::badbit | load.rdstate()); + return load; } @@ -1639,17 +1776,57 @@ bool GHS3DPlugin_Hypothesis::SetParametersByDefaults(const TDefaults& dflts, return true; } +void GHS3DPlugin_Hypothesis::SetAdvancedOptionsInCommandLine( std::string & cmd ) const +{ + std::string option, value; + bool isDefault; + const TOptionValues* options[] = { & this->_option2value, & this->_customOption2value }; + for ( int iOp = 0; iOp < 2; ++iOp ) + { + TOptionValues::const_iterator o2v = options[iOp]->begin(); + for ( ; o2v != options[iOp]->end(); ++o2v ) + { + option = o2v->first; + value = this->GetOptionValue( option, &isDefault ); + + if ( isDefault ) + continue; + + if ( value.empty() )//value == NoValue() ) + { + if ( this->_defaultOptionValues.count( option )) + continue; // non-custom option with no value + //value.clear(); + } + + if ( strncmp( "no", option.c_str(), 2 ) == 0 ) // options w/o values: --no_* + { + if ( !value.empty() && ToBool( value ) == false ) + continue; + value.clear(); + } + + if ( option[0] != '-' ) + cmd += " --"; + else + cmd += " "; + cmd += option + " " + value; + } + } +} + //================================================================================ /*! * \brief Return command to run MG-Tetra mesher excluding file prefix (-f) */ //================================================================================ - std::string GHS3DPlugin_Hypothesis::CommandToRun(const GHS3DPlugin_Hypothesis* hyp, const bool hasShapeToMesh, const bool forExecutable) { - std::string cmd = GetExeName(); + GHS3DPlugin_Hypothesis::ImplementedAlgorithms algoId = hyp ? (ImplementedAlgorithms) hyp->myAlgorithm : MGTetra; + std::string cmd = GetExeName( algoId ); + // check if any option is overridden by hyp->myTextOption bool max_memory = hyp ? !hyp->HasOptionDefined("max_memory") : true; bool auto_memory = hyp ? !hyp->HasOptionDefined("automatic_memory") : true; @@ -1668,20 +1845,20 @@ std::string GHS3DPlugin_Hypothesis::CommandToRun(const GHS3DPlugin_Hypothesis* h useBndRecovery = hyp->myToUseBoundaryRecoveryVersion; // MG-Tetra needs to know amount of memory it may use (MB). - // Default memory is defined at MG-Tetra installation but it may be not enough, - // so allow to use about all available memory - if ( max_memory ) { + // Default memory is defined at MG-Tetra installation but it may be not enough, // so allow to use about all available memory + if ( algoId == MGTetra && max_memory ) { float aMaximumMemory = hyp ? hyp->myMaximumMemory : -1; cmd += " --max_memory "; if ( aMaximumMemory < 0 ) cmd += SMESH_Comment( int( DefaultMaximumMemory() )); else cmd += SMESH_Comment( int( aMaximumMemory )); } - if ( auto_memory && !useBndRecovery ) { + if ( algoId == MGTetra && ( auto_memory && !useBndRecovery ) ) { float aInitialMemory = hyp ? hyp->myInitialMemory : -1; cmd += " --automatic_memory "; if ( aInitialMemory > 0 ) cmd += SMESH_Comment( int( aInitialMemory )); else cmd += "100"; } + // component to mesh if ( comp && !useBndRecovery ) { // We always run MG-Tetra with "to mesh holes'==TRUE (see PAL19680) @@ -1700,11 +1877,13 @@ std::string GHS3DPlugin_Hypothesis::CommandToRun(const GHS3DPlugin_Hypothesis* h cmd += " --optimisation_level none"; // issue 22608 } else if ( optim_level && hyp && !useBndRecovery ) { - if ( hyp->myOptimizationLevel >= 0 && hyp->myOptimizationLevel < 5 ) { - const char* level[] = { "none" , "light" , "standard" , "standard+" , "strong" }; - cmd += " --optimisation_level "; - cmd += level[ hyp->myOptimizationLevel ]; - } + const char* level[] = { "none" , "light" , "standard" , "standard+" , "strong" }; + const short myOpt = hyp->myOptimizationLevel; + + if ( myOpt >= 0 && myOpt < 5 && ( algoId == MGTetra || ( algoId == MGTetraHPC && myOpt != 3 ) ) ) { + cmd += " --optimisation_level "; + cmd += level[ myOpt ]; + } } // to create internal nodes @@ -1715,101 +1894,66 @@ std::string GHS3DPlugin_Hypothesis::CommandToRun(const GHS3DPlugin_Hypothesis* h cmd += " --internalpoints no"; } - // verbose mode - if ( verbose && hyp ) { - cmd += " --verbose " + SMESH_Comment( hyp->myVerboseLevel ); - } - - // boundary recovery version - // if ( useBndRecovery ) { - // cmd += " -C"; - // } - - // to use FEM correction - // if ( fem && hyp && hyp->myToUseFemCorrection) { - // cmd += " -FEM"; - // } - - // to remove initial central point. - if ( rem && hyp && hyp->myToRemoveCentralPoint ) { - if ( forExecutable ) - cmd += " --no_initial_central_point"; - else - cmd += " --centralpoint no"; - } + if ( hyp ) + { + // verbose mode + if ( verbose ) { + cmd += " --verbose " + SMESH_Comment( hyp->myVerboseLevel ); + } - // options as text - // if ( hyp && !hyp->myTextOption.empty() ) { - // cmd += " " + hyp->myTextOption; - // } + // to remove initial central point. + if ( rem && hyp->myToRemoveCentralPoint ) { + if ( forExecutable ) + cmd += " --no_initial_central_point"; + else + cmd += " --centralpoint no"; + } - // min/max size - if ( hyp ) - { if ( hyp->GetMinSize() > 0 ) cmd += " --min_size " + SMESH_Comment( hyp->GetMinSize() ); + if ( hyp->GetMaxSize() > 0 ) cmd += " --max_size " + SMESH_Comment( hyp->GetMaxSize() ); - } - // to define volumic gradation. - if ( gra && hyp ) - { - cmd += " --gradation " + SMESH_Comment( hyp->myGradation ); - } + // to define volumic gradation. + if ( gra ) + cmd += " --gradation " + SMESH_Comment( hyp->myGradation ); + + if ( hyp->GetUseNumOfThreads() ) + { + cmd += " --max_number_of_threads " + SMESH_Comment( hyp->GetNumOfThreads() ); + const char* pthreadMode[] = { "none" , "aggressive" , "safe" }; + const char* parallelMode[] = { "none", "reproducible_given_max_number_of_threads", "reproducible", "aggressive" }; + + if ( algoId == MGTetra && hyp->myPthreadModeMG >= 1 && hyp->myPthreadModeMG < 3 ) { + cmd += " --pthreads_mode "; + cmd += pthreadMode[ hyp->myPthreadModeMG ]; + } + else if ( algoId == MGTetraHPC && hyp->myPthreadModeMGHPC >= 1 && hyp->myPthreadModeMGHPC < 4 ) + { + cmd += " --parallel_strategy "; + cmd += parallelMode[ hyp->myPthreadModeMGHPC ]; + } + } - if ( hyp ) - { // proximity if ( hyp->GetUseVolumeProximity() ) { cmd += " --volume_proximity_layers " + SMESH_Comment( hyp->GetNbVolumeProximityLayers() ); } - - std::string option, value; - bool isDefault; - const TOptionValues* options[] = { & hyp->_option2value, & hyp->_customOption2value }; - for ( int iOp = 0; iOp < 2; ++iOp ) - { - TOptionValues::const_iterator o2v = options[iOp]->begin(); - for ( ; o2v != options[iOp]->end(); ++o2v ) - { - option = o2v->first; - value = hyp->GetOptionValue( option, &isDefault ); - - if ( isDefault ) - continue; - if ( value.empty() )//value == NoValue() ) - { - if ( hyp->_defaultOptionValues.count( option )) - continue; // non-custom option with no value - //value.clear(); - } - if ( strncmp( "no", option.c_str(), 2 ) == 0 ) // options w/o values: --no_* - { - if ( !value.empty() && ToBool( value ) == false ) - continue; - value.clear(); - } - if ( option[0] != '-' ) - cmd += " --"; - else - cmd += " "; - cmd += option + " " + value; - } - } + + hyp->SetAdvancedOptionsInCommandLine( cmd ); } #ifdef WIN32 cmd += " < NUL"; #endif - return cmd; } //================================================================================ /*! - * \brief Return a unique file name + * \brief Return a unique file name for MGTetra */ //================================================================================ @@ -1835,15 +1979,51 @@ std::string GHS3DPlugin_Hypothesis::GetFileName(const GHS3DPlugin_Hypothesis* hy return aGenericName.ToCString(); } +//================================================================================ +/*! + * \brief Return a unique file name when running MGTetra HPC + */ +//================================================================================ + +std::string GHS3DPlugin_Hypothesis::GetFileNameHPC(const GHS3DPlugin_Hypothesis* hyp) +{ + std::string aTmpDir = hyp ? hyp->GetWorkingDirectory() : DefaultWorkingDirectory(); + if ( !SMESH_File( aTmpDir ).exists() ) + aTmpDir = Kernel_Utils::GetTmpDirByPath( aTmpDir ); + + const char lastChar = *aTmpDir.rbegin(); +#ifdef WIN32 + if(lastChar != '\\') aTmpDir+='\\'; +#else + if(lastChar != '/') aTmpDir+='/'; +#endif + + TCollection_AsciiString aGenericName = (char*)aTmpDir.c_str(); + aGenericName += "MGTETRAHPC_"; + aGenericName += getpid(); + aGenericName += "_"; + aGenericName += Abs((Standard_Integer)(long) aGenericName.ToCString()); + + return aGenericName.ToCString(); +} + //================================================================================ /* * Return the name of executable */ //================================================================================ -std::string GHS3DPlugin_Hypothesis::GetExeName() +std::string GHS3DPlugin_Hypothesis::GetExeName( ImplementedAlgorithms algoId ) { - return "mg-tetra.exe"; + switch ( algoId ) + { + case MGTetra: + return "mg-tetra.exe"; + case MGTetraHPC: + return "mg-tetra_hpc.exe"; + default: + throw( "Undefined algorithm id: "); + } } //================================================================================ diff --git a/src/GHS3DPlugin/GHS3DPlugin_Hypothesis.hxx b/src/GHS3DPlugin/GHS3DPlugin_Hypothesis.hxx index 28279b2..82b1de2 100644 --- a/src/GHS3DPlugin/GHS3DPlugin_Hypothesis.hxx +++ b/src/GHS3DPlugin/GHS3DPlugin_Hypothesis.hxx @@ -183,6 +183,36 @@ public: */ void SetVerboseLevel(short level); short GetVerboseLevel() const; + /*! + * Implemented algorithms to be executed [0,1] + * 0 - MGTetra-HPC + * 1 - MGTetra + */ + enum ImplementedAlgorithms { MGTetraHPC = 0, MGTetra }; + void SetAlgorithm(ImplementedAlgorithms algoId); + ImplementedAlgorithms GetAlgorithm() const; + /*! + * Set Get for flag to use pthread parallel version of the algorithm + */ + void SetUseNumOfThreads(bool setUseOfThreads); + bool GetUseNumOfThreads() const; + /*! + * Set Get num of threads to be used by MGTetra algorithms + */ + void SetNumOfThreads(short numOfThreads); + short GetNumOfThreads() const; + /*! + * Set Get pthread mode used for MGTetra + */ + enum PThreadMode { PThreadNone = 0, PThreadAggressive, Safe }; + void SetPthreadMode(PThreadMode pthreadMode ); + PThreadMode GetPthreadMode() const; + /*! + * Set Get paralle mode used for MGTetra HPC + */ + enum ParallelMode { ParallelNone = 0, ReproducibleGivenMaxNumThreads, Reproducible, ParallelAggressive }; + void SetParallelMode(ParallelMode parallelMode ); + ParallelMode GetParallelMode() const; /*! * To create new nodes */ @@ -211,7 +241,7 @@ public: * To set hiden/undocumented/advanced options */ void SetAdvancedOption(const std::string& option); - std::string GetAdvancedOption() const; + std::string GetAdvancedOption() const; /*! * To define the volumic gradation */ @@ -240,16 +270,20 @@ public: void ClearOption(const std::string& optionName); TOptionValues GetOptionValues() const; const TOptionValues& GetCustomOptionValues() const { return _customOption2value; } - //static inline const char* NoValue() { return "_"; } + + // bool isMGTetraHPCOptions( std::string & option ) const; + /*! + * \brief To set the advanced options in the execution command line + */ + void SetAdvancedOptionsInCommandLine( std::string & cmd ) const; + //static inline const char* NoValue() { return "_"; } // struct TEnforcedEdge { // long ID; // long node1; // long node2; // std::string groupName; // }; - - /*! * \brief Return command to run MG-Tetra mesher excluding file prefix (-f) */ @@ -260,10 +294,14 @@ public: * \brief Return a unique file name */ static std::string GetFileName(const GHS3DPlugin_Hypothesis* hyp); + /*! + * \brief Return a unique file name for MGTetraHPC will have a GHS3D prefix + */ + static std::string GetFileNameHPC(const GHS3DPlugin_Hypothesis* hyp); /*! * \brief Return the name of executable */ - static std::string GetExeName(); + static std::string GetExeName( ImplementedAlgorithms algoId ); /*! * To set an enforced vertex @@ -331,6 +369,10 @@ public: static inline double DefaultGradation() { return 1.05; } static bool DefaultUseVolumeProximity() { return false; } static int DefaultNbVolumeProximityLayers() { return 2; } + static short DefaultAlgorithm() { return MGTetra; } + static short DefaultNumOfThreads() { return 4; } + static short DefaultMyPthreadMode() { return 2; } //reproducible_given_max_of_threads + static short DefaultMyPthreadModeHPC() { return 1; } // safe void SetMinMaxSizeDefault( double theMinSize, double theMaxSize ) { myMinSizeDefault = theMinSize; myMaxSizeDefault = theMaxSize; } @@ -374,13 +416,19 @@ protected: double myGradation; bool myUseVolumeProximity; int myNbVolumeProximityLayers; + short myAlgorithm; //member used to pivot between MG-Tetra and MG-Tetra + short myNumOfThreads; + bool myUseNumOfThreads; + short myPthreadModeMG; + short myPthreadModeMGHPC; double myMinSize, myMinSizeDefault; double myMaxSize, myMaxSizeDefault; //std::string myTextOption; + TOptionValues _option2value, _customOption2value; // user defined values TOptionValues _defaultOptionValues; // default values - TOptionNames _doubleOptions, _charOptions, _boolOptions; // to find a type of option + TOptionNames _doubleOptions, _charOptions, _boolOptions; // to find a type of option TGHS3DEnforcedVertexList _enfVertexList; TGHS3DEnforcedVertexCoordsValues _enfVertexCoordsSizeList; diff --git a/src/GHS3DPlugin/GHS3DPlugin_Hypothesis_i.cxx b/src/GHS3DPlugin/GHS3DPlugin_Hypothesis_i.cxx index 1713aa4..f9bf94b 100644 --- a/src/GHS3DPlugin/GHS3DPlugin_Hypothesis_i.cxx +++ b/src/GHS3DPlugin/GHS3DPlugin_Hypothesis_i.cxx @@ -241,7 +241,7 @@ void GHS3DPlugin_Hypothesis_i::SetOptimizationLevel(CORBA::Short level) (::GHS3DPlugin_Hypothesis::OptimizationLevel) level; if ( l < ::GHS3DPlugin_Hypothesis::None || l > ::GHS3DPlugin_Hypothesis::Strong ) - THROW_SALOME_CORBA_EXCEPTION( "Invalid optimization level",SALOME::BAD_PARAM ); + THROW_SALOME_CORBA_EXCEPTION( "Invalid optimization level", SALOME::BAD_PARAM ); ASSERT(myBaseImpl); this->GetImpl()->SetOptimizationLevel(l); @@ -258,6 +258,121 @@ CORBA::Short GHS3DPlugin_Hypothesis_i::GetOptimizationLevel() return this->GetImpl()->GetOptimizationLevel(); } +//======================================================================= +//function : SetAlgorithm +//======================================================================= +void GHS3DPlugin_Hypothesis_i::SetAlgorithm(CORBA::Short algoId) +{ + ::GHS3DPlugin_Hypothesis::ImplementedAlgorithms algo = + (::GHS3DPlugin_Hypothesis::ImplementedAlgorithms) algoId; + if ( algo != ::GHS3DPlugin_Hypothesis::MGTetra && algo != ::GHS3DPlugin_Hypothesis::MGTetraHPC ) + THROW_SALOME_CORBA_EXCEPTION( "Invalid algorithm type", SALOME::BAD_PARAM ); + + ASSERT(myBaseImpl); + this->GetImpl()->SetAlgorithm(algo); + SMESH::TPythonDump() << _this() << ".SetAlgorithm( " << algoId << " )"; +} + +//======================================================================= +//function : GetAlgorithm +//======================================================================= +CORBA::Short GHS3DPlugin_Hypothesis_i::GetAlgorithm() +{ + ASSERT(myBaseImpl); + return this->GetImpl()->GetAlgorithm(); +} + +//======================================================================= +//function : SetUseNumOfThreads +//======================================================================= +void GHS3DPlugin_Hypothesis_i::SetUseNumOfThreads(CORBA::Boolean setThread) +{ + ASSERT(myBaseImpl); + this->GetImpl()->SetUseNumOfThreads(setThread); + SMESH::TPythonDump() << _this() << ".SetUseNumOfThreads( " << setThread << " )"; +} + +//======================================================================= +//function : GetUseNumOfThreads +//======================================================================= +CORBA::Boolean GHS3DPlugin_Hypothesis_i::GetUseNumOfThreads() +{ + ASSERT(myBaseImpl); + return this->GetImpl()->GetUseNumOfThreads(); +} + +//======================================================================= +//function : SetNumOfThreads +//======================================================================= +void GHS3DPlugin_Hypothesis_i::SetNumOfThreads(CORBA::Short numOfThreads) +{ + ASSERT(myBaseImpl); + this->GetImpl()->SetNumOfThreads(numOfThreads); + SMESH::TPythonDump() << _this() << ".SetNumOfThreads( " << numOfThreads << " )"; +} + +//======================================================================= +//function : GetNumOfThreads +//======================================================================= +CORBA::Short GHS3DPlugin_Hypothesis_i::GetNumOfThreads() +{ + ASSERT(myBaseImpl); + return this->GetImpl()->GetNumOfThreads(); +} + +//======================================================================= +//function : SetNumOfThreads +//======================================================================= +void GHS3DPlugin_Hypothesis_i::SetPthreadMode(CORBA::Short pThreadMode) +{ + ::GHS3DPlugin_Hypothesis::PThreadMode mode = + (::GHS3DPlugin_Hypothesis::PThreadMode) pThreadMode; + + if ( mode < ::GHS3DPlugin_Hypothesis::PThreadNone || + mode > ::GHS3DPlugin_Hypothesis::Safe ) + THROW_SALOME_CORBA_EXCEPTION( "Invalid pthreadMode type", SALOME::BAD_PARAM ); + + + ASSERT(myBaseImpl); + this->GetImpl()->SetPthreadMode(mode); + SMESH::TPythonDump() << _this() << ".SetPthreadMode( " << pThreadMode << " )"; +} + +//======================================================================= +//function : GetNumOfThreads +//======================================================================= +CORBA::Short GHS3DPlugin_Hypothesis_i::GetPthreadMode() +{ + ASSERT(myBaseImpl); + return this->GetImpl()->GetPthreadMode(); +} + +//======================================================================= +//function : SetNumOfThreads +//======================================================================= +void GHS3DPlugin_Hypothesis_i::SetParallelMode(CORBA::Short parallelMode) +{ + ::GHS3DPlugin_Hypothesis::ParallelMode mode = + (::GHS3DPlugin_Hypothesis::ParallelMode) parallelMode; + + if ( mode < ::GHS3DPlugin_Hypothesis::ParallelNone || + mode > ::GHS3DPlugin_Hypothesis::ParallelAggressive ) + THROW_SALOME_CORBA_EXCEPTION( "Invalid parallelMode type", SALOME::BAD_PARAM ); + + ASSERT(myBaseImpl); + this->GetImpl()->SetParallelMode(mode); + SMESH::TPythonDump() << _this() << ".SetParallelMode( " << parallelMode << " )"; +} + +//======================================================================= +//function : GetNumOfThreads +//======================================================================= +CORBA::Short GHS3DPlugin_Hypothesis_i::GetParallelMode() +{ + ASSERT(myBaseImpl); + return this->GetImpl()->GetParallelMode(); +} + //======================================================================= //function : SetWorkingDirectory //======================================================================= diff --git a/src/GHS3DPlugin/GHS3DPlugin_Hypothesis_i.hxx b/src/GHS3DPlugin/GHS3DPlugin_Hypothesis_i.hxx index 050a8e1..b9df09b 100644 --- a/src/GHS3DPlugin/GHS3DPlugin_Hypothesis_i.hxx +++ b/src/GHS3DPlugin/GHS3DPlugin_Hypothesis_i.hxx @@ -93,6 +93,33 @@ class GHS3DPLUGIN_EXPORT GHS3DPlugin_Hypothesis_i: */ void SetOptimizationLevel(CORBA::Short level); CORBA::Short GetOptimizationLevel(); + /*! + * Algorithm Id: 0-MGTetra HPC, 1-MGTetra + */ + void SetAlgorithm(CORBA::Short algoId); + CORBA::Short GetAlgorithm(); + /*! + * Flag for set get optional use parallelism in MGTetra + */ + void SetUseNumOfThreads(CORBA::Boolean useThreads); + CORBA::Boolean GetUseNumOfThreads(); + /*! + * Get set number of threads to use on the parallel MGTetra algorithm + */ + void SetNumOfThreads(CORBA::Short numThreads); + CORBA::Short GetNumOfThreads(); + /*! + * For MGTetra + * PthreadMode: 0-PThreadNone, 1-PThreadAggressive, 2-Safe + */ + void SetPthreadMode(CORBA::Short pThreadMode); + CORBA::Short GetPthreadMode(); + /*! + * For MGTetra HPC + * SetParallelMode level: 0-ParallelNone, 1-ReproducibleGivenMaxNumThreads, 2-Reproducible, 3-ParallelAggressive + */ + void SetParallelMode(CORBA::Short parallelMode); + CORBA::Short GetParallelMode(); /*! * Path to working directory */ diff --git a/src/GHS3DPlugin/GHS3DPlugin_OptimizerHypothesis.cxx b/src/GHS3DPlugin/GHS3DPlugin_OptimizerHypothesis.cxx index 7e5cf77..a27c823 100644 --- a/src/GHS3DPlugin/GHS3DPlugin_OptimizerHypothesis.cxx +++ b/src/GHS3DPlugin/GHS3DPlugin_OptimizerHypothesis.cxx @@ -153,7 +153,7 @@ bool GHS3DPlugin_OptimizerHypothesis::SetParametersByDefaults(const TDefaults& std::string GHS3DPlugin_OptimizerHypothesis::CommandToRun(const GHS3DPlugin_OptimizerHypothesis* hyp) { - SMESH_Comment cmd( GetExeName() ); + SMESH_Comment cmd( GetExeName( (ImplementedAlgorithms) 1 ) ); cmd << " --max_memory " << (( hyp && hyp->myMaximumMemory > 0 ) ? hyp->myMaximumMemory : DefaultMaximumMemory()); diff --git a/src/GUI/GHS3DPluginGUI_AdvWidget.cxx b/src/GUI/GHS3DPluginGUI_AdvWidget.cxx index b2dc3a1..e70781f 100644 --- a/src/GUI/GHS3DPluginGUI_AdvWidget.cxx +++ b/src/GUI/GHS3DPluginGUI_AdvWidget.cxx @@ -135,3 +135,23 @@ void GHS3DPluginGUI_AdvWidget::itemChanged(QTreeWidgetItem * tblRow, int column) myOptionTable->blockSignals( false ); } } + +void GHS3DPluginGUI_AdvWidget::EnableAdvancedOptions( bool isMGTetra ) +{ + int iRow = 0, nbRows = myOptionTable->topLevelItemCount(); + // hard coded: register all possible options here + std::vector_commonOptions = { "split_overconstrained_tetrahedra" }; + std::vector::iterator tk; + for ( ; iRow < nbRows; ++iRow ) + { + // Have to allow advanced option for MGTetra HPC to work + tk = std::find( _commonOptions.begin(), + _commonOptions.end(), + myOptionTable->topLevelItem( iRow )->data( NAME_COL, PARAM_NAME ).toString().toStdString() + ); + + if ( tk == _commonOptions.end() ) + myOptionTable->topLevelItem( iRow )->setDisabled( !isMGTetra ); + + } +} \ No newline at end of file diff --git a/src/GUI/GHS3DPluginGUI_Dlg.h b/src/GUI/GHS3DPluginGUI_Dlg.h index 7fb6d65..8bb619c 100644 --- a/src/GUI/GHS3DPluginGUI_Dlg.h +++ b/src/GUI/GHS3DPluginGUI_Dlg.h @@ -49,7 +49,7 @@ public: void AddOption( const char* name_value_type, bool isCustom = false ); void GetOptionAndValue( QTreeWidgetItem * tblRow, QString& option, QString& value, bool& dflt ); - + void EnableAdvancedOptions( bool isMGTetra ); public slots: void itemChanged(QTreeWidgetItem * tblRow, int column); diff --git a/src/GUI/GHS3DPluginGUI_HypothesisCreator.cxx b/src/GUI/GHS3DPluginGUI_HypothesisCreator.cxx index bbdf366..05e1e7f 100644 --- a/src/GUI/GHS3DPluginGUI_HypothesisCreator.cxx +++ b/src/GUI/GHS3DPluginGUI_HypothesisCreator.cxx @@ -49,6 +49,7 @@ #include #include +#include #include #include #include @@ -58,7 +59,9 @@ #include #include #include +#include #include +#include #include #include #include @@ -303,6 +306,8 @@ GHS3DPluginGUI_HypothesisCreator::GHS3DPluginGUI_HypothesisCreator( const QStrin myMaxSizeCheck(0), myMinSizeSpin(0), myMaxSizeSpin(0), + myNumOfThreadsCheck(0), + myNumOfThreadsSpin(0), myGradationCheck(0), myGradationSpin(0), myUseProximityGroup(0), @@ -314,7 +319,9 @@ GHS3DPluginGUI_HypothesisCreator::GHS3DPluginGUI_HypothesisCreator( const QStrin myPThreadsModeCombo(0), myNumberOfThreadsSpin(0), mySmoothOffSliversCheck(0), - myCreateNewNodesCheck(0) + myCreateNewNodesCheck(0), + myPthreadMode(0), + myParallelMode(0) { GeomToolSelected = NULL; GeomToolSelected = getGeomSelectionTool(); @@ -354,6 +361,70 @@ bool GHS3DPluginGUI_HypothesisCreator::isOptimization() const return ( hypType() == GHS3DPlugin_OptimizerHypothesis::GetHypType() ); } +void GHS3DPluginGUI_HypothesisCreator::onRadioButtomSelect() +{ + onNumOfThreadsCheck(); + + // Disable selection of standart+ + QStandardItemModel * model = qobject_cast(myOptimizationLevelCombo->model()); + if(!model) return; + QStandardItem * item = model->item( GHS3DPlugin_Hypothesis::StandardPlus ); + if(!item) return; + + if ( myRadioBottomGroup->checkedId() == GHS3DPlugin_Hypothesis::MGTetra ) + { + // Enable selection of stadart+ + item->setEnabled(true); + // Set possibility to check memory options again. + myAdvWidget->maxMemoryCheck ->setEnabled( true ); + myAdvWidget->initialMemoryCheck ->setEnabled( true ); + + myAdvWidget->EnableAdvancedOptions( true ); + myEnfGroup->setEnabled( true ); + myEnfMeshGroup->setEnabled( true ); + } + else if ( myRadioBottomGroup->checkedId() == GHS3DPlugin_Hypothesis::MGTetraHPC ) + { + // Disable selection of stadart+ + item->setEnabled(false); + // Set to false memory checks and disable checkbox + myAdvWidget->maxMemoryCheck ->setChecked( false ); + myAdvWidget->initialMemoryCheck ->setChecked( false ); + myAdvWidget->maxMemoryCheck ->setEnabled( false ); + myAdvWidget->initialMemoryCheck ->setEnabled( false ); + myAdvWidget->EnableAdvancedOptions( false ); + myEnfGroup->setEnabled( false ); + myEnfMeshGroup->setEnabled( false ); + } + +} + +void GHS3DPluginGUI_HypothesisCreator::onNumOfThreadsCheck() +{ + if ( myRadioBottomGroup->checkedId() == GHS3DPlugin_Hypothesis::MGTetra ) + { + if ( myNumOfThreadsCheck->isChecked() ) + myPthreadMode->setEnabled( true ); + else + myPthreadMode->setEnabled( false ); + + myParallelMode->setEnabled( false ); + } + else if ( myRadioBottomGroup->checkedId() == GHS3DPlugin_Hypothesis::MGTetraHPC ) + { + if ( myNumOfThreadsCheck->isChecked() ) + myParallelMode->setEnabled( true ); + else + myParallelMode->setEnabled( false ); + + myPthreadMode->setEnabled( false ); + } + else + { + + } +} + QFrame* GHS3DPluginGUI_HypothesisCreator::buildFrame() { QFrame* fr = new QFrame( 0 ); @@ -419,26 +490,64 @@ QFrame* GHS3DPluginGUI_HypothesisCreator::buildFrame() } else { + // Algorithm selection + QGroupBox* radioBottomGroup = new QGroupBox( tr("GHS3D_ALGO_SELECTION"), myStdGroup ); + myRadioBottomGroup = new QButtonGroup( radioBottomGroup ); + + QRadioButton * GM_MSH = new QRadioButton(tr("GHS3D_ALGO_MGTETRA"), radioBottomGroup ); + QRadioButton * GM_MSH_HPC = new QRadioButton(tr("GHS3D_ALGO_MGTETRAHPC"), radioBottomGroup ); + + myRadioBottomGroup->addButton( GM_MSH, 1 ); + myRadioBottomGroup->addButton( GM_MSH_HPC, 0 ); + GM_MSH->setChecked( true ); + + QGridLayout* radioBottomLayout = new QGridLayout( radioBottomGroup ); + radioBottomLayout->setSpacing( 4 ); + radioBottomLayout->setMargin( 11 ); + radioBottomLayout->addWidget( GM_MSH, 0, 0, 1, 1 ); + radioBottomLayout->addWidget( GM_MSH_HPC, 0, 1, 1, 1 ); + // Main parameters + QGroupBox* mainGroup = new QGroupBox( tr("GHS3D_MAIN_PARAMS"), myStdGroup ); + QLabel* optimizatiolLevelLbl = new QLabel( tr( "GHS3D_OPTIMIZATIOL_LEVEL" ), mainGroup ); + QLabel* pthreadModeLbl = new QLabel( tr( "GHS3D_PTHREAD_MODE" ), mainGroup ); + QLabel* parallelStrat = new QLabel( tr( "GHS3D_PARALLE_STRAT" ), mainGroup ); + + myOptimizationLevelCombo = new QComboBox( mainGroup ); + myMinSizeCheck = new QCheckBox( tr("GHS3D_MIN_SIZE"), mainGroup ); + myMaxSizeCheck = new QCheckBox( tr("GHS3D_MAX_SIZE"), mainGroup ); + myNumOfThreadsCheck = new QCheckBox( tr("GHS3D_THREADS_SIZE"), mainGroup ); + myPthreadMode = new QComboBox( mainGroup ); + myParallelMode = new QComboBox( mainGroup ); + + myMinSizeSpin = new SMESHGUI_SpinBox( mainGroup ); + myMaxSizeSpin = new SMESHGUI_SpinBox( mainGroup ); + myNumOfThreadsSpin = new SalomeApp_IntSpinBox( 1, 128, 1, mainGroup ); - QGroupBox* mainGroup = new QGroupBox( tr("GHS3D_MAIN_PARAMS"), myStdGroup ); - QLabel* optimizatiolLevelLbl = new QLabel( tr( "GHS3D_OPTIMIZATIOL_LEVEL" ), mainGroup ); - myOptimizationLevelCombo = new QComboBox( mainGroup ); - myMinSizeCheck = new QCheckBox( tr("GHS3D_MIN_SIZE"), mainGroup ); - myMaxSizeCheck = new QCheckBox( tr("GHS3D_MAX_SIZE"), mainGroup ); - myMinSizeSpin = new SMESHGUI_SpinBox( mainGroup ); - myMaxSizeSpin = new SMESHGUI_SpinBox( mainGroup ); myMinSizeCheck->setChecked( false ); myMaxSizeCheck->setChecked( false ); + myNumOfThreadsCheck->setChecked( false ); + myMinSizeSpin->RangeStepAndValidator(0, COORD_MAX, 10.0, "length_precision"); myMaxSizeSpin->RangeStepAndValidator(0, COORD_MAX, 10.0, "length_precision"); - myMinSizeSpin->setEnabled( false ); - myMaxSizeSpin->setEnabled( false ); - connect( myMinSizeCheck, SIGNAL( toggled(bool)), myMinSizeSpin, SLOT( setEnabled(bool))); - connect( myMaxSizeCheck, SIGNAL( toggled(bool)), myMaxSizeSpin, SLOT( setEnabled(bool))); + myNumOfThreadsSpin->setValue( 4 ); + + myMinSizeSpin ->setEnabled( false ); + myMaxSizeSpin ->setEnabled( false ); + myNumOfThreadsSpin->setEnabled(false); + myPthreadMode ->setEnabled( false ); + myParallelMode->setEnabled( false ); + + // ACTIONS ON BUTTOMS + connect( myMinSizeCheck, SIGNAL( toggled(bool)), myMinSizeSpin, SLOT( setEnabled(bool))); + connect( myMaxSizeCheck, SIGNAL( toggled(bool)), myMaxSizeSpin, SLOT( setEnabled(bool))); + connect( myNumOfThreadsCheck, SIGNAL( toggled(bool)), myNumOfThreadsSpin, SLOT( setEnabled(bool))); + connect( myNumOfThreadsCheck, SIGNAL( toggled(bool)), this, SLOT( onNumOfThreadsCheck() )); + connect( myNumOfThreadsCheck, SIGNAL( toggled(bool)), this, SLOT( onNumOfThreadsCheck() )); + connect( GM_MSH, SIGNAL( toggled( bool )),this, SLOT( onRadioButtomSelect() )); QGridLayout* mainLayout = new QGridLayout( mainGroup ); - mainLayout->setSpacing( 6 ); + mainLayout->setSpacing( 12 ); mainLayout->setMargin( 11 ); mainLayout->addWidget( optimizatiolLevelLbl, 0, 0, 1, 1 ); mainLayout->addWidget( myOptimizationLevelCombo, 0, 1, 1, 1 ); @@ -446,7 +555,13 @@ QFrame* GHS3DPluginGUI_HypothesisCreator::buildFrame() mainLayout->addWidget( myMinSizeSpin, 1, 1, 1, 1 ); mainLayout->addWidget( myMaxSizeCheck, 2, 0, 1, 1 ); mainLayout->addWidget( myMaxSizeSpin, 2, 1, 1, 1 ); - + mainLayout->addWidget( myNumOfThreadsCheck, 3, 0, 1, 1 ); + mainLayout->addWidget( myNumOfThreadsSpin, 3, 1, 1, 1 ); + mainLayout->addWidget( pthreadModeLbl, 4, 0, 1, 1 ); + mainLayout->addWidget( myPthreadMode, 4, 1, 1, 1 ); + mainLayout->addWidget( parallelStrat, 5, 0, 1, 1 ); + mainLayout->addWidget( myParallelMode, 5, 1, 1, 1 ); + // Volume proximity QGroupBox* proxyGroup = new QGroupBox( tr("GHS3D_VOLUME_PROXIMITY"), myStdGroup ); @@ -484,10 +599,13 @@ QFrame* GHS3DPluginGUI_HypothesisCreator::buildFrame() otherLayout->addWidget( myToMeshHolesCheck, 0, 0 ); otherLayout->addWidget( myToMakeGroupsOfDomains, 1, 0 ); + aStdLayout->addWidget( radioBottomGroup,row++, 0, 1, 2 ); + aStdLayout->addWidget( mainGroup, row++, 0, 1, 2 ); + aStdLayout->addWidget( proxyGroup, row++, 0, 1, 2 ); + aStdLayout->addWidget( otherGroup, row++, 0, 1, 2 ); - aStdLayout->addWidget( mainGroup, row++, 0, 1, 2 ); - aStdLayout->addWidget( proxyGroup, row++, 0, 1, 2 ); - aStdLayout->addWidget( otherGroup, row++, 0, 1, 2 ); + myPthreadMode->addItems( QStringList() << tr( "MODE_NONE" ) << tr( "MODE_AGGRESSIVE" ) << tr( "MODE_SAFE" ) ); + myParallelMode->addItems( QStringList() << tr( "MODE_NONE" ) << tr( "MODE_REPRODUCIBLE_GIVEN_MAX_THREADS" ) << tr( "MODE_REPRODUCIBLE" ) << tr( "MODE_AGGRESSIVE" ) ); } aStdLayout->setRowStretch( row, 10 ); @@ -549,7 +667,7 @@ QFrame* GHS3DPluginGUI_HypothesisCreator::buildFrame() QGridLayout* anEnfLayout = new QGridLayout(myEnfGroup); myEnforcedTableWidget = new QTableWidget(myEnfGroup); - myEnforcedTableWidget ->setMinimumWidth(300); + myEnforcedTableWidget->setMinimumWidth(300); myEnforcedTableWidget->setRowCount( 0 ); myEnforcedTableWidget->setColumnCount( ENF_VER_NB_COLUMNS ); myEnforcedTableWidget->setSortingEnabled(true); @@ -1459,7 +1577,12 @@ void GHS3DPluginGUI_HypothesisCreator::retrieveParams() const } myToMeshHolesCheck ->setChecked ( data.myToMeshHoles ); myToMakeGroupsOfDomains ->setChecked ( data.myToMakeGroupsOfDomains ); - myOptimizationLevelCombo ->setCurrentIndex( data.myOptimizationLevel ); + + if ( data.myAlgorithm == GHS3DPlugin_Hypothesis::MGTetraHPC && data.myOptimizationLevel == GHS3DPlugin_Hypothesis::StandardPlus /*not implemented by MGTetraHPC*/ ) + myOptimizationLevelCombo ->setCurrentIndex( GHS3DPlugin_Hypothesis::None ); + else + myOptimizationLevelCombo ->setCurrentIndex( data.myOptimizationLevel ); + if ( myOptimizationCombo ) // optimizer { myOptimizationCombo ->setCurrentIndex( data.myOptimization ); @@ -1471,14 +1594,19 @@ void GHS3DPluginGUI_HypothesisCreator::retrieveParams() const } else { - myMinSizeSpin->setValue( data.myMinSize ); - myMinSizeCheck->setChecked( data.myUseMinSize ); - myMaxSizeSpin->setValue( data.myMaxSize ); - myMaxSizeCheck->setChecked( data.myUseMaxSize ); - myGradationCheck->setChecked( data.myUseGradation ); - myGradationSpin->setValue( data.myUseGradation ? data.myGradation : GHS3DPlugin_Hypothesis::DefaultGradation() ); - myUseProximityGroup->setChecked( data.myUseProximity ); - myNbProximityLayers->setValue( data.myNbProximityLayers ); + myRadioBottomGroup ->button( data.myAlgorithm )->setChecked( true ); + myMinSizeSpin ->setValue( data.myMinSize ); + myMinSizeCheck ->setChecked( data.myUseMinSize ); + myMaxSizeSpin ->setValue( data.myMaxSize ); + myMaxSizeCheck ->setChecked( data.myUseMaxSize ); + myGradationCheck ->setChecked( data.myUseGradation ); + myGradationSpin ->setValue( data.myUseGradation ? data.myGradation : GHS3DPlugin_Hypothesis::DefaultGradation() ); + myUseProximityGroup ->setChecked( data.myUseProximity ); + myNbProximityLayers ->setValue( data.myNbProximityLayers ); + myNumOfThreadsCheck ->setChecked( data.myUseNumOfThreads ); + myNumOfThreadsSpin ->setValue( data.myNumOfThreads ); + myPthreadMode ->setCurrentIndex( data.myPthreadMode ); + myParallelMode ->setCurrentIndex( data.myParallelMode ); } myAdvWidget->maxMemoryCheck ->setChecked ( data.myMaximumMemory > 0 ); myAdvWidget->maxMemorySpin ->setValue @@ -1501,7 +1629,7 @@ void GHS3DPluginGUI_HypothesisCreator::retrieveParams() const myAdvWidget->AddOption( that->myCustomOptions[i].in() ); } myAdvWidget->myOptionTable->resizeColumnToContents( OPTION_NAME_COLUMN ); - + myAdvWidget->EnableAdvancedOptions( data.myAlgorithm == GHS3DPlugin_Hypothesis::MGTetra ); TEnfVertexList::const_iterator it; int rowCount = 0; @@ -1703,6 +1831,7 @@ bool GHS3DPluginGUI_HypothesisCreator::readParamsFromHypo( GHS3DHypothesisData& h_data.myNumberOfThreads = 1; h_data.mySmoothOffSlivers = 1; } + h_data.myAlgorithm = h->GetAlgorithm(); h_data.myOptimizationLevel = h->GetOptimizationLevel(); h_data.myMinSize = h->GetMinSize(); h_data.myMaxSize = h->GetMaxSize(); @@ -1731,6 +1860,10 @@ bool GHS3DPluginGUI_HypothesisCreator::readParamsFromHypo( GHS3DHypothesisData& //h_data.myTextOption = h->GetAdvancedOption(); h_data.myLogInStandardOutput = h->GetStandardOutputLog(); h_data.myRemoveLogOnSuccess = h->GetRemoveLogOnSuccess(); + h_data.myUseNumOfThreads = h->GetUseNumOfThreads(); + h_data.myNumOfThreads = h->GetNumOfThreads(); + h_data.myPthreadMode = h->GetPthreadMode(); + h_data.myParallelMode = h->GetParallelMode(); GHS3DPluginGUI_HypothesisCreator* that = (GHS3DPluginGUI_HypothesisCreator*)this; that->myOptions = h->GetOptionValues(); @@ -1791,19 +1924,28 @@ bool GHS3DPluginGUI_HypothesisCreator::storeParamsToHypo( const GHS3DHypothesisD if( isCreation() ) SMESH::SetName( SMESH::FindSObject( h ), h_data.myName.toLatin1().constData() ); + if ( opt->_is_nil() ) + { + h->SetAlgorithm ((CORBA::Short) h_data.myAlgorithm ); + h->SetUseNumOfThreads ( h_data.myUseNumOfThreads ); + h->SetNumOfThreads ( (CORBA::Short) h_data.myNumOfThreads ); + h->SetPthreadMode ( (CORBA::Short) h_data.myPthreadMode ); + h->SetParallelMode ( (CORBA::Short) h_data.myParallelMode ); + h->SetGradation ( h_data.myGradation ); + h->SetToMeshHoles ( h_data.myToMeshHoles ); + h->SetToMakeGroupsOfDomains ( h_data.myToMakeGroupsOfDomains ); + h->SetVolumeProximity ( h_data.myUseProximity ); + h->SetNbVolumeProximityLayers ((CORBA::Short) h_data.myNbProximityLayers ); + } + + // Common existing options optimization a MGTetra && MGTetraHPC h->SetOptimizationLevel ((CORBA::Short) h_data.myOptimizationLevel ); h->SetMinSize ( h_data.myUseMinSize ? h_data.myMinSize : 0 ); h->SetMaxSize ( h_data.myUseMaxSize ? h_data.myMaxSize : 0 ); h->SetMinMaxSizeDefault ( this->myMinSizeDefault, this->myMaxSizeDefault ); - h->SetGradation ( h_data.myGradation ); - h->SetVolumeProximity ( h_data.myUseProximity ); - h->SetNbVolumeProximityLayers ((CORBA::Short) h_data.myNbProximityLayers ); - h->SetToMeshHoles ( h_data.myToMeshHoles ); - h->SetToMakeGroupsOfDomains ( h_data.myToMakeGroupsOfDomains ); h->SetMaximumMemory ( h_data.myMaximumMemory ); h->SetInitialMemory ( h_data.myInitialMemory ); - h->SetInitialMemory ( h_data.myInitialMemory ); h->SetKeepFiles ( h_data.myKeepFiles ); h->SetWorkingDirectory ( h_data.myWorkingDir.toLatin1().constData() ); h->SetVerboseLevel ( h_data.myVerboseLevel ); @@ -1812,6 +1954,7 @@ bool GHS3DPluginGUI_HypothesisCreator::storeParamsToHypo( const GHS3DHypothesisD //h->SetFEMCorrection ( h_data.myFEMCorrection ); h->SetStandardOutputLog ( h_data.myLogInStandardOutput ); h->SetRemoveLogOnSuccess ( h_data.myRemoveLogOnSuccess ); + if ( !opt->_is_nil() ) { @@ -1915,6 +2058,11 @@ bool GHS3DPluginGUI_HypothesisCreator::readParamsFromWidgets( GHS3DHypothesisDat h_data.myNbProximityLayers = myNbProximityLayers->value(); h_data.myToMeshHoles = myToMeshHolesCheck->isChecked(); h_data.myToMakeGroupsOfDomains = myToMakeGroupsOfDomains->isChecked(); + h_data.myAlgorithm = myRadioBottomGroup->checkedId(); + h_data.myUseNumOfThreads = myNumOfThreadsCheck->isChecked(); + h_data.myNumOfThreads = myNumOfThreadsSpin->value(); + h_data.myPthreadMode = myPthreadMode->currentIndex(); + h_data.myParallelMode = myParallelMode->currentIndex(); } h_data.myMaximumMemory = float( myAdvWidget->maxMemoryCheck->isChecked() ? myAdvWidget->maxMemorySpin->value() : -1 ); h_data.myInitialMemory = float( myAdvWidget->initialMemoryCheck->isChecked() ? myAdvWidget->initialMemorySpin->value() : -1 ); diff --git a/src/GUI/GHS3DPluginGUI_HypothesisCreator.h b/src/GUI/GHS3DPluginGUI_HypothesisCreator.h index 2212dc5..3201e03 100644 --- a/src/GUI/GHS3DPluginGUI_HypothesisCreator.h +++ b/src/GUI/GHS3DPluginGUI_HypothesisCreator.h @@ -49,6 +49,7 @@ #include CORBA_SERVER_HEADER(SMESH_Mesh) class QWidget; +class QButtonGroup; class QComboBox; class QCheckBox; class QLineEdit; @@ -156,6 +157,8 @@ typedef struct short myVerboseLevel; TEnfVertexList myEnforcedVertices; TEnfMeshList myEnforcedMeshes; + short myAlgorithm, myNumOfThreads, myPthreadMode, myParallelMode; + bool myUseNumOfThreads; int myOptimization, mySplitOverConstrained, myPThreadsMode, myNumberOfThreads; bool mySmoothOffSlivers; @@ -208,6 +211,8 @@ protected slots: void onRemoveEnforcedMesh(); //void synchronizeEnforcedMesh(); void checkEnfMeshIsDefined(); + void onRadioButtomSelect(); + void onNumOfThreadsCheck(); signals: void vertexDefined(bool); @@ -230,6 +235,8 @@ private: QCheckBox* myMaxSizeCheck; SMESHGUI_SpinBox* myMinSizeSpin; SMESHGUI_SpinBox* myMaxSizeSpin; + QCheckBox* myNumOfThreadsCheck; + SalomeApp_IntSpinBox* myNumOfThreadsSpin; mutable double myMinSizeDefault, myMaxSizeDefault; // proximity QCheckBox* myGradationCheck; @@ -246,6 +253,9 @@ private: SalomeApp_IntSpinBox* myNumberOfThreadsSpin; QCheckBox* mySmoothOffSliversCheck; QCheckBox* myCreateNewNodesCheck; + QComboBox* myPthreadMode; + QComboBox* myParallelMode; + QButtonGroup* myRadioBottomGroup; QWidget* myAdvGroup; GHS3DPluginGUI_AdvWidget* myAdvWidget; diff --git a/src/GUI/GHS3DPlugin_msg_en.ts b/src/GUI/GHS3DPlugin_msg_en.ts index 5271493..e5cca7c 100644 --- a/src/GUI/GHS3DPlugin_msg_en.ts +++ b/src/GUI/GHS3DPlugin_msg_en.ts @@ -60,8 +60,52 @@ Light - LEVEL_MEDIUM - Medium (standard) + LEVEL_MEDIUM + Medium (standard) + + + GHS3D_PTHREAD_MODE + Pthread Mode + + + GHS3D_PARALLE_STRAT + Parallel Strategy (HPC) + + + MODE_NONE + None + + + MODE_AGGRESSIVE + Aggressive + + + MODE_SAFE + Safe + + + MODE_REPRODUCIBLE + Reproducible + + + MODE_REPRODUCIBLE_GIVEN_MAX_THREADS + Reproducible Given Max Number of Threads + + + GHS3D_ALGO_SELECTION + Algorithm selection + + + GHS3D_ALGO_MGTETRA + MG-Tetra + + + GHS3D_ALGO_MGTETRAHPC + MG-Tetra HPC + + + GHS3D_THREADS_SIZE + Maximal number of threads LEVEL_STANDARDPLUS diff --git a/src/GUI/GHS3DPlugin_msg_fr.ts b/src/GUI/GHS3DPlugin_msg_fr.ts index 37f7e4a..b42f7bb 100644 --- a/src/GUI/GHS3DPlugin_msg_fr.ts +++ b/src/GUI/GHS3DPlugin_msg_fr.ts @@ -63,6 +63,50 @@ LEVEL_MEDIUM Moyen (standard) + + GHS3D_PTHREAD_MODE + Mode Pthread + + + GHS3D_PARALLE_STRAT + Statégie Parallèle(HPC) + + + MODE_NONE + Zéro + + + MODE_AGGRESSIVE + Agressif + + + MODE_SAFE + Sûr + + + MODE_REPRODUCIBLE + Reproductible + + + MODE_REPRODUCIBLE_GIVEN_MAX_THREADS + Reproductible étant donné le nombre max de threads + + + GHS3D_ALGO_SELECTION + Sélection d'algorithme + + + GHS3D_ALGO_MGTETRA + MG-Tetra + + + GHS3D_ALGO_MGTETRAHPC + MG-Tetra HPC + + + GHS3D_THREADS_SIZE + Nombre max de threads + LEVEL_STANDARDPLUS Standard+ -- 2.39.2