diff --git a/src/Tools/TopIIVolMeshPlug/TopIIVolMeshPluginDialog.py b/src/Tools/TopIIVolMeshPlug/TopIIVolMeshPluginDialog.py index 4e370d04e..122c90e80 100644 --- a/src/Tools/TopIIVolMeshPlug/TopIIVolMeshPluginDialog.py +++ b/src/Tools/TopIIVolMeshPlug/TopIIVolMeshPluginDialog.py @@ -48,13 +48,9 @@ class TopIIVolMeshPluginDialog(Ui_TopIIVolMeshMainFrame,QWidget): self.qpbMeshFile.clicked.connect(self.OnQpbMeshFileClicked) self.qpbMeshFile.setToolTip("Select input DEM file") self.qpbClose.clicked.connect(self.OnQpbCloseClicked) - self.qcbDistributed.stateChanged[int].connect(self.OnqcbDistributedClicked) - self.qlbXParts.setVisible(False) - self.qlbYParts.setVisible(False) - self.qlbZParts.setVisible(False) - self.qsbXParts.setVisible(False) - self.qsbYParts.setVisible(False) - self.qsbZParts.setVisible(False) + self.qrbDist.clicked.connect(self.OnqrbDistClicked) + self.qrbPar.clicked.connect(self.OnqrbParClicked) + self.qrbSeq.clicked.connect(self.OnqrbSeqClicked) self.SALOME_TMP_DIR = None try: self.qleTmpDir.setText(os.path.join('/tmp',getpass.getuser(),'top-ii-vol')) @@ -91,7 +87,7 @@ class TopIIVolMeshPluginDialog(Ui_TopIIVolMeshMainFrame,QWidget): zPoints = self.qsbZPoints.value() depth = self.qsbDepth.value() nProcs = self.qsbNBprocs.value() - if not self.qcbDistributed.isChecked(): + if not self.qrbDist.isChecked(): if nProcs == 1: shellCmd = "topIIvol_Mesher" else: @@ -121,18 +117,30 @@ class TopIIVolMeshPluginDialog(Ui_TopIIVolMeshMainFrame,QWidget): pathlib.Path(self.SALOME_TMP_DIR).mkdir(parents=True, exist_ok=True) self.outputMesh= os.path.join(self.SALOME_TMP_DIR, inputMesh.split('/').pop().replace('.xyz','.mesh')) shellCmd+= " --out " + self.outputMesh + os.chdir(self.SALOME_TMP_DIR) print("INFO: ", shellCmd) myMonitorView=TopIIVolMeshMonitor(self, shellCmd) - def OnqcbDistributedClicked(self): - state = self.qcbDistributed.isChecked() - self.qlbXParts.setVisible(state) - self.qlbYParts.setVisible(state) - self.qlbZParts.setVisible(state) - self.qsbXParts.setVisible(state) - self.qsbYParts.setVisible(state) - self.qsbZParts.setVisible(state) + def OnqrbDistClicked(self): + state = self.qrbDist.isChecked() + self.qgbDist.setEnabled(state) + self.qsbNBprocs.setEnabled(state) + self.qlbNBprocs.setEnabled(state) + def OnqrbParClicked(self): + state = self.qrbPar.isChecked() + self.qgbDist.setEnabled(not state) + self.qsbNBprocs.setEnabled(state) + self.qlbNBprocs.setEnabled(state) + + def OnqrbSeqClicked(self): + state = self.qrbSeq.isChecked() + if state: + self.qsbNBprocs.setValue(1) + self.qgbDist.setEnabled(not state) + self.qsbNBprocs.setEnabled(not state) + self.qlbNBprocs.setEnabled(not state) + def OnQpbCloseClicked(self): self.close() diff --git a/src/Tools/TopIIVolMeshPlug/TopIIVolMeshPluginDialog.ui b/src/Tools/TopIIVolMeshPlug/TopIIVolMeshPluginDialog.ui index b046f0eb5..4a449f09e 100644 --- a/src/Tools/TopIIVolMeshPlug/TopIIVolMeshPluginDialog.ui +++ b/src/Tools/TopIIVolMeshPlug/TopIIVolMeshPluginDialog.ui @@ -6,12 +6,12 @@ 0 0 - 663 - 298 + 758 + 400 - Tetra Mesh from cloud of xyz points mesh generator + Tetrahedral mesh generator for DEM point-clouds @@ -129,25 +129,74 @@ Options - - - - - 0 - - - 999999999 - - - 10 - - - - - - - Number of points in X direction + + + + + Number of points + + + + + 0 + + + 999999999 + + + 10 + + + + + + + X direction + + + + + + + 0 + + + 999999999 + + + 10 + + + + + + + Y direction + + + + + + + 0 + + + 999999999 + + + 10 + + + + + + + Z direction + + + + @@ -157,41 +206,63 @@ - 40 + 0 20 - - - - + + + + Meshing + + + + + Sequential + + + true + + + + + + + Parallel + + + + + + + Parallel distributed + + + + - - - - Distributed - - - - - + + Qt::Horizontal - 40 + 0 20 - + + + false + 0 @@ -203,121 +274,92 @@ - - + + + + false + Number of processors - - - - Qt::Horizontal + + + + false - - - 45 - 20 - + + Number of partitions - - - - - - 0 - - - 999999999 - - - 10 - - - - - - - Number of points in Y direction - - - - - - - - - - - - - - Display mesh - - - - - - - 0 - - - 999999999 - - - 1 - - - - - - - Number of partitions in X direction + + false + + + + + 0 + + + 999999999 + + + 1 + + + + + + + Y direction + + + + + + + X direction + + + + + + + Z direction + + + + + + + 0 + + + 999999999 + + + 1 + + + + + + + 0 + + + 999999999 + + + 1 + + + + - - - 0 - - - 999999999 - - - 10 - - - - - - - Number of points in Z direction - - - - - - - 0 - - - 999999999 - - - 1 - - - - - - - Number of partitions in Y direction - - - - -999999999 @@ -330,41 +372,51 @@ - + Depth in Z direction - - - - 0 - - - 999999999 - - - 1 - - - - - + + - Number of partitions in Z direction + + + + true - + + + + Display mesh + + + + + + + Qt::Horizontal + + + + 60 + 20 + + + + + Workspace - + @@ -389,12 +441,10 @@ qsbYPoints qsbZPoints qsbDepth - qcbDistributed qsbNBprocs qsbXParts qsbYParts qsbZParts - qcbDisplayMesh qleTmpDir qpbCompute qpbClose diff --git a/src/Tools/TopIIVolMeshPlug/doc/TopIIVolMesh.rst b/src/Tools/TopIIVolMeshPlug/doc/TopIIVolMesh.rst index 48e3f873a..b9d871d31 100644 --- a/src/Tools/TopIIVolMeshPlug/doc/TopIIVolMesh.rst +++ b/src/Tools/TopIIVolMeshPlug/doc/TopIIVolMesh.rst @@ -1,7 +1,7 @@ Introduction ============ -**topIIvol** meshing tool provides sequential/parallel tools for creating volumetric tetrahedral meshes from a given topology (point-cloud `*.xyz`). +**topIIvol** meshing tool provides sequential and parallel tools for creating volumetric tetrahedral meshes from a given terrain topology via digital elevation model (DEM point-cloud `*.xyz`). Via this plugin one could produce distributed meshes suitable for domain-decomposition based solvers or simply non distributed meshes (single mesh) suitable for a sequential/parallel solver. Running topIIvol Plug-in ======================== @@ -15,49 +15,54 @@ Running topIIvol Plug-in **topIIVolMesh** Options ======================== +Users have option of performing meshing via: + +- *Sequential* mode: mesh computation in sequential and outputs a single mesh. +- *Parallel* mode: mesh computation in parallel and outputs a single mesh. +- *Parallel distributed* mode: mesh computation in parallel and outputs partitioned meshes. Sequential mode --------------- -If the number of processors is set to 1, **topIIvol_Mesher** sequential tool is called for creating volumetric tetrahedral meshes from a given topology. The volumetric mesh can be displayed in SALOME by ticking the "Display mesh" check-box. +By default sequential meshing mode is activated. **topIIvol_Mesher** sequential tool is called for creating volumetric tetrahedral mesh for the given DEM point-cloud. The volumetric mesh can be displayed in SALOME by ticking the "Display mesh" check-box. The list of input parameters are: -- DEM input file: input point cloud file; +- DEM input file: input point cloud file in .xyz format; - Number of X points present in the input point cloud; - Number of Y points present in the input point cloud; -- Number of Z points intended in the z direction; +- Number of Z points intended in the Z direction; - Depth of the mesh needed; - temporary directory for calculation. Parallel mode --------------- -If the number of processors is greater than one, **topIIvol_ParMesher** parallel computing tool is called for creating volumetric tetrahedral meshes from a given topology. The volumetric mesh can be displayed in SALOME by ticking the "Display mesh" check-box. +For larger meshes the parallel meshing mode can be activated via the check-box **Parallel**. Additionally, this requires the user to provide the number of processors to be used for parallel meshing. Then, **topIIvol_ParMesher** parallel computing tool is called for creating volumetric tetrahedral mesh for the given DEM point-cloud. The volumetric mesh can be displayed in SALOME by ticking the "Display mesh" check-box. The list of input parameters are: -- DEM input file: input point cloud file; +- DEM input file: input point cloud file in .xyz format; - Number of X points present in the input point cloud; - Number of Y points present in the input point cloud; -- Number of Z points intended in the z direction; +- Number of Z points intended in the Z direction; - Depth of the mesh needed; - Number of MPI ranks - temporary directory for calculation. -Distributed mode +Parallel distributed mode ----------------- -If the check-box **Distributed** is ticked, **topIIvol_DistMesher** computing tool is called for creating embarassingly parallel distributed meshes from a given topology. +For larger meshes suitable for distributed-memory solvers (domain-decomposition) the distributed parallel meshing mode can be activated via the check-box **Parallel distributed**. This requires the user to provide the number of processors to be used for parallel meshing and how to partition the mesh in each direction (X, Y, Z). Then, **topIIvol_DistMesher** computing tool is called for creating embarassingly parallel distributed meshes for the given DEM point-cloud. These volumetric mesh partitions can be displayed in SALOME by ticking the "Display mesh" check-box. The list of input parameters are: -- DEM input file: input point cloud file; +- DEM input file: input point cloud file in .xyz format; - Number of X points present in the input point cloud; - Number of Y points present in the input point cloud; -- Number of Z points intended in the z direction; +- Number of Z points intended in the Z direction; +- Depth of the mesh needed; - Number of partitions in X direction; - Number of partitions in Y direction; - Number of partitions in Z direction; -- Depth of the mesh needed; - Number of MPI ranks - temporary directory for calculation. diff --git a/src/Tools/TopIIVolMeshPlug/doc/images/callTopIIVolMesh.png b/src/Tools/TopIIVolMeshPlug/doc/images/callTopIIVolMesh.png index 72a9d5d943..867b73af2 100644 Binary files a/src/Tools/TopIIVolMeshPlug/doc/images/callTopIIVolMesh.png and b/src/Tools/TopIIVolMeshPlug/doc/images/callTopIIVolMesh.png differ diff --git a/src/Tools/TopIIVolMeshPlug/doc/index.rst b/src/Tools/TopIIVolMeshPlug/doc/index.rst index 3cd237947..a54ffdb8a 100644 --- a/src/Tools/TopIIVolMeshPlug/doc/index.rst +++ b/src/Tools/TopIIVolMeshPlug/doc/index.rst @@ -8,7 +8,7 @@ topIIvol plugin documentation This documentation covers the usage of **top-ii-vol** as plug-in in SALOME that can be used within the SALOME Mesh module. -TopIIVolMesh plug-in uses CEA **top-ii-Vol** meshing tool,which provides sequential/parallel tools for creating volumetric tetrahedral meshes from a given topology. +TopIIVolMesh plug-in uses CEA **top-ii-Vol** meshing tool, which provides sequential and parallel tools for creating volumetric tetrahedral meshes for a given terrain topology. This plug-in offers only the most common functionalities of the tool. Contents: