Salome HOME
Revert "Merge branch 'yan/parallel_mesh2'"
[plugins/netgenplugin.git] / idl / NETGENPlugin_Algorithm.idl
1 // Copyright (C) 2007-2022  CEA/DEN, EDF R&D, 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_2D: interface of "Netgen 1D-2D" algorithm
49    */
50   interface NETGENPlugin_NETGEN_2D : SMESH::SMESH_2D_Algo
51   {
52   };
53
54   /*!
55    * NETGENPlugin_NETGEN_2D3D: interface of "Netgen 1D-2D-3D" algorithm
56    */
57   interface NETGENPlugin_NETGEN_2D3D : SMESH::SMESH_3D_Algo
58   {
59   };
60
61   /*!
62    * NETGENPlugin_NETGEN_2D_ONLY: interface of "Netgen 2D" algorithm,
63    * generating 2D elements on a geometrical face taking
64    * into account pre-existing nodes on face boundaries
65    */
66   interface NETGENPlugin_NETGEN_2D_ONLY : SMESH::SMESH_2D_Algo
67   {
68   };
69
70   /*!
71    * NETGENPlugin_Remesher_2D: interface of "NETGEN Remesher" algorithm,
72    * generating 2D elements basing on an existing 2D mesh
73    */
74   interface NETGENPlugin_Remesher_2D : SMESH::SMESH_2D_Algo
75   {
76   };
77
78   /*!
79    * NETGENPlugin_Hypothesis: interface of "NETGEN parameters" hypothesis
80    */
81   interface NETGENPlugin_Hypothesis : SMESH::SMESH_Hypothesis
82   {
83     void    SetMaxSize(in double value);
84     double  GetMaxSize();
85
86     void    SetMinSize(in double value);
87     double  GetMinSize();
88
89     void    SetSecondOrder(in boolean value);
90     boolean GetSecondOrder();
91
92     void    SetOptimize(in boolean value);
93     boolean GetOptimize();
94
95     void    SetFineness(in long value);
96     long    GetFineness();
97
98     void    SetGrowthRate(in double value);
99     double  GetGrowthRate();
100
101     void    SetNbSegPerEdge(in double value);
102     double  GetNbSegPerEdge();
103
104     void    SetChordalErrorEnabled(in boolean value);
105     boolean GetChordalErrorEnabled();
106     void    SetChordalError(in double value);
107     double  GetChordalError();
108
109     void    SetNbSegPerRadius(in double value);
110     double  GetNbSegPerRadius();
111
112     void    SetQuadAllowed(in boolean value);
113     boolean GetQuadAllowed();
114     
115     void    SetUseSurfaceCurvature(in boolean value);
116     boolean GetUseSurfaceCurvature();
117     
118     void    SetFuseEdges(in boolean value);
119     boolean GetFuseEdges();
120
121     void    SetLocalSizeOnShape(in GEOM::GEOM_Object GeomObj, in double localSize)
122       raises (SALOME::SALOME_Exception);
123     void    SetLocalSizeOnEntry(in string entry, in double localSize);
124     double  GetLocalSizeOnEntry(in string entry);
125     string_array GetLocalSizeEntries();
126     void    UnsetLocalSizeOnEntry(in string entry);
127
128     void    SetMeshSizeFile(in string fileName);
129     string  GetMeshSizeFile();
130
131     void    SetNbSurfOptSteps(in short nb );
132     short   GetNbSurfOptSteps();
133
134     void    SetNbVolOptSteps(in short nb );
135     short   GetNbVolOptSteps();
136
137     void    SetElemSizeWeight(in double size );
138     double  GetElemSizeWeight();
139
140     void    SetWorstElemMeasure(in short val );
141     short   GetWorstElemMeasure();
142
143     void    SetUseDelauney(in boolean toUse);
144     boolean GetUseDelauney();
145
146     void    SetCheckOverlapping(in boolean toCheck );
147     boolean GetCheckOverlapping();
148
149     void    SetCheckChartBoundary(in boolean toCheck );
150     boolean GetCheckChartBoundary();
151   };
152
153   /*!
154    * NETGENPlugin_Hypothesis_2D: interface of "NETGEN 2D parameters" hypothesis
155    */
156   interface NETGENPlugin_Hypothesis_2D : NETGENPlugin_Hypothesis
157   {
158   };
159
160   /*!
161    * interface of "NETGEN 2D parameters" hypothesis used by NETGENPlugin_NETGEN_2D_ONLY algorithm
162    */
163   interface NETGENPlugin_Hypothesis_2D_ONLY : NETGENPlugin_Hypothesis_2D
164   {
165   };
166
167   /*!
168    * interface of "NETGEN 3D parameters" hypothesis used by NETGENPlugin_NETGEN_3D algorithm
169    */
170   interface NETGENPlugin_Hypothesis_3D : NETGENPlugin_Hypothesis
171   {
172   };
173
174   /*!
175    * interface of "NETGEN Remesher parameters" hypothesis used by NETGENPlugin_Remesher_2D algorithm
176    */
177   interface NETGENPlugin_RemesherHypothesis_2D : NETGENPlugin_Hypothesis_2D
178   {
179     /*!
180      * \brief Set/get ridge angle
181      */
182     void    SetRidgeAngle(in double angle );
183     double  GetRidgeAngle();
184
185     void    SetEdgeCornerAngle(in double angle );
186     double  GetEdgeCornerAngle();
187
188     void    SetChartAngle(in double angle );
189     double  GetChartAngle();
190
191     void    SetOuterChartAngle(in double angle );
192     double  GetOuterChartAngle();
193
194     void    SetRestHChartDistFactor(in double f );
195     double  GetRestHChartDistFactor();
196
197     void    SetRestHChartDistEnable(in boolean enable );
198     boolean GetRestHChartDistEnable();
199
200     void    SetRestHLineLengthFactor(in double f );
201     double  GetRestHLineLengthFactor();
202
203     void    SetRestHLineLengthEnable(in boolean enable );
204     boolean GetRestHLineLengthEnable();
205
206     void    SetRestHCloseEdgeFactor(in double f );
207     double  GetRestHCloseEdgeFactor();
208
209     void    SetRestHCloseEdgeEnable(in boolean enable );
210     boolean GetRestHCloseEdgeEnable();
211
212     void    SetRestHSurfCurvFactor(in double f );
213     double  GetRestHSurfCurvFactor();
214
215     void    SetRestHSurfCurvEnable(in boolean enable );
216     boolean GetRestHSurfCurvEnable();
217
218     void    SetRestHEdgeAngleFactor(in double f );
219     double  GetRestHEdgeAngleFactor();
220
221     void    SetRestHEdgeAngleEnable(in boolean enable );
222     boolean GetRestHEdgeAngleEnable();
223
224     void    SetRestHSurfMeshCurvFactor(in double f );
225     double  GetRestHSurfMeshCurvFactor();
226
227     void    SetRestHSurfMeshCurvEnable(in boolean enable );
228     boolean GetRestHSurfMeshCurvEnable();
229
230     void    SetKeepExistingEdges(in boolean toKeep );
231     boolean GetKeepExistingEdges();
232
233     void    SetMakeGroupsOfSurfaces(in boolean toMake );
234     boolean GetMakeGroupsOfSurfaces();
235
236     void    SetLoadMeshOnCancel(in boolean toLoad );
237     boolean GetLoadMeshOnCancel();
238
239     void SetFixedEdgeGroup( in SMESH::SMESH_GroupBase edgeGroup );
240     SMESH::SMESH_GroupBase GetFixedEdgeGroup( in SMESH::SMESH_Mesh mesh );
241   };
242
243   /*!
244    * NETGENPlugin_Hypothesis: interface of "NETGEN 2D simple parameters" hypothesis
245    */
246   interface NETGENPlugin_SimpleHypothesis_2D : SMESH::SMESH_Hypothesis
247   {
248     /*!
249      * Sets <number of segments> value
250      */
251     void SetNumberOfSegments(in long nb) raises (SALOME::SALOME_Exception);
252     /*!
253      * Returns <number of segments> value.
254      * Can be zero in case if LocalLength() has been set
255      */
256     long GetNumberOfSegments();
257
258     /*!
259      * Sets <segment length> value
260      */
261     void SetLocalLength(in double segmentLength);
262     /*!
263      * Returns <segment length> value.
264      * Can be zero in case if NumberOfSegments() has been set
265      */
266     double GetLocalLength();
267
268     /*!
269      * Sets <maximum element area> to be dependent on 1D discretization
270      */
271     void LengthFromEdges();
272     /*!
273      * Sets <maximum element area> value.
274      * Zero or negative value means same as LengthFromEdges().
275      */
276     void SetMaxElementArea(in double area);
277     /*!
278      * Returns <maximum element area> value.
279      * Can be zero in case of LengthFromEdges()
280      */
281     double GetMaxElementArea();
282
283     /*!
284      * Enables/disables generation of quadrangular faces
285      */
286     void SetAllowQuadrangles(in boolean toAllow);
287     /*!
288      * Returns true if generation of quadrangular faces is enabled
289      */
290     boolean GetAllowQuadrangles();
291   };
292
293   /*!
294    * NETGENPlugin_SimpleHypothesis_3D: interface of "NETGEN 3D simple parameters" hypothesis
295    */
296   interface NETGENPlugin_SimpleHypothesis_3D : NETGENPlugin_SimpleHypothesis_2D
297   {
298     /*!
299      * Sets <maximum element volume> to be dependent on 2D discretization
300      */
301     void LengthFromFaces();
302     /*!
303      * Sets <maximum element volume> value.
304      * Zero or negative value means same as LengthFromFaces().
305      */
306     void SetMaxElementVolume(in double volume);
307
308     /*!
309      * Returns <maximum element volume> value
310      * Can be zero in case of LengthFromFaces()
311      */
312     double GetMaxElementVolume();
313   };
314
315 };
316
317 #endif