1 // Copyright (C) 2007-2023 CEA, EDF, OPEN CASCADE
3 // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
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.
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.
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
20 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
23 // File : NETGENPlugin_Algorithm.idl
24 // Author : Julia DOROVSKIKH
26 #ifndef _SMESH_NETGENALGORITHM_IDL_
27 #define _SMESH_NETGENALGORITHM_IDL_
29 #include "SALOME_Exception.idl"
30 #include "SMESH_Hypothesis.idl"
31 #include "SMESH_Group.idl"
32 #include "GEOM_Gen.idl"
35 * NETGENPlugin: interfaces to NETGEN related hypotheses and algorithms
39 typedef sequence<string> string_array;
41 * NETGENPlugin_NETGEN_3D: interface of "Tetrahedron (Netgen)" algorithm
43 interface NETGENPlugin_NETGEN_3D : SMESH::SMESH_3D_Algo
48 * NETGENPlugin_NETGEN_3D: interface of "Remote Tetrahedron (Netgen)" algorithm
50 interface NETGENPlugin_NETGEN_3D_Remote : NETGENPlugin::NETGENPlugin_NETGEN_3D
55 * NETGENPlugin_NETGEN_2D: interface of "Netgen 1D-2D" algorithm
57 interface NETGENPlugin_NETGEN_2D : SMESH::SMESH_2D_Algo
62 * NETGENPlugin_NETGEN_2D3D: interface of "Netgen 1D-2D-3D" algorithm
64 interface NETGENPlugin_NETGEN_2D3D : SMESH::SMESH_3D_Algo
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
73 interface NETGENPlugin_NETGEN_2D_ONLY : SMESH::SMESH_2D_Algo
78 * NETGENPlugin_NETGEN_2D: interface of "Remote Triangle (Netgen)" algorithm
80 interface NETGENPlugin_NETGEN_2D_Remote : NETGENPlugin::NETGENPlugin_NETGEN_2D_ONLY
85 * NETGENPlugin_Remesher_2D: interface of "NETGEN Remesher" algorithm,
86 * generating 2D elements basing on an existing 2D mesh
88 interface NETGENPlugin_Remesher_2D : SMESH::SMESH_2D_Algo
93 * NETGENPlugin_Hypothesis: interface of "NETGEN parameters" hypothesis
95 interface NETGENPlugin_Hypothesis : SMESH::SMESH_Hypothesis
97 void SetMaxSize(in double value);
100 void SetMinSize(in double value);
103 void SetSecondOrder(in boolean value);
104 boolean GetSecondOrder();
106 void SetOptimize(in boolean value);
107 boolean GetOptimize();
109 void SetFineness(in long value);
112 void SetGrowthRate(in double value);
113 double GetGrowthRate();
115 void SetNbSegPerEdge(in double value);
116 double GetNbSegPerEdge();
118 void SetChordalErrorEnabled(in boolean value);
119 boolean GetChordalErrorEnabled();
120 void SetChordalError(in double value);
121 double GetChordalError();
123 void SetNbSegPerRadius(in double value);
124 double GetNbSegPerRadius();
126 void SetQuadAllowed(in boolean value);
127 boolean GetQuadAllowed();
129 void SetUseSurfaceCurvature(in boolean value);
130 boolean GetUseSurfaceCurvature();
132 void SetFuseEdges(in boolean value);
133 boolean GetFuseEdges();
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);
142 void SetMeshSizeFile(in string fileName);
143 string GetMeshSizeFile();
145 void SetNbSurfOptSteps(in short nb );
146 short GetNbSurfOptSteps();
148 void SetNbVolOptSteps(in short nb );
149 short GetNbVolOptSteps();
151 void SetElemSizeWeight(in double size );
152 double GetElemSizeWeight();
154 void SetWorstElemMeasure(in short val );
155 short GetWorstElemMeasure();
157 void SetNbThreads(in short val );
158 short GetNbThreads();
160 void SetUseDelauney(in boolean toUse);
161 boolean GetUseDelauney();
163 void SetCheckOverlapping(in boolean toCheck );
164 boolean GetCheckOverlapping();
166 void SetCheckChartBoundary(in boolean toCheck );
167 boolean GetCheckChartBoundary();
171 * NETGENPlugin_Hypothesis_2D: interface of "NETGEN 2D parameters" hypothesis
173 interface NETGENPlugin_Hypothesis_2D : NETGENPlugin_Hypothesis
178 * interface of "NETGEN 2D parameters" hypothesis used by NETGENPlugin_NETGEN_2D_ONLY algorithm
180 interface NETGENPlugin_Hypothesis_2D_ONLY : NETGENPlugin_Hypothesis_2D
185 * interface of "NETGEN 3D parameters" hypothesis used by NETGENPlugin_NETGEN_3D algorithm
187 interface NETGENPlugin_Hypothesis_3D : NETGENPlugin_Hypothesis
192 * interface of "NETGEN Remesher parameters" hypothesis used by NETGENPlugin_Remesher_2D algorithm
194 interface NETGENPlugin_RemesherHypothesis_2D : NETGENPlugin_Hypothesis_2D
197 * \brief Set/get ridge angle
199 void SetRidgeAngle(in double angle );
200 double GetRidgeAngle();
202 void SetEdgeCornerAngle(in double angle );
203 double GetEdgeCornerAngle();
205 void SetChartAngle(in double angle );
206 double GetChartAngle();
208 void SetOuterChartAngle(in double angle );
209 double GetOuterChartAngle();
211 void SetRestHChartDistFactor(in double f );
212 double GetRestHChartDistFactor();
214 void SetRestHChartDistEnable(in boolean enable );
215 boolean GetRestHChartDistEnable();
217 void SetRestHLineLengthFactor(in double f );
218 double GetRestHLineLengthFactor();
220 void SetRestHLineLengthEnable(in boolean enable );
221 boolean GetRestHLineLengthEnable();
223 void SetRestHCloseEdgeFactor(in double f );
224 double GetRestHCloseEdgeFactor();
226 void SetRestHCloseEdgeEnable(in boolean enable );
227 boolean GetRestHCloseEdgeEnable();
229 void SetRestHSurfCurvFactor(in double f );
230 double GetRestHSurfCurvFactor();
232 void SetRestHSurfCurvEnable(in boolean enable );
233 boolean GetRestHSurfCurvEnable();
235 void SetRestHEdgeAngleFactor(in double f );
236 double GetRestHEdgeAngleFactor();
238 void SetRestHEdgeAngleEnable(in boolean enable );
239 boolean GetRestHEdgeAngleEnable();
241 void SetRestHSurfMeshCurvFactor(in double f );
242 double GetRestHSurfMeshCurvFactor();
244 void SetRestHSurfMeshCurvEnable(in boolean enable );
245 boolean GetRestHSurfMeshCurvEnable();
247 void SetKeepExistingEdges(in boolean toKeep );
248 boolean GetKeepExistingEdges();
250 void SetMakeGroupsOfSurfaces(in boolean toMake );
251 boolean GetMakeGroupsOfSurfaces();
253 void SetLoadMeshOnCancel(in boolean toLoad );
254 boolean GetLoadMeshOnCancel();
256 void SetFixedEdgeGroup( in SMESH::SMESH_GroupBase edgeGroup );
257 SMESH::SMESH_GroupBase GetFixedEdgeGroup( in SMESH::SMESH_Mesh mesh );
261 * NETGENPlugin_Hypothesis: interface of "NETGEN 2D simple parameters" hypothesis
263 interface NETGENPlugin_SimpleHypothesis_2D : SMESH::SMESH_Hypothesis
266 * Sets <number of segments> value
268 void SetNumberOfSegments(in long nb) raises (SALOME::SALOME_Exception);
270 * Returns <number of segments> value.
271 * Can be zero in case if LocalLength() has been set
273 long GetNumberOfSegments();
276 * Sets <segment length> value
278 void SetLocalLength(in double segmentLength);
280 * Returns <segment length> value.
281 * Can be zero in case if NumberOfSegments() has been set
283 double GetLocalLength();
286 * Sets <maximum element area> to be dependent on 1D discretization
288 void LengthFromEdges();
290 * Sets <maximum element area> value.
291 * Zero or negative value means same as LengthFromEdges().
293 void SetMaxElementArea(in double area);
295 * Returns <maximum element area> value.
296 * Can be zero in case of LengthFromEdges()
298 double GetMaxElementArea();
301 * Enables/disables generation of quadrangular faces
303 void SetAllowQuadrangles(in boolean toAllow);
305 * Returns true if generation of quadrangular faces is enabled
307 boolean GetAllowQuadrangles();
311 * NETGENPlugin_SimpleHypothesis_3D: interface of "NETGEN 3D simple parameters" hypothesis
313 interface NETGENPlugin_SimpleHypothesis_3D : NETGENPlugin_SimpleHypothesis_2D
316 * Sets <maximum element volume> to be dependent on 2D discretization
318 void LengthFromFaces();
320 * Sets <maximum element volume> value.
321 * Zero or negative value means same as LengthFromFaces().
323 void SetMaxElementVolume(in double volume);
326 * Returns <maximum element volume> value
327 * Can be zero in case of LengthFromFaces()
329 double GetMaxElementVolume();