Salome HOME
Merge branch 'OCCT780'
[plugins/netgenplugin.git] / idl / NETGENPlugin_Algorithm.idl
1 // Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
2 //
3 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
5 //
6 // This library is free software; you can redistribute it and/or
7 // modify it under the terms of the GNU Lesser General Public
8 // License as published by the Free Software Foundation; either
9 // version 2.1 of the License, or (at your option) any later version.
10 //
11 // This library is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14 // Lesser General Public License for more details.
15 //
16 // You should have received a copy of the GNU Lesser General Public
17 // License along with this library; if not, write to the Free Software
18 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
19 //
20 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
21 //
22
23 //  File   : NETGENPlugin_Algorithm.idl
24 //  Author : Julia DOROVSKIKH
25 //
26 #ifndef _SMESH_NETGENALGORITHM_IDL_
27 #define _SMESH_NETGENALGORITHM_IDL_
28
29 #include "SALOME_Exception.idl"
30 #include "SMESH_Hypothesis.idl"
31 #include "SMESH_Group.idl"
32 #include "GEOM_Gen.idl"
33
34 /*!
35  * NETGENPlugin: interfaces to NETGEN related hypotheses and algorithms
36  */
37 module NETGENPlugin
38 {
39   typedef sequence<string> string_array;
40   /*!
41    * NETGENPlugin_NETGEN_3D: interface of "Tetrahedron (Netgen)" algorithm
42    */
43   interface NETGENPlugin_NETGEN_3D : SMESH::SMESH_3D_Algo
44   {
45   };
46
47   /*!
48    * NETGENPlugin_NETGEN_3D: interface of "Remote Tetrahedron (Netgen)" algorithm
49    */
50   interface NETGENPlugin_NETGEN_3D_Remote : NETGENPlugin::NETGENPlugin_NETGEN_3D
51   {
52   };
53
54   /*!
55    * NETGENPlugin_NETGEN_2D: interface of "Netgen 1D-2D" algorithm
56    */
57   interface NETGENPlugin_NETGEN_2D : SMESH::SMESH_2D_Algo
58   {
59   };
60
61   /*!
62    * NETGENPlugin_NETGEN_2D3D: interface of "Netgen 1D-2D-3D" algorithm
63    */
64   interface NETGENPlugin_NETGEN_2D3D : SMESH::SMESH_3D_Algo
65   {
66   };
67
68   /*!
69    * NETGENPlugin_NETGEN_2D_ONLY: interface of "Netgen 2D" algorithm,
70    * generating 2D elements on a geometrical face taking
71    * into account pre-existing nodes on face boundaries
72    */
73   interface NETGENPlugin_NETGEN_2D_ONLY : SMESH::SMESH_2D_Algo
74   {
75   };
76
77   /*!
78    * NETGENPlugin_NETGEN_2D: interface of "Remote Triangle (Netgen)" algorithm
79    */
80   interface NETGENPlugin_NETGEN_2D_Remote : NETGENPlugin::NETGENPlugin_NETGEN_2D_ONLY
81   {
82   };
83
84   /*!
85    * NETGENPlugin_Remesher_2D: interface of "NETGEN Remesher" algorithm,
86    * generating 2D elements basing on an existing 2D mesh
87    */
88   interface NETGENPlugin_Remesher_2D : SMESH::SMESH_2D_Algo
89   {
90   };
91
92   /*!
93    * NETGENPlugin_Hypothesis: interface of "NETGEN parameters" hypothesis
94    */
95   interface NETGENPlugin_Hypothesis : SMESH::SMESH_Hypothesis
96   {
97     void    SetMaxSize(in double value);
98     double  GetMaxSize();
99
100     void    SetMinSize(in double value);
101     double  GetMinSize();
102
103     void    SetSecondOrder(in boolean value);
104     boolean GetSecondOrder();
105
106     void    SetOptimize(in boolean value);
107     boolean GetOptimize();
108
109     void    SetFineness(in long value);
110     long    GetFineness();
111
112     void    SetGrowthRate(in double value);
113     double  GetGrowthRate();
114
115     void    SetNbSegPerEdge(in double value);
116     double  GetNbSegPerEdge();
117
118     void    SetChordalErrorEnabled(in boolean value);
119     boolean GetChordalErrorEnabled();
120     void    SetChordalError(in double value);
121     double  GetChordalError();
122
123     void    SetNbSegPerRadius(in double value);
124     double  GetNbSegPerRadius();
125
126     void    SetQuadAllowed(in boolean value);
127     boolean GetQuadAllowed();
128
129     void    SetUseSurfaceCurvature(in boolean value);
130     boolean GetUseSurfaceCurvature();
131
132     void    SetFuseEdges(in boolean value);
133     boolean GetFuseEdges();
134
135     void    SetLocalSizeOnShape(in GEOM::GEOM_Object GeomObj, in double localSize)
136       raises (SALOME::SALOME_Exception);
137     void    SetLocalSizeOnEntry(in string entry, in double localSize);
138     double  GetLocalSizeOnEntry(in string entry);
139     string_array GetLocalSizeEntries();
140     void    UnsetLocalSizeOnEntry(in string entry);
141
142     void    SetMeshSizeFile(in string fileName);
143     string  GetMeshSizeFile();
144
145     void    SetNbSurfOptSteps(in short nb );
146     short   GetNbSurfOptSteps();
147
148     void    SetNbVolOptSteps(in short nb );
149     short   GetNbVolOptSteps();
150
151     void    SetElemSizeWeight(in double size );
152     double  GetElemSizeWeight();
153
154     void    SetWorstElemMeasure(in short val );
155     short   GetWorstElemMeasure();
156
157     void    SetNbThreads(in short val );
158     short   GetNbThreads();
159
160     void    SetUseDelauney(in boolean toUse);
161     boolean GetUseDelauney();
162
163     void    SetCheckOverlapping(in boolean toCheck );
164     boolean GetCheckOverlapping();
165
166     void    SetCheckChartBoundary(in boolean toCheck );
167     boolean GetCheckChartBoundary();
168   };
169
170   /*!
171    * NETGENPlugin_Hypothesis_2D: interface of "NETGEN 2D parameters" hypothesis
172    */
173   interface NETGENPlugin_Hypothesis_2D : NETGENPlugin_Hypothesis
174   {
175   };
176
177   /*!
178    * interface of "NETGEN 2D parameters" hypothesis used by NETGENPlugin_NETGEN_2D_ONLY algorithm
179    */
180   interface NETGENPlugin_Hypothesis_2D_ONLY : NETGENPlugin_Hypothesis_2D
181   {
182   };
183
184   /*!
185    * interface of "NETGEN 3D parameters" hypothesis used by NETGENPlugin_NETGEN_3D algorithm
186    */
187   interface NETGENPlugin_Hypothesis_3D : NETGENPlugin_Hypothesis
188   {
189   };
190
191   /*!
192    * interface of "NETGEN Remesher parameters" hypothesis used by NETGENPlugin_Remesher_2D algorithm
193    */
194   interface NETGENPlugin_RemesherHypothesis_2D : NETGENPlugin_Hypothesis_2D
195   {
196     /*!
197      * \brief Set/get ridge angle
198      */
199     void    SetRidgeAngle(in double angle );
200     double  GetRidgeAngle();
201
202     void    SetEdgeCornerAngle(in double angle );
203     double  GetEdgeCornerAngle();
204
205     void    SetChartAngle(in double angle );
206     double  GetChartAngle();
207
208     void    SetOuterChartAngle(in double angle );
209     double  GetOuterChartAngle();
210
211     void    SetRestHChartDistFactor(in double f );
212     double  GetRestHChartDistFactor();
213
214     void    SetRestHChartDistEnable(in boolean enable );
215     boolean GetRestHChartDistEnable();
216
217     void    SetRestHLineLengthFactor(in double f );
218     double  GetRestHLineLengthFactor();
219
220     void    SetRestHLineLengthEnable(in boolean enable );
221     boolean GetRestHLineLengthEnable();
222
223     void    SetRestHCloseEdgeFactor(in double f );
224     double  GetRestHCloseEdgeFactor();
225
226     void    SetRestHCloseEdgeEnable(in boolean enable );
227     boolean GetRestHCloseEdgeEnable();
228
229     void    SetRestHSurfCurvFactor(in double f );
230     double  GetRestHSurfCurvFactor();
231
232     void    SetRestHSurfCurvEnable(in boolean enable );
233     boolean GetRestHSurfCurvEnable();
234
235     void    SetRestHEdgeAngleFactor(in double f );
236     double  GetRestHEdgeAngleFactor();
237
238     void    SetRestHEdgeAngleEnable(in boolean enable );
239     boolean GetRestHEdgeAngleEnable();
240
241     void    SetRestHSurfMeshCurvFactor(in double f );
242     double  GetRestHSurfMeshCurvFactor();
243
244     void    SetRestHSurfMeshCurvEnable(in boolean enable );
245     boolean GetRestHSurfMeshCurvEnable();
246
247     void    SetKeepExistingEdges(in boolean toKeep );
248     boolean GetKeepExistingEdges();
249
250     void    SetMakeGroupsOfSurfaces(in boolean toMake );
251     boolean GetMakeGroupsOfSurfaces();
252
253     void    SetLoadMeshOnCancel(in boolean toLoad );
254     boolean GetLoadMeshOnCancel();
255
256     void SetFixedEdgeGroup( in SMESH::SMESH_GroupBase edgeGroup );
257     SMESH::SMESH_GroupBase GetFixedEdgeGroup( in SMESH::SMESH_Mesh mesh );
258   };
259
260   /*!
261    * NETGENPlugin_Hypothesis: interface of "NETGEN 2D simple parameters" hypothesis
262    */
263   interface NETGENPlugin_SimpleHypothesis_2D : SMESH::SMESH_Hypothesis
264   {
265     /*!
266      * Sets <number of segments> value
267      */
268     void SetNumberOfSegments(in long nb) raises (SALOME::SALOME_Exception);
269     /*!
270      * Returns <number of segments> value.
271      * Can be zero in case if LocalLength() has been set
272      */
273     long GetNumberOfSegments();
274
275     /*!
276      * Sets <segment length> value
277      */
278     void SetLocalLength(in double segmentLength);
279     /*!
280      * Returns <segment length> value.
281      * Can be zero in case if NumberOfSegments() has been set
282      */
283     double GetLocalLength();
284
285     /*!
286      * Sets <maximum element area> to be dependent on 1D discretization
287      */
288     void LengthFromEdges();
289     /*!
290      * Sets <maximum element area> value.
291      * Zero or negative value means same as LengthFromEdges().
292      */
293     void SetMaxElementArea(in double area);
294     /*!
295      * Returns <maximum element area> value.
296      * Can be zero in case of LengthFromEdges()
297      */
298     double GetMaxElementArea();
299
300     /*!
301      * Enables/disables generation of quadrangular faces
302      */
303     void SetAllowQuadrangles(in boolean toAllow);
304     /*!
305      * Returns true if generation of quadrangular faces is enabled
306      */
307     boolean GetAllowQuadrangles();
308   };
309
310   /*!
311    * NETGENPlugin_SimpleHypothesis_3D: interface of "NETGEN 3D simple parameters" hypothesis
312    */
313   interface NETGENPlugin_SimpleHypothesis_3D : NETGENPlugin_SimpleHypothesis_2D
314   {
315     /*!
316      * Sets <maximum element volume> to be dependent on 2D discretization
317      */
318     void LengthFromFaces();
319     /*!
320      * Sets <maximum element volume> value.
321      * Zero or negative value means same as LengthFromFaces().
322      */
323     void SetMaxElementVolume(in double volume);
324
325     /*!
326      * Returns <maximum element volume> value
327      * Can be zero in case of LengthFromFaces()
328      */
329     double GetMaxElementVolume();
330   };
331
332 };
333
334 #endif