Salome HOME
Better layout with documentation update
authorAfeef <afeef.badri@gmail.com>
Thu, 3 Nov 2022 10:52:23 +0000 (11:52 +0100)
committerAfeef <afeef.badri@gmail.com>
Thu, 3 Nov 2022 10:52:23 +0000 (11:52 +0100)
Thanks to Christophe

src/Tools/TopIIVolMeshPlug/TopIIVolMeshPluginDialog.py
src/Tools/TopIIVolMeshPlug/TopIIVolMeshPluginDialog.ui
src/Tools/TopIIVolMeshPlug/doc/TopIIVolMesh.rst
src/Tools/TopIIVolMeshPlug/doc/images/callTopIIVolMesh.png
src/Tools/TopIIVolMeshPlug/doc/index.rst

index 4e370d04efdf5a5ff5e22d0b9ad7af0dc872383b..122c90e80f2eab5b5b285d94a137bdd4b40e10d1 100644 (file)
@@ -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()
 
index b046f0eb538168d682e039ffea650aeecaa3a6bb..4a449f09e22f32d772de235cd9f45929f12341a7 100644 (file)
@@ -6,12 +6,12 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>663</width>
-    <height>298</height>
+    <width>758</width>
+    <height>400</height>
    </rect>
   </property>
   <property name="windowTitle">
-   <string>Tetra Mesh from cloud of xyz points mesh generator</string>
+   <string>Tetrahedral mesh generator for DEM point-clouds</string>
   </property>
   <layout class="QGridLayout" name="gridLayout">
    <item row="1" column="0">
      <property name="title">
       <string>Options</string>
      </property>
-     <layout class="QGridLayout" name="gridLayout_3">
-      <item row="0" column="0">
-       <widget class="QSpinBox" name="qsbXPoints">
-        <property name="minimum">
-         <number>0</number>
-        </property>
-        <property name="maximum">
-         <number>999999999</number>
-        </property>
-        <property name="value">
-         <number>10</number>
-        </property>
-       </widget>
-      </item>
-      <item row="0" column="1">
-       <widget class="QLabel" name="qlXpoints">
-        <property name="text">
-         <string>Number of  points in X direction</string>
-        </property>
+     <layout class="QGridLayout" name="gridLayout_6">
+      <item row="0" column="0" rowspan="2" colspan="2">
+       <widget class="QGroupBox" name="qgbNBpoints">
+        <property name="title">
+         <string>Number of points</string>
+        </property>
+        <layout class="QGridLayout" name="gridLayout_4">
+         <item row="0" column="0">
+          <widget class="QSpinBox" name="qsbXPoints">
+           <property name="minimum">
+            <number>0</number>
+           </property>
+           <property name="maximum">
+            <number>999999999</number>
+           </property>
+           <property name="value">
+            <number>10</number>
+           </property>
+          </widget>
+         </item>
+         <item row="0" column="1">
+          <widget class="QLabel" name="qlXpoints">
+           <property name="text">
+            <string>X direction</string>
+           </property>
+          </widget>
+         </item>
+         <item row="1" column="0">
+          <widget class="QSpinBox" name="qsbYPoints">
+           <property name="minimum">
+            <number>0</number>
+           </property>
+           <property name="maximum">
+            <number>999999999</number>
+           </property>
+           <property name="value">
+            <number>10</number>
+           </property>
+          </widget>
+         </item>
+         <item row="1" column="1">
+          <widget class="QLabel" name="qlYpoints">
+           <property name="text">
+            <string>Y direction</string>
+           </property>
+          </widget>
+         </item>
+         <item row="2" column="0">
+          <widget class="QSpinBox" name="qsbZPoints">
+           <property name="minimum">
+            <number>0</number>
+           </property>
+           <property name="maximum">
+            <number>999999999</number>
+           </property>
+           <property name="value">
+            <number>10</number>
+           </property>
+          </widget>
+         </item>
+         <item row="2" column="1">
+          <widget class="QLabel" name="qlZpoints">
+           <property name="text">
+            <string>Z direction</string>
+           </property>
+          </widget>
+         </item>
+        </layout>
        </widget>
       </item>
       <item row="0" column="2">
         </property>
         <property name="sizeHint" stdset="0">
          <size>
-          <width>40</width>
+          <width>0</width>
           <height>20</height>
          </size>
         </property>
        </spacer>
       </item>
-      <item row="0" column="3">
-       <widget class="QCheckBox" name="qcbDistributed">
-        <property name="text">
-         <string/>
-        </property>
-       </widget>
-      </item>
-      <item row="0" column="4">
-       <widget class="QLabel" name="qlDistributed">
-        <property name="text">
-         <string>Distributed</string>
-        </property>
+      <item row="0" column="3" rowspan="2" colspan="3">
+       <widget class="QGroupBox" name="groupBox_2">
+        <property name="title">
+         <string>Meshing</string>
+        </property>
+        <layout class="QGridLayout" name="gridLayout_5">
+         <item row="0" column="0">
+          <widget class="QRadioButton" name="qrbSeq">
+           <property name="text">
+            <string>Sequential</string>
+           </property>
+           <property name="checked">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item row="1" column="0">
+          <widget class="QRadioButton" name="qrbPar">
+           <property name="text">
+            <string>Parallel</string>
+           </property>
+          </widget>
+         </item>
+         <item row="2" column="0">
+          <widget class="QRadioButton" name="qrbDist">
+           <property name="text">
+            <string>Parallel distributed</string>
+           </property>
+          </widget>
+         </item>
+        </layout>
        </widget>
       </item>
-      <item row="0" column="5">
-       <spacer name="horizontalSpacer_2">
+      <item row="0" column="6">
+       <spacer name="horizontalSpacer_5">
         <property name="orientation">
          <enum>Qt::Horizontal</enum>
         </property>
         <property name="sizeHint" stdset="0">
          <size>
-          <width>40</width>
+          <width>0</width>
           <height>20</height>
          </size>
         </property>
        </spacer>
       </item>
-      <item row="0" column="6">
+      <item row="0" column="7">
        <widget class="QSpinBox" name="qsbNBprocs">
+        <property name="enabled">
+         <bool>false</bool>
+        </property>
         <property name="minimum">
          <number>0</number>
         </property>
         </property>
        </widget>
       </item>
-      <item row="0" column="7">
-       <widget class="QLabel" name="qlbNbProcs">
-        <property name="text">
-         <string>Number of  processors</string>
-        </property>
-       </widget>
-      </item>
       <item row="0" column="8">
-       <spacer name="horizontalSpacer_4">
-        <property name="orientation">
-         <enum>Qt::Horizontal</enum>
+       <widget class="QLabel" name="qlbNBprocs">
+        <property name="enabled">
+         <bool>false</bool>
         </property>
-        <property name="sizeHint" stdset="0">
-         <size>
-          <width>45</width>
-          <height>20</height>
-         </size>
-        </property>
-       </spacer>
-      </item>
-      <item row="1" column="0">
-       <widget class="QSpinBox" name="qsbYPoints">
-        <property name="minimum">
-         <number>0</number>
-        </property>
-        <property name="maximum">
-         <number>999999999</number>
-        </property>
-        <property name="value">
-         <number>10</number>
-        </property>
-       </widget>
-      </item>
-      <item row="1" column="1">
-       <widget class="QLabel" name="qlYpoints">
         <property name="text">
-         <string>Number of  points in Y direction</string>
-        </property>
-       </widget>
-      </item>
-      <item row="1" column="3">
-       <widget class="QCheckBox" name="qcbDisplayMesh">
-        <property name="text">
-         <string/>
-        </property>
-       </widget>
-      </item>
-      <item row="1" column="4">
-       <widget class="QLabel" name="qlDisplayMesh">
-        <property name="text">
-         <string>Display mesh</string>
-        </property>
-       </widget>
-      </item>
-      <item row="1" column="6">
-       <widget class="QSpinBox" name="qsbXParts">
-        <property name="minimum">
-         <number>0</number>
-        </property>
-        <property name="maximum">
-         <number>999999999</number>
-        </property>
-        <property name="value">
-         <number>1</number>
+         <string>Number of  processors</string>
         </property>
        </widget>
       </item>
-      <item row="1" column="7" colspan="2">
-       <widget class="QLabel" name="qlbXParts">
-        <property name="text">
-         <string>Number of  partitions in X direction</string>
-        </property>
+      <item row="1" column="7" rowspan="3" colspan="2">
+       <widget class="QGroupBox" name="qgbDist">
+        <property name="enabled">
+         <bool>false</bool>
+        </property>
+        <property name="title">
+         <string>Number of partitions</string>
+        </property>
+        <property name="checkable">
+         <bool>false</bool>
+        </property>
+        <layout class="QGridLayout" name="gridLayout_3">
+         <item row="1" column="0" colspan="2">
+          <widget class="QSpinBox" name="qsbYParts">
+           <property name="minimum">
+            <number>0</number>
+           </property>
+           <property name="maximum">
+            <number>999999999</number>
+           </property>
+           <property name="value">
+            <number>1</number>
+           </property>
+          </widget>
+         </item>
+         <item row="1" column="2" colspan="2">
+          <widget class="QLabel" name="qlbYParts">
+           <property name="text">
+            <string>Y direction</string>
+           </property>
+          </widget>
+         </item>
+         <item row="0" column="2" colspan="2">
+          <widget class="QLabel" name="qlbXParts">
+           <property name="text">
+            <string>X direction</string>
+           </property>
+          </widget>
+         </item>
+         <item row="2" column="2">
+          <widget class="QLabel" name="qlbZParts">
+           <property name="text">
+            <string>Z direction</string>
+           </property>
+          </widget>
+         </item>
+         <item row="2" column="0" colspan="2">
+          <widget class="QSpinBox" name="qsbZParts">
+           <property name="minimum">
+            <number>0</number>
+           </property>
+           <property name="maximum">
+            <number>999999999</number>
+           </property>
+           <property name="value">
+            <number>1</number>
+           </property>
+          </widget>
+         </item>
+         <item row="0" column="0" colspan="2">
+          <widget class="QSpinBox" name="qsbXParts">
+           <property name="minimum">
+            <number>0</number>
+           </property>
+           <property name="maximum">
+            <number>999999999</number>
+           </property>
+           <property name="value">
+            <number>1</number>
+           </property>
+          </widget>
+         </item>
+        </layout>
        </widget>
       </item>
       <item row="2" column="0">
