Better layout with documentation update

Thanks to Christophe
This commit is contained in:
Afeef 2022-11-03 11:52:23 +01:00
parent 8606805252
commit 255c738799
5 changed files with 254 additions and 191 deletions

View File

@ -48,13 +48,9 @@ class TopIIVolMeshPluginDialog(Ui_TopIIVolMeshMainFrame,QWidget):
self.qpbMeshFile.clicked.connect(self.OnQpbMeshFileClicked) self.qpbMeshFile.clicked.connect(self.OnQpbMeshFileClicked)
self.qpbMeshFile.setToolTip("Select input DEM file") self.qpbMeshFile.setToolTip("Select input DEM file")
self.qpbClose.clicked.connect(self.OnQpbCloseClicked) self.qpbClose.clicked.connect(self.OnQpbCloseClicked)
self.qcbDistributed.stateChanged[int].connect(self.OnqcbDistributedClicked) self.qrbDist.clicked.connect(self.OnqrbDistClicked)
self.qlbXParts.setVisible(False) self.qrbPar.clicked.connect(self.OnqrbParClicked)
self.qlbYParts.setVisible(False) self.qrbSeq.clicked.connect(self.OnqrbSeqClicked)
self.qlbZParts.setVisible(False)
self.qsbXParts.setVisible(False)
self.qsbYParts.setVisible(False)
self.qsbZParts.setVisible(False)
self.SALOME_TMP_DIR = None self.SALOME_TMP_DIR = None
try: try:
self.qleTmpDir.setText(os.path.join('/tmp',getpass.getuser(),'top-ii-vol')) 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() zPoints = self.qsbZPoints.value()
depth = self.qsbDepth.value() depth = self.qsbDepth.value()
nProcs = self.qsbNBprocs.value() nProcs = self.qsbNBprocs.value()
if not self.qcbDistributed.isChecked(): if not self.qrbDist.isChecked():
if nProcs == 1: if nProcs == 1:
shellCmd = "topIIvol_Mesher" shellCmd = "topIIvol_Mesher"
else: else:
@ -121,17 +117,29 @@ class TopIIVolMeshPluginDialog(Ui_TopIIVolMeshMainFrame,QWidget):
pathlib.Path(self.SALOME_TMP_DIR).mkdir(parents=True, exist_ok=True) 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')) self.outputMesh= os.path.join(self.SALOME_TMP_DIR, inputMesh.split('/').pop().replace('.xyz','.mesh'))
shellCmd+= " --out " + self.outputMesh shellCmd+= " --out " + self.outputMesh
os.chdir(self.SALOME_TMP_DIR)
print("INFO: ", shellCmd) print("INFO: ", shellCmd)
myMonitorView=TopIIVolMeshMonitor(self, shellCmd) myMonitorView=TopIIVolMeshMonitor(self, shellCmd)
def OnqcbDistributedClicked(self): def OnqrbDistClicked(self):
state = self.qcbDistributed.isChecked() state = self.qrbDist.isChecked()
self.qlbXParts.setVisible(state) self.qgbDist.setEnabled(state)
self.qlbYParts.setVisible(state) self.qsbNBprocs.setEnabled(state)
self.qlbZParts.setVisible(state) self.qlbNBprocs.setEnabled(state)
self.qsbXParts.setVisible(state)
self.qsbYParts.setVisible(state) def OnqrbParClicked(self):
self.qsbZParts.setVisible(state) 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): def OnQpbCloseClicked(self):
self.close() self.close()

View File

@ -6,12 +6,12 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>663</width> <width>758</width>
<height>298</height> <height>400</height>
</rect> </rect>
</property> </property>
<property name="windowTitle"> <property name="windowTitle">
<string>Tetra Mesh from cloud of xyz points mesh generator</string> <string>Tetrahedral mesh generator for DEM point-clouds</string>
</property> </property>
<layout class="QGridLayout" name="gridLayout"> <layout class="QGridLayout" name="gridLayout">
<item row="1" column="0"> <item row="1" column="0">
@ -129,7 +129,13 @@
<property name="title"> <property name="title">
<string>Options</string> <string>Options</string>
</property> </property>
<layout class="QGridLayout" name="gridLayout_3"> <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"> <item row="0" column="0">
<widget class="QSpinBox" name="qsbXPoints"> <widget class="QSpinBox" name="qsbXPoints">
<property name="minimum"> <property name="minimum">
@ -146,83 +152,10 @@
<item row="0" column="1"> <item row="0" column="1">
<widget class="QLabel" name="qlXpoints"> <widget class="QLabel" name="qlXpoints">
<property name="text"> <property name="text">
<string>Number of points in X direction</string> <string>X direction</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="0" column="2">
<spacer name="horizontalSpacer_3">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</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>
</widget>
</item>
<item row="0" column="5">
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="0" column="6">
<widget class="QSpinBox" name="qsbNBprocs">
<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="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>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>45</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="1" column="0"> <item row="1" column="0">
<widget class="QSpinBox" name="qsbYPoints"> <widget class="QSpinBox" name="qsbYPoints">
<property name="minimum"> <property name="minimum">
@ -239,41 +172,7 @@
<item row="1" column="1"> <item row="1" column="1">
<widget class="QLabel" name="qlYpoints"> <widget class="QLabel" name="qlYpoints">
<property name="text"> <property name="text">
<string>Number of points in Y direction</string> <string>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>
</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> </property>
</widget> </widget>
</item> </item>
@ -293,11 +192,111 @@
<item row="2" column="1"> <item row="2" column="1">
<widget class="QLabel" name="qlZpoints"> <widget class="QLabel" name="qlZpoints">
<property name="text"> <property name="text">
<string>Number of points in Z direction</string> <string>Z direction</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="2" column="6"> </layout>
</widget>
</item>
<item row="0" column="2">
<spacer name="horizontalSpacer_3">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>0</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<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="6">
<spacer name="horizontalSpacer_5">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>0</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<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 name="maximum">
<number>999999999</number>
</property>
<property name="value">
<number>1</number>
</property>
</widget>
</item>
<item row="0" column="8">
<widget class="QLabel" name="qlbNBprocs">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Number of processors</string>
</property>
</widget>
</item>
<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"> <widget class="QSpinBox" name="qsbYParts">
<property name="minimum"> <property name="minimum">
<number>0</number> <number>0</number>
@ -310,34 +309,28 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="2" column="7" colspan="2"> <item row="1" column="2" colspan="2">
<widget class="QLabel" name="qlbYParts"> <widget class="QLabel" name="qlbYParts">
<property name="text"> <property name="text">
<string>Number of partitions in Y direction</string> <string>Y direction</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="3" column="0"> <item row="0" column="2" colspan="2">
<widget class="QSpinBox" name="qsbDepth"> <widget class="QLabel" name="qlbXParts">
<property name="minimum">
<number>-999999999</number>
</property>
<property name="maximum">
<number>999999999</number>
</property>
<property name="value">
<number>0</number>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QLabel" name="qlDepth">
<property name="text"> <property name="text">
<string>Depth in Z direction</string> <string>X direction</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="3" column="6"> <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"> <widget class="QSpinBox" name="qsbZParts">
<property name="minimum"> <property name="minimum">
<number>0</number> <number>0</number>
@ -350,21 +343,80 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="3" column="7" colspan="2"> <item row="0" column="0" colspan="2">
<widget class="QLabel" name="qlbZParts"> <widget class="QSpinBox" name="qsbXParts">
<property name="text"> <property name="minimum">
<string>Number of partitions in Z direction</string> <number>0</number>
</property>
<property name="maximum">
<number>999999999</number>
</property>
<property name="value">
<number>1</number>
</property> </property>
</widget> </widget>
</item> </item>
<item row="4" column="0"> </layout>
</widget>
</item>
<item row="2" column="0">
<widget class="QSpinBox" name="qsbDepth">
<property name="minimum">
<number>-999999999</number>
</property>
<property name="maximum">
<number>999999999</number>
</property>
<property name="value">
<number>0</number>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QLabel" name="qlDepth">
<property name="text">
<string>Depth in Z direction</string>
</property>
</widget>
</item>
<item row="2" column="3">
<widget class="QCheckBox" name="qcbDisplayMesh">
<property name="text">
<string/>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item row="2" column="4">
<widget class="QLabel" name="qlDisplayMesh">
<property name="text">
<string>Display mesh</string>
</property>
</widget>
</item>
<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"> <widget class="QLabel" name="qlTmpDir">
<property name="text"> <property name="text">
<string>Workspace</string> <string>Workspace</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="5" column="0" colspan="9"> <item row="4" column="0" colspan="9">
<widget class="QLineEdit" name="qleTmpDir"> <widget class="QLineEdit" name="qleTmpDir">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed"> <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
@ -389,12 +441,10 @@
<tabstop>qsbYPoints</tabstop> <tabstop>qsbYPoints</tabstop>
<tabstop>qsbZPoints</tabstop> <tabstop>qsbZPoints</tabstop>
<tabstop>qsbDepth</tabstop> <tabstop>qsbDepth</tabstop>
<tabstop>qcbDistributed</tabstop>
<tabstop>qsbNBprocs</tabstop> <tabstop>qsbNBprocs</tabstop>
<tabstop>qsbXParts</tabstop> <tabstop>qsbXParts</tabstop>
<tabstop>qsbYParts</tabstop> <tabstop>qsbYParts</tabstop>
<tabstop>qsbZParts</tabstop> <tabstop>qsbZParts</tabstop>
<tabstop>qcbDisplayMesh</tabstop>
<tabstop>qleTmpDir</tabstop> <tabstop>qleTmpDir</tabstop>
<tabstop>qpbCompute</tabstop> <tabstop>qpbCompute</tabstop>
<tabstop>qpbClose</tabstop> <tabstop>qpbClose</tabstop>

View File

@ -1,7 +1,7 @@
Introduction 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 Running topIIvol Plug-in
======================== ========================
@ -15,49 +15,54 @@ Running topIIvol Plug-in
**topIIVolMesh** Options **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 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: 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 X points present in the input point cloud;
- Number of Y 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; - Depth of the mesh needed;
- temporary directory for calculation. - temporary directory for calculation.
Parallel mode 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: 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 X points present in the input point cloud;
- Number of Y 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; - Depth of the mesh needed;
- Number of MPI ranks - Number of MPI ranks
- temporary directory for calculation. - 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: 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 X points present in the input point cloud;
- Number of Y 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 X direction;
- Number of partitions in Y direction; - Number of partitions in Y direction;
- Number of partitions in Z direction; - Number of partitions in Z direction;
- Depth of the mesh needed;
- Number of MPI ranks - Number of MPI ranks
- temporary directory for calculation. - temporary directory for calculation.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 88 KiB

View 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 This documentation covers the usage of **top-ii-vol** as plug-in in SALOME that can be used within the SALOME
Mesh module. 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. This plug-in offers only the most common functionalities of the tool.
Contents: Contents: