Salome HOME
Bug 0020072: GHS3DPRLPLUGIN update. Integrating the attached patch. V5_1_0rc2
authorjfa <jfa@opencascade.com>
Tue, 9 Dec 2008 08:50:37 +0000 (08:50 +0000)
committerjfa <jfa@opencascade.com>
Tue, 9 Dec 2008 08:50:37 +0000 (08:50 +0000)
src/SMESH_SWIG/Makefile.am
src/SMESH_SWIG/ex30_tepal.py [new file with mode: 0644]
src/SMESH_SWIG/smeshDC.py

index dc3dd7f3b6a1a9b4e64a8b5c3a2ae74040ea7292..0f2b6cb145d34a7c9f3e5fe06d900c9c7f762ec3 100644 (file)
@@ -57,6 +57,7 @@ dist_salomescript_DATA= \
        ex21_lamp.py \
        ex24_cylinder.py \
        ex29_refine.py \
        ex21_lamp.py \
        ex24_cylinder.py \
        ex29_refine.py \
+       ex30_tepal.py \
        SMESH_test.py\
        SMESH_test0.py\
        SMESH_test1.py \
        SMESH_test.py\
        SMESH_test0.py\
        SMESH_test1.py \
diff --git a/src/SMESH_SWIG/ex30_tepal.py b/src/SMESH_SWIG/ex30_tepal.py
new file mode 100644 (file)
index 0000000..2b8c387
--- /dev/null
@@ -0,0 +1,63 @@
+# CEA/LGLS 2008, Christian Van Wambeke (CEA/LGLS), Francis KLOSS (OCC)
+# ====================================================================
+
+import os
+
+import geompy
+import smesh
+
+# Parameters
+# ----------
+
+results = "/export/home/wambeke/ZZ"
+
+radius =  50
+height = 200
+
+# Build a cylinder
+# ----------------
+
+base = geompy.MakeVertex(0, 0, 0)
+direction = geompy.MakeVectorDXDYDZ(0, 0, 1)
+
+cylinder = geompy.MakeCylinder(base, direction, radius, height)
+
+geompy.addToStudy(cylinder, "Cylinder")
+
+# Define a mesh on a geometry
+# ---------------------------
+
+m = smesh.Mesh(cylinder)
+
+# 2D mesh with BLSURF
+# -------------------
+
+algo2d = m.Triangle(smesh.BLSURF)
+
+algo2d.SetPhysicalMesh(1)
+algo2d.SetPhySize(5)
+
+algo2d.SetGeometricMesh(0)
+
+# 3D mesh with tepal
+# ------------------
+
+algo3d = m.Tetrahedron(smesh.GHS3DPRL)
+
+algo3d.SetMEDName(results)
+algo3d.SetNbPart(4)
+algo3d.SetBackground(False)
+algo3d.SetKeepFiles(False)
+
+# Launch meshers
+# --------------
+
+status = m.Compute()
+
+# Test if ok
+# ----------
+
+if os.access(results+".xml", os.F_OK):
+    print "Ok: tepal"
+else:
+    print "KO: tepal"
index 00eae714cc3fb48ec522442d90e525183aba7f1f..db8a34ccd929a4e40eed1366d45a9464810d2fe8 100644 (file)
@@ -128,6 +128,7 @@ NETGEN_FULL   = FULL_NETGEN
 Hexa    = 8
 Hexotic = 9
 BLSURF  = 10
 Hexa    = 8
 Hexotic = 9
 BLSURF  = 10
+GHS3DPRL = 11
 
 # MirrorType enumeration
 POINT = SMESH_MeshEditor.POINT
 
 # MirrorType enumeration
 POINT = SMESH_MeshEditor.POINT
@@ -332,10 +333,10 @@ class smeshDC(SMESH._objref_SMESH_Gen):
     #  @ingroup l1_auxiliary
     def SetCurrentStudy( self, theStudy, geompyD = None ):
         #self.SetCurrentStudy(theStudy)
     #  @ingroup l1_auxiliary
     def SetCurrentStudy( self, theStudy, geompyD = None ):
         #self.SetCurrentStudy(theStudy)
-       if not geompyD:
-           import geompy
-           geompyD = geompy.geom
-           pass
+        if not geompyD:
+            import geompy
+            geompyD = geompy.geom
+            pass
         self.geompyD=geompyD
         self.SetGeomEngine(geompyD)
         SMESH._objref_SMESH_Gen.SetCurrentStudy(self,theStudy)
         self.geompyD=geompyD
         self.SetGeomEngine(geompyD)
         SMESH._objref_SMESH_Gen.SetCurrentStudy(self,theStudy)
@@ -777,7 +778,7 @@ class Mesh:
     #  The parameter \a algo permits to choose the algorithm: NETGEN or GHS3D
     #  If the optional \a geom parameter is not set, this algorithm is global.
     #  \n Otherwise, this algorithm defines a submesh based on \a geom subshape.
     #  The parameter \a algo permits to choose the algorithm: NETGEN or GHS3D
     #  If the optional \a geom parameter is not set, this algorithm is global.
     #  \n Otherwise, this algorithm defines a submesh based on \a geom subshape.
-    #  @param algo values are: smesh.NETGEN, smesh.GHS3D, smesh.FULL_NETGEN
+    #  @param algo values are: smesh.NETGEN, smesh.GHS3D, smesh.GHS3DPRL, smesh.FULL_NETGEN
     #  @param geom If defined, the subshape to be meshed (GEOM_Object)
     #  @return an instance of Mesh_Tetrahedron algorithm
     #  @ingroup l3_algos_basic
     #  @param geom If defined, the subshape to be meshed (GEOM_Object)
     #  @return an instance of Mesh_Tetrahedron algorithm
     #  @ingroup l3_algos_basic
@@ -3122,7 +3123,7 @@ class Mesh_Segment(Mesh_Algorithm):
 # --------------------------
 
 ## Defines a segment 1D algorithm for discretization
 # --------------------------
 
 ## Defines a segment 1D algorithm for discretization
-#  
+#
 #  @ingroup l3_algos_basic
 class Mesh_CompositeSegment(Mesh_Segment):
 
 #  @ingroup l3_algos_basic
 class Mesh_CompositeSegment(Mesh_Segment):
 
@@ -3517,6 +3518,11 @@ class Mesh_Tetrahedron(Mesh_Algorithm):
             self.Create(mesh, geom, "GHS3D_3D" , "libGHS3DEngine.so")
             pass
 
             self.Create(mesh, geom, "GHS3D_3D" , "libGHS3DEngine.so")
             pass
 
+        elif algoType == GHS3DPRL:
+            import GHS3DPRLPlugin
+            self.Create(mesh, geom, "GHS3DPRL_3D" , "libGHS3DPRLEngine.so")
+            pass
+
         self.algoType = algoType
 
     ## Defines "MaxElementVolume" hypothesis to give the maximun volume of each tetrahedron
         self.algoType = algoType
 
     ## Defines "MaxElementVolume" hypothesis to give the maximun volume of each tetrahedron
@@ -3544,6 +3550,7 @@ class Mesh_Tetrahedron(Mesh_Algorithm):
     def Parameters(self, which=SOLE):
         if self.params:
             return self.params
     def Parameters(self, which=SOLE):
         if self.params:
             return self.params