-       <widget class="QSpinBox" name="qsbZPoints">
-        <property name="minimum">
-         <number>0</number>
-        </property>
-        <property name="maximum">
-         <number>999999999</number>
-        </property>
-        <property name="value">
-         <number>10</number>
-        </property>
-       </widget>
-      </item>
-      <item row="2" column="1">
-       <widget class="QLabel" name="qlZpoints">
-        <property name="text">
-         <string>Number of  points in Z direction</string>
-        </property>
-       </widget>
-      </item>
-      <item row="2" column="6">
-       <widget class="QSpinBox" name="qsbYParts">
-        <property name="minimum">
-         <number>0</number>
-        </property>
-        <property name="maximum">
-         <number>999999999</number>
-        </property>
-        <property name="value">
-         <number>1</number>
-        </property>
-       </widget>
-      </item>
-      <item row="2" column="7" colspan="2">
-       <widget class="QLabel" name="qlbYParts">
-        <property name="text">
-         <string>Number of  partitions in Y direction</string>
-        </property>
-       </widget>
-      </item>
-      <item row="3" column="0">
        <widget class="QSpinBox" name="qsbDepth">
         <property name="minimum">
          <number>-999999999</number>
         </property>
        </widget>
       </item>
-      <item row="3" column="1">
+      <item row="2" column="1">
        <widget class="QLabel" name="qlDepth">
         <property name="text">
          <string>Depth in Z direction</string>
         </property>
        </widget>
       </item>
-      <item row="3" column="6">
-       <widget class="QSpinBox" name="qsbZParts">
-        <property name="minimum">
-         <number>0</number>
+      <item row="2" column="3">
+       <widget class="QCheckBox" name="qcbDisplayMesh">
+        <property name="text">
+         <string/>
         </property>
-        <property name="maximum">
-         <number>999999999</number>
-        </property>
-        <property name="value">
-         <number>1</number>
+        <property name="checked">
+         <bool>true</bool>
         </property>
        </widget>
       </item>
-      <item row="3" column="7" colspan="2">
-       <widget class="QLabel" name="qlbZParts">
+      <item row="2" column="4">
+       <widget class="QLabel" name="qlDisplayMesh">
         <property name="text">
-         <string>Number of  partitions in Z direction</string>
+         <string>Display mesh</string>
         </property>
        </widget>
       </item>
-      <item row="4" column="0">
+      <item row="2" column="5">
+       <spacer name="horizontalSpacer_2">
+        <property name="orientation">
+         <enum>Qt::Horizontal</enum>
+        </property>
+        <property name="sizeHint" stdset="0">
+         <size>
+          <width>60</width>
+          <height>20</height>
+         </size>
+        </property>
+       </spacer>
+      </item>
+      <item row="3" column="0">
        <widget class="QLabel" name="qlTmpDir">
         <property name="text">
          <string>Workspace</string>
         </property>
        </widget>
       </item>
-      <item row="5" column="0" colspan="9">
+      <item row="4" column="0" colspan="9">
        <widget class="QLineEdit" name="qleTmpDir">
         <property name="sizePolicy">
          <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
   <tabstop>qsbYPoints</tabstop>
   <tabstop>qsbZPoints</tabstop>
   <tabstop>qsbDepth</tabstop>
-  <tabstop>qcbDistributed</tabstop>
   <tabstop>qsbNBprocs</tabstop>
   <tabstop>qsbXParts</tabstop>
   <tabstop>qsbYParts</tabstop>
   <tabstop>qsbZParts</tabstop>
-  <tabstop>qcbDisplayMesh</tabstop>
   <tabstop>qleTmpDir</tabstop>
   <tabstop>qpbCompute</tabstop>
   <tabstop>qpbClose</tabstop>
index 48e3f873ae4b037d584d16e475f75b6171d3cc46..b9d871d31c11c3d3e26163c10bb8a7951f2568a9 100644 (file)
@@ -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.
 
index 72a9d5d943588e8ebcd428e986df54e48f6fc7b0..867b73af298196fb0ec06955dd083907f307d205 100644 (file)
Binary files a/src/Tools/TopIIVolMeshPlug/doc/images/callTopIIVolMesh.png and b/src/Tools/TopIIVolMeshPlug/doc/images/callTopIIVolMesh.png differ
index 3cd23794793f7ed34070393b7f77dd43fdf1cd22..a54ffdb8ad33dce164a5e44dcdfcae3209ce8717 100644 (file)
@@ -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: