From b6f1b3a4311f24679ba3c2898d99f5920776ee34 Mon Sep 17 00:00:00 2001 From: jfa Date: Tue, 9 Dec 2008 08:50:37 +0000 Subject: [PATCH] Bug 0020072: GHS3DPRLPLUGIN update. Integrating the attached patch. --- src/SMESH_SWIG/Makefile.am | 1 + src/SMESH_SWIG/ex30_tepal.py | 63 ++++++++++++++++++++++++++++++++++++ src/SMESH_SWIG/smeshDC.py | 45 ++++++++++++++++++++------ 3 files changed, 99 insertions(+), 10 deletions(-) create mode 100644 src/SMESH_SWIG/ex30_tepal.py diff --git a/src/SMESH_SWIG/Makefile.am b/src/SMESH_SWIG/Makefile.am index dc3dd7f3b..0f2b6cb14 100644 --- a/src/SMESH_SWIG/Makefile.am +++ b/src/SMESH_SWIG/Makefile.am @@ -57,6 +57,7 @@ dist_salomescript_DATA= \ ex21_lamp.py \ ex24_cylinder.py \ ex29_refine.py \ + ex30_tepal.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 index 000000000..2b8c38797 --- /dev/null +++ b/src/SMESH_SWIG/ex30_tepal.py @@ -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" diff --git a/src/SMESH_SWIG/smeshDC.py b/src/SMESH_SWIG/smeshDC.py index 00eae714c..db8a34ccd 100644 --- a/src/SMESH_SWIG/smeshDC.py +++ b/src/SMESH_SWIG/smeshDC.py @@ -128,6 +128,7 @@ NETGEN_FULL = FULL_NETGEN Hexa = 8 Hexotic = 9 BLSURF = 10 +GHS3DPRL = 11 # 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) - 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) @@ -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. - # @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 @@ -3122,7 +3123,7 @@ class Mesh_Segment(Mesh_Algorithm): # -------------------------- ## Defines a segment 1D algorithm for discretization -# +# # @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 + 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 @@ -3544,6 +3550,7 @@ class Mesh_Tetrahedron(Mesh_Algorithm): 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", [], @@ -3552,11 +3559,17 @@ class Mesh_Tetrahedron(Mesh_Algorithm): 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 == GHS3DPRL: + self.params = self.Hypothesis("GHS3DPRL_Parameters", [], + "libGHS3DPRLEngine.so", UseExisting=0) + return self.params + 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): - # Advanced parameter of GHS3D + # Advanced parameter of GHS3D and GHS3DPRL self.Parameters().SetKeepFiles(toKeep) ## To set verbose level [0-10].