+
         if self.algoType == FULL_NETGEN:
             if which == SIMPLE:
                 self.params = self.Hypothesis("NETGEN_SimpleParameters_3D", [],
         if self.algoType == FULL_NETGEN:
             if which == SIMPLE:
                 self.params = self.Hypothesis("NETGEN_SimpleParameters_3D", [],
@@ -3552,11 +3559,17 @@ class Mesh_Tetrahedron(Mesh_Algorithm):
                 self.params = self.Hypothesis("NETGEN_Parameters", [],
                                               "libNETGENEngine.so", UseExisting=0)
             return self.params
                 self.params = self.Hypothesis("NETGEN_Parameters", [],
                                               "libNETGENEngine.so", UseExisting=0)
             return self.params
+
         if self.algoType == GHS3D:
             self.params = self.Hypothesis("GHS3D_Parameters", [],
                                           "libGHS3DEngine.so", UseExisting=0)
             return self.params
         if self.algoType == GHS3D:
             self.params = self.Hypothesis("GHS3D_Parameters", [],
                                           "libGHS3DEngine.so", UseExisting=0)
             return self.params
-        
+
+        if self.algoType == GHS3DPRL:
+            self.params = self.Hypothesis("GHS3DPRL_Parameters", [],
+                                          "libGHS3DPRLEngine.so", UseExisting=0)
+            return self.params
+
         print "Algo supports no multi-parameter hypothesis"
         return None
 
         print "Algo supports no multi-parameter hypothesis"
         return None
 
@@ -3673,7 +3686,7 @@ class Mesh_Tetrahedron(Mesh_Algorithm):
     ## To keep working files or remove them. Log file remains in case of errors anyway.
     #  @ingroup l3_hypos_ghs3dh
     def SetKeepFiles(self, toKeep):
     ## To keep working files or remove them. Log file remains in case of errors anyway.
     #  @ingroup l3_hypos_ghs3dh
     def SetKeepFiles(self, toKeep):
-        #  Advanced parameter of GHS3D
+        #  Advanced parameter of GHS3D and GHS3DPRL
         self.Parameters().SetKeepFiles(toKeep)
 
     ## To set verbose level [0-10]. <ul>
         self.Parameters().SetKeepFiles(toKeep)
 
     ## To set verbose level [0-10]. <ul>
@@ -3702,12 +3715,24 @@ class Mesh_Tetrahedron(Mesh_Algorithm):
         #  Advanced parameter of GHS3D
         self.Parameters().SetToUseBoundaryRecoveryVersion(toUse)
 
         #  Advanced parameter of GHS3D
         self.Parameters().SetToUseBoundaryRecoveryVersion(toUse)
 
-    ## Sets command line option as text. 
+    ## Sets command line option as text.
     #  @ingroup l3_hypos_ghs3dh
     def SetTextOption(self, option):
         #  Advanced parameter of GHS3D
         self.Parameters().SetTextOption(option)
 
     #  @ingroup l3_hypos_ghs3dh
     def SetTextOption(self, option):
         #  Advanced parameter of GHS3D
         self.Parameters().SetTextOption(option)
 
+    ## Sets MED files name and path.
+    def SetMEDName(self, value):
+        self.Parameters().SetMEDName(value)
+
+    ## Sets the number of partition of the initial mesh
+    def SetNbPart(self, value):
+        self.Parameters().SetNbPart(value)
+
+    ## When big mesh, start tepal in background
+    def SetBackground(self, value):
+        self.Parameters().SetBackground(value)
+
 # Public class: Mesh_Hexahedron
 # ------------------------------
 
 # Public class: Mesh_Hexahedron
 # ------------------------------
 
@@ -3883,7 +3908,7 @@ class Mesh_Projection3D(Mesh_Algorithm):
         Mesh_Algorithm.__init__(self)
         self.Create(mesh, geom, "Projection_3D")
 
         Mesh_Algorithm.__init__(self)
         self.Create(mesh, geom, "Projection_3D")
 
-    ## Defines the "Source Shape 3D" hypothesis, specifying a meshed solid, from where 
+    ## Defines the "Source Shape 3D" hypothesis, specifying a meshed solid, from where
     #  the mesh pattern is taken, and, optionally, the  association of vertices
     #  between the source and the target solid  (to which a hipothesis is assigned)
     #  @param solid from where the mesh pattern is taken
     #  the mesh pattern is taken, and, optionally, the  association of vertices
     #  between the source and the target solid  (to which a hipothesis is assigned)
     #  @param solid from where the mesh pattern is taken