X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FGHS3DPlugin%2FGHS3DPluginBuilder.py;h=d65efc58b87cec9da5bc388696b3128d112e6699;hb=f264dfaecc1f66c2f4a300fe007b818a92a475f8;hp=daefa79f050af81e99b04bb4b52b843555049145;hpb=009772f8b3d74d414c19285447c6125f99369fc9;p=plugins%2Fghs3dplugin.git diff --git a/src/GHS3DPlugin/GHS3DPluginBuilder.py b/src/GHS3DPlugin/GHS3DPluginBuilder.py index daefa79..d65efc5 100644 --- a/src/GHS3DPlugin/GHS3DPluginBuilder.py +++ b/src/GHS3DPlugin/GHS3DPluginBuilder.py @@ -1,9 +1,9 @@ -# Copyright (C) 2007-2013 CEA/DEN, EDF R&D +# Copyright (C) 2007-2016 CEA/DEN, EDF R&D # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2.1 of the License. +# version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -19,7 +19,7 @@ ## # @package GHS3DPluginBuilder -# Python API for the GHS3D meshing plug-in module. +# Python API for the MG-Tetra meshing plug-in module. from salome.smesh.smesh_algorithm import Mesh_Algorithm from salome.smesh.smeshBuilder import AssureGeomPublished @@ -32,33 +32,41 @@ except ImportError: noGHS3DPlugin = 1 pass -# Optimization level of GHS3D +# Optimization level of MG-Tetra # V3.1 None_Optimization, Light_Optimization, Medium_Optimization, Strong_Optimization = 0,1,2,3 # V4.1 (partialy redefines V3.1). Issue 0020574 None_Optimization, Light_Optimization, Standard_Optimization, StandardPlus_Optimization, Strong_Optimization = 0,1,2,3,4 +# import items of enums +for e in GHS3DPlugin.Mode._items: exec('%s = GHS3DPlugin.%s'%(e,e)) +for e in GHS3DPlugin.PThreadsMode._items: exec('%s = GHS3DPlugin.%s'%(e,e)) +Mode_NO, Mode_YES, Mode_ONLY = GHS3DPlugin.Mode._items +Mode_SAFE, Mode_AGGRESSIVE, Mode_NONE = GHS3DPlugin.PThreadsMode._items + #---------------------------- # Mesh algo type identifiers #---------------------------- -## Algorithm type: GHS3D tetrahedron 3D algorithm, see GHS3D_Algorithm -GHS3D = "GHS3D_3D" +## Algorithm type: MG-Tetra tetrahedron 3D algorithm, see GHS3D_Algorithm +MG_Tetra = "MG-Tetra" +GHS3D = MG_Tetra +MG_Tetra_Optimization = "MG-Tetra Optimization" -## Tetrahedron GHS3D 3D algorithm +## Tetrahedron MG-Tetra 3D algorithm # -# It can be created by calling smesh.Mesh.Tetrahedron( smesh.GHS3D, geom=0 ) +# It can be created by calling smeshBuilder.Mesh.Tetrahedron( smeshBuilder.MG_Tetra, geom=0 ) class GHS3D_Algorithm(Mesh_Algorithm): - ## name of the dynamic method in smesh.Mesh class + ## name of the dynamic method in smeshBuilder.Mesh class # @internal meshMethod = "Tetrahedron" - ## type of algorithm used with helper function in smesh.Mesh class + ## type of algorithm used with helper function in smeshBuilder.Mesh class # @internal - algoType = GHS3D - ## doc string of the method in smesh.Mesh class + algoType = MG_Tetra + ## doc string of the method in smeshBuilder.Mesh class # @internal - docHelper = "Creates tetrahedron 3D algorithm for volumes" + docHelper = "Creates tetrahedron 3D algorithm" ## Private constructor. # @param mesh parent mesh object algorithm is assigned to @@ -75,7 +83,7 @@ class GHS3D_Algorithm(Mesh_Algorithm): # @return hypothesis object def Parameters(self): if not self.params: - self.params = self.Hypothesis("GHS3D_Parameters", [], + self.params = self.Hypothesis("MG-Tetra Parameters", [], "libGHS3DEngine.so", UseExisting=0) pass return self.params @@ -86,6 +94,14 @@ class GHS3D_Algorithm(Mesh_Algorithm): self.Parameters().SetToMeshHoles(toMesh) pass + ## To make groups of volumes of different domains when mesh is generated from skin. + # Default is to make groups. + # This option works only (1) for the mesh w/o shape and (2) if GetToMeshHoles() == true + # @param toMakeGroups "Make groups of domains" flag value + def SetToMakeGroupsOfDomains(self, toMakeGroups): + self.Parameters().SetToMakeGroupsOfDomains(toMakeGroups) + pass + ## Set Optimization level: # @param level optimization level, one of the following values # - None_Optimization @@ -118,11 +134,27 @@ class GHS3D_Algorithm(Mesh_Algorithm): self.Parameters().SetWorkingDirectory(path) pass - ## To keep working files or remove them. Log file remains in case of errors anyway. + ## To keep working files or remove them. # @param toKeep "keep working files" flag value def SetKeepFiles(self, toKeep): self.Parameters().SetKeepFiles(toKeep) pass + + ## Remove or not the log file (if any) in case of successful computation. + # The log file remains in case of errors anyway. If + # the "keep working files" flag is set to true, this option + # has no effect. + # @param toRemove "remove log on success" flag value + def SetRemoveLogOnSuccess(self, toRemove): + self.Parameters().SetRemoveLogOnSuccess(toRemove) + pass + + ## Print the the log in a file. If set to false, the + # log is printed on the standard output + # @param toPrintLogInFile "print log in a file" flag value + def SetPrintLogInFile(self, toPrintLogInFile): + self.Parameters().SetStandardOutputLog(not toPrintLogInFile) + pass ## Set verbosity level [0-10]. # @param level verbosity level @@ -235,7 +267,179 @@ class GHS3D_Algorithm(Mesh_Algorithm): ## Sets command line option as text. # @param option command line option def SetTextOption(self, option): - self.Parameters().SetTextOption(option) + self.Parameters().SetAdvancedOption(option) + pass + + ## Sets command line option as text. + # @param option command line option + def SetAdvancedOption(self, option): + self.Parameters().SetAdvancedOption(option) pass pass # end of GHS3D_Algorithm class + + +## MG-Tetra Optimization algorithm - optimizer of tetrahedral meshes +# +# It can be created by calling smeshBuilder.Mesh.Tetrahedron( smeshBuilder.MG_Tetra_Optimization ) +class GHS3D_Optimizer(GHS3D_Algorithm): + + ## name of the dynamic method in smeshBuilder.Mesh class + # @internal + meshMethod = "Tetrahedron" + ## type of algorithm used with helper function in smeshBuilder.Mesh class + # @internal + algoType = MG_Tetra_Optimization + ## doc string of the method in smeshBuilder.Mesh class + # @internal + docHelper = "Creates MG-Tetra optimizer of tetrahedral meshes" + + ## Private constructor. + # @param mesh parent mesh object algorithm is assigned to + # @param geom - not used + def __init__(self, mesh, geom=0): + GHS3D_Algorithm.__init__(self, mesh) + + # remove some inherited methods + # del self.SetToMeshHoles + # del self.SetToMakeGroupsOfDomains + # del self.SetToUseBoundaryRecoveryVersion + # del self.SetFEMCorrection + # del self.SetToRemoveCentralPoint + # del self.SetEnforcedVertex + # del self.SetEnforcedVertexGeom + # del self.RemoveEnforcedVertex + # del self.RemoveEnforcedVertexGeom + # del self.SetEnforcedMesh + # del self.SetTextOption + pass + + ## Defines hypothesis having several parameters + # @return hypothesis object + def Parameters(self): + if not self.params: + self.params = self.Hypothesis("MG-Tetra Optimization Parameters", [], + "libGHS3DEngine.so", UseExisting=0) + pass + return self.params + + ## Set Optimization mode + # @param optMode optimization mode, one of the following values: + # smeshBuilder.Mode_NO, + # smeshBuilder.Mode_YES (default), + # smeshBuilder.MODE_ONLY + def SetOptimizationOnly(self, optMode ): + self.Parameters().SetOptimizationOnly(optMode) + pass + + ## Set mode of splitting over-constrained elements + # @param ovcMode, one of the following values + # smeshBuilder.Mode_NO (default), + # smeshBuilder.Mode_YES, + # smeshBuilder.Mode_ONLY + def SetSplitOverConstrained(self, ovcMode ): + self.Parameters().SetSplitOverConstrained(ovcMode) + pass + + ## Activate smoothing sliver elements: + # @param toSmooth - Boolean flag + def SetSmoothOffSlivers(self, toSmooth ): + self.Parameters().SetSmoothOffSlivers(toSmooth) + pass + + ## Set multithread mode + # @param mode - the mode, one of the following values: + # smeshBuilder.Mode_SAFE, + # smeshBuilder.Mode_AGGRESSIVE, + # smeshBuilder.Mode_NONE (default) + def SetPThreadsMode(self, mode ): + self.Parameters().SetPThreadsMode(mode) + pass + + ## Set maximal number of threads + # @param nb - number of threads + def SetMaximalNumberOfThreads(self, nb ): + self.Parameters().SetMaximalNumberOfThreads(nb) + pass + + + ## Set Optimization level: + # @param level optimization level, one of the following values + # - None_Optimization + # - Light_Optimization + # - Standard_Optimization + # - StandardPlus_Optimization + # - Strong_Optimization. + # . + # Default is Standard_Optimization + def SetOptimizationLevel(self, level): + self.Parameters().SetOptimizationLevel(level) + pass + + ## Set maximal size of memory to be used by the algorithm (in Megabytes). + # @param MB maximal size of memory + def SetMaximumMemory(self, MB): + self.Parameters().SetMaximumMemory(MB) + pass + + ## Set initial size of memory to be used by the algorithm (in Megabytes) in + # automatic memory adjustment mode. + # @param MB initial size of memory + def SetInitialMemory(self, MB): + self.Parameters().SetInitialMemory(MB) + pass + + ## Set path to working directory. + # @param path working directory + def SetWorkingDirectory(self, path): + self.Parameters().SetWorkingDirectory(path) + pass + + ## To keep working files or remove them. + # @param toKeep "keep working files" flag value + def SetKeepFiles(self, toKeep): + self.Parameters().SetKeepFiles(toKeep) + pass + + ## Remove or not the log file (if any) in case of successful computation. + # The log file remains in case of errors anyway. If + # the "keep working files" flag is set to true, this option + # has no effect. + # @param toRemove "remove log on success" flag value + def SetRemoveLogOnSuccess(self, toRemove): + self.Parameters().SetRemoveLogOnSuccess(toRemove) + pass + + ## Print the the log in a file. If set to false, the + # log is printed on the standard output + # @param toPrintLogInFile "print log in a file" flag value + def SetPrintLogInFile(self, toPrintLogInFile): + self.Parameters().SetStandardOutputLog(not toPrintLogInFile) + pass + + ## Set verbosity level [0-10]. + # @param level verbosity level + # - 0 - no standard output, + # - 2 - prints the data, quality statistics of the skin and final meshes and + # indicates when the final mesh is being saved. In addition the software + # gives indication regarding the CPU time. + # - 10 - same as 2 plus the main steps in the computation, quality statistics + # histogram of the skin mesh, quality statistics histogram together with + # the characteristics of the final mesh. + def SetVerboseLevel(self, level): + self.Parameters().SetVerboseLevel(level) + pass + + ## To create new nodes. + # @param toCreate "create new nodes" flag value + def SetToCreateNewNodes(self, toCreate): + self.Parameters().SetToCreateNewNodes(toCreate) + pass + + ## Sets command line option as text. + # @param option command line option + def SetAdvancedOption(self, option): + self.Parameters().SetAdvancedOption(option) + pass + + pass # end of GHS3D_Optimizer class