1 // Copyright (C) 2007-2016 CEA/DEN, EDF R&D
3 // This library is free software; you can redistribute it and/or
4 // modify it under the terms of the GNU Lesser General Public
5 // License as published by the Free Software Foundation; either
6 // version 2.1 of the License, or (at your option) any later version.
8 // This library is distributed in the hope that it will be useful,
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11 // Lesser General Public License for more details.
13 // You should have received a copy of the GNU Lesser General Public
14 // License along with this library; if not, write to the Free Software
15 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
21 // File : HYBRIDPlugin_Algorithm.idl
22 // Author : Christian VAN WAMBEKE (CEA)
25 #ifndef _HYBRID_Algorithm_IDL_
26 #define _HYBRID_Algorithm_IDL_
28 #include "SALOME_Exception.idl"
29 #include "SMESH_Hypothesis.idl"
30 #include "SMESH_Mesh.idl"
33 * HYBRIDPlugin: interfaces to HYBRID related hypotheses and algorithms
37 typedef sequence<double,3> TCoords;
38 struct HYBRIDEnforcedVertex {
47 typedef sequence<HYBRIDEnforcedVertex> HYBRIDEnforcedVertexList;
49 struct HYBRIDEnforcedMesh {
52 SMESH::ElementType elementType;
56 typedef sequence<HYBRIDEnforcedMesh> HYBRIDEnforcedMeshList;
59 * HYBRIDPlugin_HYBRID: interface of "Tetra-hexahedron (HYBRID)" algorithm
61 interface HYBRIDPlugin_HYBRID : SMESH::SMESH_3D_Algo
63 SMESH::SMESH_Mesh importGMFMesh(in string aGMFFileName);
67 * Parameters of "Tetra-hexahedron (HYBRID)" algorithm
69 interface HYBRIDPlugin_Hypothesis : SMESH::SMESH_Hypothesis
72 * To mesh "holes" in a solid or not. Default is to mesh.
74 void SetToMeshHoles(in boolean toMesh);
75 boolean GetToMeshHoles();
77 * To mesh layers on all wrap Default is yes.
79 void SetLayersOnAllWrap(in boolean toMesh);
80 boolean GetLayersOnAllWrap();
82 * To mesh layers on given faces.
84 void SetFacesWithLayers(in SMESH::long_array faceIDs);
85 SMESH::long_array GetFacesWithLayers();
87 * To make groups of volumes of different domains when mesh is generated from skin.
88 * Default is to make groups.
89 * This option works only (1) for the mesh w/o shape and (2) if GetToMeshHoles() == true
91 void SetToMakeGroupsOfDomains(in boolean toMakeGroups);
92 boolean GetToMakeGroupsOfDomains();
94 * Maximal size of memory to be used by the algorithm (in Megabytes).
95 * Negative value means not to use this option
97 void SetMaximumMemory(in double MB) raises (SALOME::SALOME_Exception);
98 double GetMaximumMemory();
100 * Initial size of memory to be used by the algorithm (in Megabytes) in
101 * automatic memory adjustment mode. Default is zero.
102 * Negative value means not to use this option
104 void SetInitialMemory(in double MB) raises (SALOME::SALOME_Exception);
105 double GetInitialMemory();
107 * Optimization level: 0-none, 1-light, 2-medium, 3-strong. Default is medium
109 void SetOptimizationLevel(in short level) raises (SALOME::SALOME_Exception);
110 short GetOptimizationLevel();
114 * Collision mode: 0-decrease, 1-stop. Default is decrease
116 void SetCollisionMode(in short level) raises (SALOME::SALOME_Exception);
117 short GetCollisionMode();
119 * BoundaryLayersGrowth: 0-Layer_Growth_Inward, 1-Layer_Growth_Outward. Default is Layer_Growth_Inward
121 void SetBoundaryLayersGrowth(in short level) raises (SALOME::SALOME_Exception);
122 short GetBoundaryLayersGrowth();
124 * ElementGeneration: 0-Generation_Tetra_Dominant, 1-Generation_Hexa_Dominant, 2-Generation_Cartesian_Core. Default is Generation_Tetra_Dominant
126 void SetElementGeneration(in short level) raises (SALOME::SALOME_Exception);
127 short GetElementGeneration();
130 * To mesh adding extra normals at opening ridges and corners.
133 void SetAddMultinormals(in boolean toAddMultinormals);
134 boolean GetAddMultinormals();
136 * To mesh smoothing normals at closed ridges and corners.
139 void SetSmoothNormals(in boolean toSmoothNormals);
140 boolean GetSmoothNormals();
142 * To set height of the first layer.
144 void SetHeightFirstLayer(in double HFL) raises (SALOME::SALOME_Exception);
145 double GetHeightFirstLayer();
147 * To set boundary layers coefficient of geometric progression.
150 void SetBoundaryLayersProgression(in double BLP) raises (SALOME::SALOME_Exception);
151 double GetBoundaryLayersProgression();
156 void SetCoreSize(in double CS) raises (SALOME::SALOME_Exception);
157 double GetCoreSize();
159 * To set multinormals angle threshold at opening ridges.
162 void SetMultinormalsAngle(in double MNA) raises (SALOME::SALOME_Exception);
163 double GetMultinormalsAngle();
165 * To set number of boundary layers.
168 void SetNbOfBoundaryLayers(in short NBL) raises (SALOME::SALOME_Exception);
169 short GetNbOfBoundaryLayers();
174 * Path to working directory
176 void SetWorkingDirectory(in string path) raises (SALOME::SALOME_Exception);
177 string GetWorkingDirectory();
179 * To keep working files or remove them. Log file remains in case of errors anyway.
181 void SetKeepFiles(in boolean toKeep);
182 boolean GetKeepFiles();
184 * Verbose level [0-10]
185 * 0 - no standard output,
186 * 2 - prints the data, quality statistics of the skin and final meshes and
187 * indicates when the final mesh is being saved. In addition the software
188 * gives indication regarding the CPU time.
189 * 10 - same as 2 plus the main steps in the computation, quality statistics
190 * histogram of the skin mesh, quality statistics histogram together with
191 * the characteristics of the final mesh.
193 void SetVerboseLevel(in short level);
194 short GetVerboseLevel();
196 * To create new nodes
198 void SetToCreateNewNodes(in boolean toCreate);
199 boolean GetToCreateNewNodes();
201 * To use boundary recovery version which tries to create mesh on a very poor
202 * quality surface mesh
204 void SetToUseBoundaryRecoveryVersion(in boolean toUse);
205 boolean GetToUseBoundaryRecoveryVersion();
207 * Applies finite-element correction by replacing overconstrained elements where
208 * it is possible. The process is cutting first the overconstrained edges and
209 * second the overconstrained facets. This insure that no edges have two boundary
210 * vertices and that no facets have three boundary vertices.
212 void SetFEMCorrection(in boolean toUseFem);
213 boolean GetFEMCorrection();
215 * To removes initial central point.
217 void SetToRemoveCentralPoint(in boolean toRemove);
218 boolean GetToRemoveCentralPoint();
220 * To set hiden/undocumented/advanced options
222 void SetAdvancedOption( in string optAndVals );
223 string GetAdvancedOption();
224 void SetTextOption(in string option); // obsolete
225 string GetTextOption();
227 * To define the volumic gradation
229 void SetGradation(in double gradation);
230 double GetGradation();
232 * Print log in standard output
234 void SetStandardOutputLog(in boolean logInStandardOutput);
235 boolean GetStandardOutputLog();
237 * Remove log file on success
239 void SetRemoveLogOnSuccess(in boolean removeLogOnSuccess);
240 boolean GetRemoveLogOnSuccess();
242 * To set an enforced vertex
244 boolean SetEnforcedVertex(in double x, in double y, in double z, in double size) raises (SALOME::SALOME_Exception);
245 boolean SetEnforcedVertexNamed(in double x, in double y, in double z, in double size, in string vertexName) raises (SALOME::SALOME_Exception);
246 boolean SetEnforcedVertexWithGroup(in double x, in double y, in double z, in double size, in string groupName) raises (SALOME::SALOME_Exception);
247 boolean SetEnforcedVertexNamedWithGroup(in double x, in double y, in double z, in double size, in string vertexName, in string groupName) raises (SALOME::SALOME_Exception);
248 boolean SetEnforcedVertexGeom(in GEOM::GEOM_Object theVertex, in double size) raises (SALOME::SALOME_Exception);
249 boolean SetEnforcedVertexGeomWithGroup(in GEOM::GEOM_Object theVertex, in double size, in string groupName) raises (SALOME::SALOME_Exception);
250 double GetEnforcedVertex(in double x, in double y, in double z) raises (SALOME::SALOME_Exception);
251 double GetEnforcedVertexGeom(in GEOM::GEOM_Object theVertex) raises (SALOME::SALOME_Exception);
252 boolean RemoveEnforcedVertex(in double x, in double y, in double z) raises (SALOME::SALOME_Exception);
253 boolean RemoveEnforcedVertexGeom(in GEOM::GEOM_Object theVertex) raises (SALOME::SALOME_Exception);
254 HYBRIDEnforcedVertexList GetEnforcedVertices();
255 void ClearEnforcedVertices();
257 * Set/get/unset an enforced vertex (private method for GUI)
259 boolean p_SetEnforcedVertex(in double size, in double x, in double y, in double z,
260 in string theVertexName, in string theVertexEntry, in string groupName,
261 in boolean isCompound) raises (SALOME::SALOME_Exception);
263 boolean SetEnforcedMesh(in SMESH::SMESH_IDSource theSource, in SMESH::ElementType elementType) raises (SALOME::SALOME_Exception);
264 boolean SetEnforcedMeshWithGroup(in SMESH::SMESH_IDSource theSource, in SMESH::ElementType elementType, in string groupName) raises (SALOME::SALOME_Exception);
266 /* OBSOLETE FUNCTIONS */
267 boolean SetEnforcedMeshSize(in SMESH::SMESH_IDSource theSource, in SMESH::ElementType elementType, in double size) raises (SALOME::SALOME_Exception);
268 boolean SetEnforcedMeshSizeWithGroup(in SMESH::SMESH_IDSource theSource, in SMESH::ElementType elementType, in double size, in string groupName) raises (SALOME::SALOME_Exception);
269 /* OBSOLETE FUNCTIONS */
271 HYBRIDEnforcedMeshList GetEnforcedMeshes();
272 void ClearEnforcedMeshes();
275 * Set/get/unset an enforced vertex (private method for GUI)
277 boolean p_SetEnforcedMesh(in SMESH::SMESH_IDSource theSource, in SMESH::ElementType elementType, in string name, in string groupName) raises (SALOME::SALOME_Exception);