Salome HOME
add and fix methods of GHS3D and BLSURF hypotheses
authoreap <eap@opencascade.com>
Tue, 22 Apr 2008 16:52:09 +0000 (16:52 +0000)
committereap <eap@opencascade.com>
Tue, 22 Apr 2008 16:52:09 +0000 (16:52 +0000)
src/SMESH_SWIG/smeshDC.py

index e5648fbb533b0f3c68b8797cb37d55ce77b5a3e8..96d8756b66c564d1a5be9b3840ead10af099d5b6 100644 (file)
@@ -81,11 +81,20 @@ CENTROIDAL_SMOOTH = SMESH_MeshEditor.CENTROIDAL_SMOOTH
 
 # Fineness enumeration (for NETGEN)
 VeryCoarse = 0
 
 # Fineness enumeration (for NETGEN)
 VeryCoarse = 0
-Coarse = 1
-Moderate = 2
-Fine = 3
-VeryFine = 4
-Custom = 5
+Coarse     = 1
+Moderate   = 2
+Fine       = 3
+VeryFine   = 4
+Custom     = 5
+
+# Optimization level of GHS3D
+None_Optimization, Light_Optimization, Medium_Optimization, Strong_Optimization = 0,1,2,3
+
+# Topology treatment way of BLSURF
+FromCAD, PreProcess, PreProcessPlus = 0,1,2
+
+# Element size flag of BLSURF
+DefaultSize, DefaultGeom, Custom = 0,0,1
 
 PrecisionConfusion = 1e-07
 
 
 PrecisionConfusion = 1e-07
 
@@ -2896,46 +2905,66 @@ class Mesh_Triangle(Mesh_Algorithm):
             print "Netgen 1D-2D algo doesn't support this hypothesis"
             return None
 
             print "Netgen 1D-2D algo doesn't support this hypothesis"
             return None
 
-    ## Sets PhysicalMesh
-    #  @param thePhysicalMesh is:
-    #  DefaultSize or Custom
-    def SetPhysicalMesh(self, thePhysicalMesh=1):
+    ## Sets a way to define size of mesh elements to generate
+    #  @param thePhysicalMesh is: DefaultSize or Custom
+    #  Parameter of BLSURF algo
+    def SetPhysicalMesh(self, thePhysicalMesh=DefaultSize):
         if self.params == 0:
             self.Parameters()
         self.params.SetPhysicalMesh(thePhysicalMesh)
 
         if self.params == 0:
             self.Parameters()
         self.params.SetPhysicalMesh(thePhysicalMesh)
 
-    ## Sets PhySize flag
+    ## Sets size of mesh elements to generate
+    #  Parameter of BLSURF algo
     def SetPhySize(self, theVal):
         if self.params == 0:
             self.Parameters()
         self.params.SetPhySize(theVal)
 
     def SetPhySize(self, theVal):
         if self.params == 0:
             self.Parameters()
         self.params.SetPhySize(theVal)
 
-    ## Sets GeometricMesh
-    #  @param theGeometricMesh is:
-    #  DefaultGeom or Custom
+    ## Sets a way to define maximum angular deflection of mesh from CAD model
+    #  @param theGeometricMesh is: DefaultGeom or Custom
+    #  Parameter of BLSURF algo
     def SetGeometricMesh(self, theGeometricMesh=0):
         if self.params == 0:
             self.Parameters()
         if self.params.GetPhysicalMesh() == 0: theGeometricMesh = 1
         self.params.SetGeometricMesh(theGeometricMesh)
 
     def SetGeometricMesh(self, theGeometricMesh=0):
         if self.params == 0:
             self.Parameters()
         if self.params.GetPhysicalMesh() == 0: theGeometricMesh = 1
         self.params.SetGeometricMesh(theGeometricMesh)
 
-    ## Sets AngleMeshS flag
+    ## Sets angular deflection (in degrees) of mesh from CAD model
+    #  Parameter of BLSURF algo
     def SetAngleMeshS(self, theVal=_angleMeshS):
         if self.params == 0:
             self.Parameters()
         if self.params.GetGeometricMesh() == 0: theVal = self._angleMeshS
         self.params.SetAngleMeshS(theVal)
 
     def SetAngleMeshS(self, theVal=_angleMeshS):
         if self.params == 0:
             self.Parameters()
         if self.params.GetGeometricMesh() == 0: theVal = self._angleMeshS
         self.params.SetAngleMeshS(theVal)
 
-    ## Sets Gradation flag
+    ## Sets maximal allowed ratio between the lengths of two adjacent edges
+    #  Parameter of BLSURF algo
     def SetGradation(self, theVal=_gradation):
         if self.params == 0:
             self.Parameters()
         if self.params.GetGeometricMesh() == 0: theVal = self._gradation
         self.params.SetGradation(theVal)
 
     def SetGradation(self, theVal=_gradation):
         if self.params == 0:
             self.Parameters()
         if self.params.GetGeometricMesh() == 0: theVal = self._gradation
         self.params.SetGradation(theVal)
 
+    ## Sets topology usage way defining how mesh conformity is assured:
+    # FromCAD, PreProcess or PreProcessPlus
+    # FromCAD - mesh conformity is assured by conformity of a shape
+    # PreProcess or PreProcessPlus - by pre-processing a CAD model
+    #  Parameter of BLSURF algo
+    def SetTopology(self, way):
+        if self.params == 0:
+            self.Parameters()
+        self.params.SetTopology(way)
+
+    ## To respect geometrical edges or not
+    #  Parameter of BLSURF algo
+    def SetDecimesh(self, toIgnoreEdges=False):
+        if self.params == 0:
+            self.Parameters()
+        self.params.SetDecimesh(toIgnoreEdges)
+
     ## Sets QuadAllowed flag
     #
     ## Sets QuadAllowed flag
     #
-    #  Only for algoType == NETGEN || NETGEN_2D
+    #  Only for algoType == NETGEN || NETGEN_2D || BLSURF
     def SetQuadAllowed(self, toAllow=True):
         if self.algoType == NETGEN_2D:
             if toAllow: # add QuadranglePreference
     def SetQuadAllowed(self, toAllow=True):
         if self.algoType == NETGEN_2D:
             if toAllow: # add QuadranglePreference
@@ -2958,6 +2987,8 @@ class Mesh_Triangle(Mesh_Algorithm):
     #
     #  Only for algoType == NETGEN
     def Parameters(self):
     #
     #  Only for algoType == NETGEN
     def Parameters(self):
+        if self.params:
+            return self.params
         if self.algoType == NETGEN:
             self.params = self.Hypothesis("NETGEN_Parameters_2D", [],
                                           "libNETGENEngine.so", UseExisting=0)
         if self.algoType == NETGEN:
             self.params = self.Hypothesis("NETGEN_Parameters_2D", [],
                                           "libNETGENEngine.so", UseExisting=0)
@@ -3040,12 +3071,6 @@ class Mesh_Triangle(Mesh_Algorithm):
         if self.params is not None:
             self.params.SetNbSegPerRadius(theVal)
 
         if self.params is not None:
             self.params.SetNbSegPerRadius(theVal)
 
-    ## Sets Decimesh flag
-    def SetDecimesh(self, toAllow=False):
-        if self.params == 0:
-            self.Parameters()
-        self.params.SetDecimesh(toAllow)
-
     pass
 
 
     pass
 
 
@@ -3087,17 +3112,17 @@ class Mesh_Tetrahedron(Mesh_Algorithm):
             self.Create(mesh, geom, "NETGEN_3D", "libNETGENEngine.so")
             pass
 
             self.Create(mesh, geom, "NETGEN_3D", "libNETGENEngine.so")
             pass
 
-        elif algoType == GHS3D:
-            import GHS3DPlugin
-            self.Create(mesh, geom, "GHS3D_3D" , "libGHS3DEngine.so")
-            pass
-
         elif algoType == FULL_NETGEN:
             if noNETGENPlugin:
                 print "Warning: NETGENPlugin module has not been imported."
             self.Create(mesh, geom, "NETGEN_2D3D", "libNETGENEngine.so")
             pass
 
         elif algoType == FULL_NETGEN:
             if noNETGENPlugin:
                 print "Warning: NETGENPlugin module has not been imported."
             self.Create(mesh, geom, "NETGEN_2D3D", "libNETGENEngine.so")
             pass
 
