1 // Copyright (C) 2004-2013 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.
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
20 // File : HYBRID_Algorithm.idl
21 // Author : Julia DOROVSKIKH
23 #ifndef _HYBRID_Algorithm_IDL_
24 #define _HYBRID_Algorithm_IDL_
26 #include "SALOME_Exception.idl"
27 #include "SMESH_Hypothesis.idl"
28 #include "SMESH_Mesh.idl"
31 * HYBRIDPlugin: interfaces to HYBRID related hypotheses and algorithms
35 typedef sequence<double,3> TCoords;
36 struct HYBRIDEnforcedVertex {
45 typedef sequence<HYBRIDEnforcedVertex> HYBRIDEnforcedVertexList;
47 struct HYBRIDEnforcedMesh {
50 SMESH::ElementType elementType;
54 typedef sequence<HYBRIDEnforcedMesh> HYBRIDEnforcedMeshList;
57 * HYBRIDPlugin_HYBRID: interface of "Tetrahedron (HYBRID)" algorithm
59 interface HYBRIDPlugin_HYBRID : SMESH::SMESH_3D_Algo
61 SMESH::SMESH_Mesh importGMFMesh(in string aGMFFileName);
65 * Parameters of "Tetrahedron (HYBRID)" algorithm
67 interface HYBRIDPlugin_Hypothesis : SMESH::SMESH_Hypothesis
70 * To mesh "holes" in a solid or not. Default is to mesh.
72 void SetToMeshHoles(in boolean toMesh);
73 boolean GetToMeshHoles();
75 * To make groups of volumes of different domains when mesh is generated from skin.
76 * Default is to make groups.
77 * This option works only (1) for the mesh w/o shape and (2) if GetToMeshHoles() == true
79 void SetToMakeGroupsOfDomains(in boolean toMakeGroups);
80 boolean GetToMakeGroupsOfDomains();
82 * Maximal size of memory to be used by the algorithm (in Megabytes).
83 * Negative value means not to use this option
85 void SetMaximumMemory(in double MB) raises (SALOME::SALOME_Exception);
86 double GetMaximumMemory();
88 * Initial size of memory to be used by the algorithm (in Megabytes) in
89 * automatic memory adjustment mode. Default is zero.
90 * Negative value means not to use this option
92 void SetInitialMemory(in double MB) raises (SALOME::SALOME_Exception);
93 double GetInitialMemory();
95 * Optimization level: 0-none, 1-light, 2-medium, 3-strong. Default is medium
97 void SetOptimizationLevel(in short level) raises (SALOME::SALOME_Exception);
98 short GetOptimizationLevel();
102 * To mesh Boundary Layers growing inward or outward.
105 void SetBoundaryLayersInward(in boolean toBoundaryLayersInward);
106 boolean GetBoundaryLayersInward();
108 * To mesh with element type Tetra Dominant or hexa Dominant in the boundary layers.
109 * Default is Tetra Dominant.
111 void SetElemGenTetraDominant(in boolean toElemGenTetraDominant);
112 boolean GetElemGenTetraDominant();
114 * To mesh adding extra normals at opening ridges and corners.
117 void SetAddMultinormals(in boolean toAddMultinormals);
118 boolean GetAddMultinormals();
120 * To mesh smoothing normals at closed ridges and corners.
123 void SetSmoothNormals(in boolean toSmoothNormals);
124 boolean GetSmoothNormals();
126 * To set height of the first layer.
128 void SetHeightFirstLayer(in double HFL) raises (SALOME::SALOME_Exception);
129 double GetHeightFirstLayer();
131 * To set boundary layers coefficient of geometric progression.
134 void SetBoundaryLayersProgression(in double BLP) raises (SALOME::SALOME_Exception);
135 double GetBoundaryLayersProgression();
137 * To set multinormals angle threshold at opening ridges.
140 void SetMultinormalsAngle(in double MNA) raises (SALOME::SALOME_Exception);
141 double GetMultinormalsAngle();
143 * To set number of boundary layers.
146 void SetNbOfBoundaryLayers(in short NBL) raises (SALOME::SALOME_Exception);
147 short GetNbOfBoundaryLayers();
152 * Path to working directory
154 void SetWorkingDirectory(in string path) raises (SALOME::SALOME_Exception);
155 string GetWorkingDirectory();
157 * To keep working files or remove them. Log file remains in case of errors anyway.
159 void SetKeepFiles(in boolean toKeep);
160 boolean GetKeepFiles();
162 * Verbose level [0-10]
163 * 0 - no standard output,
164 * 2 - prints the data, quality statistics of the skin and final meshes and
165 * indicates when the final mesh is being saved. In addition the software
166 * gives indication regarding the CPU time.
167 * 10 - same as 2 plus the main steps in the computation, quality statistics
168 * histogram of the skin mesh, quality statistics histogram together with
169 * the characteristics of the final mesh.
171 void SetVerboseLevel(in short level);
172 short GetVerboseLevel();
174 * To create new nodes
176 void SetToCreateNewNodes(in boolean toCreate);
177 boolean GetToCreateNewNodes();
179 * To use boundary recovery version which tries to create mesh on a very poor
180 * quality surface mesh
182 void SetToUseBoundaryRecoveryVersion(in boolean toUse);
183 boolean GetToUseBoundaryRecoveryVersion();
185 * Applies finite-element correction by replacing overconstrained elements where
186 * it is possible. The process is cutting first the overconstrained edges and
187 * second the overconstrained facets. This insure that no edges have two boundary
188 * vertices and that no facets have three boundary vertices.
190 void SetFEMCorrection(in boolean toUseFem);
191 boolean GetFEMCorrection();
193 * To removes initial central point.
195 void SetToRemoveCentralPoint(in boolean toRemove);
196 boolean GetToRemoveCentralPoint();
198 * To set hiden/undocumented/advanced options
200 void SetTextOption(in string option);
201 string GetTextOption();
203 * To define the volumic gradation
205 void SetGradation(in double gradation);
206 double GetGradation();
208 * Print log in standard output
210 void SetStandardOutputLog(in boolean logInStandardOutput);
211 boolean GetStandardOutputLog();
213 * Remove log file on success
215 void SetRemoveLogOnSuccess(in boolean removeLogOnSuccess);
216 boolean GetRemoveLogOnSuccess();
218 * To set an enforced vertex
220 boolean SetEnforcedVertex(in double x, in double y, in double z, in double size) raises (SALOME::SALOME_Exception);
221 boolean SetEnforcedVertexNamed(in double x, in double y, in double z, in double size, in string vertexName) raises (SALOME::SALOME_Exception);
222 boolean SetEnforcedVertexWithGroup(in double x, in double y, in double z, in double size, in string groupName) raises (SALOME::SALOME_Exception);
223 boolean SetEnforcedVertexNamedWithGroup(in double x, in double y, in double z, in double size, in string vertexName, in string groupName) raises (SALOME::SALOME_Exception);
224 boolean SetEnforcedVertexGeom(in GEOM::GEOM_Object theVertex, in double size) raises (SALOME::SALOME_Exception);
225 boolean SetEnforcedVertexGeomWithGroup(in GEOM::GEOM_Object theVertex, in double size, in string groupName) raises (SALOME::SALOME_Exception);
226 double GetEnforcedVertex(in double x, in double y, in double z) raises (SALOME::SALOME_Exception);
227 double GetEnforcedVertexGeom(in GEOM::GEOM_Object theVertex) raises (SALOME::SALOME_Exception);
228 boolean RemoveEnforcedVertex(in double x, in double y, in double z) raises (SALOME::SALOME_Exception);
229 boolean RemoveEnforcedVertexGeom(in GEOM::GEOM_Object theVertex) raises (SALOME::SALOME_Exception);
230 HYBRIDEnforcedVertexList GetEnforcedVertices();
231 void ClearEnforcedVertices();
233 * Set/get/unset an enforced vertex (private method for GUI)
235 boolean p_SetEnforcedVertex(in double size, in double x, in double y, in double z,
236 in string theVertexName, in string theVertexEntry, in string groupName,
237 in boolean isCompound) raises (SALOME::SALOME_Exception);
239 boolean SetEnforcedMesh(in SMESH::SMESH_IDSource theSource, in SMESH::ElementType elementType) raises (SALOME::SALOME_Exception);
240 boolean SetEnforcedMeshWithGroup(in SMESH::SMESH_IDSource theSource, in SMESH::ElementType elementType, in string groupName) raises (SALOME::SALOME_Exception);
242 /* OBSOLETE FUNCTIONS */
243 boolean SetEnforcedMeshSize(in SMESH::SMESH_IDSource theSource, in SMESH::ElementType elementType, in double size) raises (SALOME::SALOME_Exception);
244 boolean SetEnforcedMeshSizeWithGroup(in SMESH::SMESH_IDSource theSource, in SMESH::ElementType elementType, in double size, in string groupName) raises (SALOME::SALOME_Exception);
245 /* OBSOLETE FUNCTIONS */
247 HYBRIDEnforcedMeshList GetEnforcedMeshes();
248 void ClearEnforcedMeshes();
251 * Set/get/unset an enforced vertex (private method for GUI)
253 boolean p_SetEnforcedMesh(in SMESH::SMESH_IDSource theSource, in SMESH::ElementType elementType, in string name, in string groupName) raises (SALOME::SALOME_Exception);