+        elif algoType == GHS3D:
+            import GHS3DPlugin
+            self.Create(mesh, geom, "GHS3D_3D" , "libGHS3DEngine.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
@@ -3120,23 +3145,30 @@ 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
-        else:
-            print "Algo doesn't support this hypothesis"
-            return None
+        if (self.algoType == GHS3D):
+            self.params = self.Hypothesis("GHS3D_Parameters", [],
+                                          "libGHS3DEngine.so", UseExisting=0)
+            return self.params
+        
+        print "Algo doesn't support this hypothesis"
+        return None
 
     ## Sets MaxSize
 
     ## Sets MaxSize
+    #  Parameter of FULL_NETGEN
     def SetMaxSize(self, theSize):
         if self.params == 0:
             self.Parameters()
         self.params.SetMaxSize(theSize)
 
     ## Sets SecondOrder flag
     def SetMaxSize(self, theSize):
         if self.params == 0:
             self.Parameters()
         self.params.SetMaxSize(theSize)
 
     ## Sets SecondOrder flag
+    #  Parameter of FULL_NETGEN
     def SetSecondOrder(self, theVal):
         if self.params == 0:
             self.Parameters()
         self.params.SetSecondOrder(theVal)
 
     ## Sets Optimize flag
     def SetSecondOrder(self, theVal):
         if self.params == 0:
             self.Parameters()
         self.params.SetSecondOrder(theVal)
 
     ## Sets Optimize flag
+    #  Parameter of FULL_NETGEN
     def SetOptimize(self, theVal):
         if self.params == 0:
             self.Parameters()
     def SetOptimize(self, theVal):
         if self.params == 0:
             self.Parameters()
@@ -3145,29 +3177,72 @@ class Mesh_Tetrahedron(Mesh_Algorithm):
     ## Sets Fineness
     #  @param theFineness is:
     #  VeryCoarse, Coarse, Moderate, Fine, VeryFine or Custom
     ## Sets Fineness
     #  @param theFineness is:
     #  VeryCoarse, Coarse, Moderate, Fine, VeryFine or Custom
+    #  Parameter of FULL_NETGEN
     def SetFineness(self, theFineness):
         if self.params == 0:
             self.Parameters()
         self.params.SetFineness(theFineness)
 
     ## Sets GrowthRate
     def SetFineness(self, theFineness):
         if self.params == 0:
             self.Parameters()
         self.params.SetFineness(theFineness)
 
     ## Sets GrowthRate
+    #  Parameter of FULL_NETGEN
     def SetGrowthRate(self, theRate):
         if self.params == 0:
             self.Parameters()
         self.params.SetGrowthRate(theRate)
 
     ## Sets NbSegPerEdge
     def SetGrowthRate(self, theRate):
         if self.params == 0:
             self.Parameters()
         self.params.SetGrowthRate(theRate)
 
     ## Sets NbSegPerEdge
+    #  Parameter of FULL_NETGEN
     def SetNbSegPerEdge(self, theVal):
         if self.params == 0:
             self.Parameters()
         self.params.SetNbSegPerEdge(theVal)
 
     ## Sets NbSegPerRadius
     def SetNbSegPerEdge(self, theVal):
         if self.params == 0:
             self.Parameters()
         self.params.SetNbSegPerEdge(theVal)
 
     ## Sets NbSegPerRadius
+    #  Parameter of FULL_NETGEN
     def SetNbSegPerRadius(self, theVal):
         if self.params == 0:
             self.Parameters()
         self.params.SetNbSegPerRadius(theVal)
 
     def SetNbSegPerRadius(self, theVal):
         if self.params == 0:
             self.Parameters()
         self.params.SetNbSegPerRadius(theVal)
 
+    ## To mesh "holes" in a solid or not. Default is to mesh.
+    #  Parameter of GHS3D
+    def SetToMeshHoles(self, toMesh):
+        if self.params == 0: self.Parameters()
+        self.params.SetToMeshHoles(toMesh)
+
+    ## Set Optimization level:
+    #   None_Optimization, Light_Optimization, Medium_Optimization, Strong_Optimization.
+    #  Default is Medium_Optimization
+    #  Parameter of GHS3D
+    def SetOptimizationLevel(self, level):
+        if self.params == 0: self.Parameters()
+        self.params.SetOptimizationLevel(level)
+
+    ## Maximal size of memory to be used by the algorithm (in Megabytes).
+    #  Advanced parameter of GHS3D
+    def SetMaximumMemory(self, MB):
+        if self.params == 0: self.Parameters()
+        self.params.SetMaximumMemory(MB)
+
+    ## Initial size of memory to be used by the algorithm (in Megabytes) in
+    #  automatic memory adjustment mode
+    #  Advanced parameter of GHS3D
+    def SetInitialMemory(self, MB):
+        if self.params == 0: self.Parameters()
+        self.params.SetInitialMemory(MB)
+
+    ## Path to working directory
+    #  Advanced parameter of GHS3D
+    def SetWorkingDirectory(self, path):
+        if self.params == 0: self.Parameters()
+        self.params.SetWorkingDirectory(path)
+
+    ## To keep working files or remove them. Log file remains in case of errors anyway
+    #  Advanced parameter of GHS3D
+    def SetKeepFiles(self, toKeep):
+        if self.params == 0: self.Parameters()
+        self.params.SetKeepFiles(toKeep)
+
 # Public class: Mesh_Hexahedron
 # ------------------------------
 
 # Public class: Mesh_Hexahedron
 # ------------------------------