1 // Copyright (C) 2007-2021 CEA/DEN, EDF R&D, 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_2D: interface of "Netgen 1D-2D" algorithm
50 interface NETGENPlugin_NETGEN_2D : SMESH::SMESH_2D_Algo
55 * NETGENPlugin_NETGEN_2D3D: interface of "Netgen 1D-2D-3D" algorithm
57 interface NETGENPlugin_NETGEN_2D3D : SMESH::SMESH_3D_Algo
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
66 interface NETGENPlugin_NETGEN_2D_ONLY : SMESH::SMESH_2D_Algo
71 * NETGENPlugin_Remesher_2D: interface of "NETGEN Remesher" algorithm,
72 * generating 2D elements basing on an existing 2D mesh
74 interface NETGENPlugin_Remesher_2D : SMESH::SMESH_2D_Algo
79 * NETGENPlugin_Hypothesis: interface of "NETGEN parameters" hypothesis
81 interface NETGENPlugin_Hypothesis : SMESH::SMESH_Hypothesis
83 void SetMaxSize(in double value);
86 void SetMinSize(in double value);
89 void SetSecondOrder(in boolean value);
90 boolean GetSecondOrder();
92 void SetOptimize(in boolean value);
93 boolean GetOptimize();
95 void SetFineness(in long value);
98 void SetGrowthRate(in double value);
99 double GetGrowthRate();
101 void SetNbSegPerEdge(in double value);
102 double GetNbSegPerEdge();
104 void SetChordalErrorEnabled(in boolean value);
105 boolean GetChordalErrorEnabled();
106 void SetChordalError(in double value);
107 double GetChordalError();
109 void SetNbSegPerRadius(in double value);
110 double GetNbSegPerRadius();
112 void SetQuadAllowed(in boolean value);
113 boolean GetQuadAllowed();
115 void SetUseSurfaceCurvature(in boolean value);
116 boolean GetUseSurfaceCurvature();
118 void SetFuseEdges(in boolean value);
119 boolean GetFuseEdges();
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);
128 void SetMeshSizeFile(in string fileName);
129 string GetMeshSizeFile();
131 void SetNbSurfOptSteps(in short nb );
132 short GetNbSurfOptSteps();
134 void SetNbVolOptSteps(in short nb );
135 short GetNbVolOptSteps();
137 void SetElemSizeWeight(in double size );
138 double GetElemSizeWeight();
140 void SetWorstElemMeasure(in short val );
141 short GetWorstElemMeasure();
143 void SetUseDelauney(in boolean toUse);
144 boolean GetUseDelauney();
146 void SetCheckOverlapping(in boolean toCheck );
147 boolean GetCheckOverlapping();
149 void SetCheckChartBoundary(in boolean toCheck );
150 boolean GetCheckChartBoundary();
154 * NETGENPlugin_Hypothesis_2D: interface of "NETGEN 2D parameters" hypothesis
156 interface NETGENPlugin_Hypothesis_2D : NETGENPlugin_Hypothesis
161 * interface of "NETGEN 2D parameters" hypothesis used by NETGENPlugin_NETGEN_2D_ONLY algorithm
163 interface NETGENPlugin_Hypothesis_2D_ONLY : NETGENPlugin_Hypothesis_2D
168 * interface of "NETGEN 3D parameters" hypothesis used by NETGENPlugin_NETGEN_3D algorithm
170 interface NETGENPlugin_Hypothesis_3D : NETGENPlugin_Hypothesis
175 * interface of "NETGEN Remesher parameters" hypothesis used by NETGENPlugin_Remesher_2D algorithm
177 interface NETGENPlugin_RemesherHypothesis_2D : NETGENPlugin_Hypothesis_2D
180 * \brief Set/get ridge angle
182 void SetRidgeAngle(in double angle );
183 double GetRidgeAngle();
185 void SetEdgeCornerAngle(in double angle );
186 double GetEdgeCornerAngle();
188 void SetChartAngle(in double angle );
189 double GetChartAngle();
191 void SetOuterChartAngle(in double angle );
192 double GetOuterChartAngle();
194 void SetRestHChartDistFactor(in double f );
195 double GetRestHChartDistFactor();
197 void SetRestHChartDistEnable(in boolean enable );
198 boolean GetRestHChartDistEnable();
200 void SetRestHLineLengthFactor(in double f );
201 double GetRestHLineLengthFactor();
203 void SetRestHLineLengthEnable(in boolean enable );
204 boolean GetRestHLineLengthEnable();
206 void SetRestHCloseEdgeFactor(in double f );
207 double GetRestHCloseEdgeFactor();
209 void SetRestHCloseEdgeEnable(in boolean enable );
210 boolean GetRestHCloseEdgeEnable();
212 void SetRestHSurfCurvFactor(in double f );
213 double GetRestHSurfCurvFactor();
215 void SetRestHSurfCurvEnable(in boolean enable );
216 boolean GetRestHSurfCurvEnable();
218 void SetRestHEdgeAngleFactor(in double f );
219 double GetRestHEdgeAngleFactor();
221 void SetRestHEdgeAngleEnable(in boolean enable );
222 boolean GetRestHEdgeAngleEnable();
224 void SetRestHSurfMeshCurvFactor(in double f );
225 double GetRestHSurfMeshCurvFactor();
227 void SetRestHSurfMeshCurvEnable(in boolean enable );
228 boolean GetRestHSurfMeshCurvEnable();
230 void SetKeepExistingEdges(in boolean toKeep );
231 boolean GetKeepExistingEdges();
233 void SetMakeGroupsOfSurfaces(in boolean toMake );
234 boolean GetMakeGroupsOfSurfaces();
236 void SetLoadMeshOnCancel(in boolean toLoad );
237 boolean GetLoadMeshOnCancel();
239 void SetFixedEdgeGroup( in SMESH::SMESH_GroupBase edgeGroup );
240 SMESH::SMESH_GroupBase GetFixedEdgeGroup( in SMESH::SMESH_Mesh mesh );
244 * NETGENPlugin_Hypothesis: interface of "NETGEN 2D simple parameters" hypothesis
246 interface NETGENPlugin_SimpleHypothesis_2D : SMESH::SMESH_Hypothesis
249 * Sets <number of segments> value
251 void SetNumberOfSegments(in long nb) raises (SALOME::SALOME_Exception);
253 * Returns <number of segments> value.
254 * Can be zero in case if LocalLength() has been set
256 long GetNumberOfSegments();
259 * Sets <segment length> value
261 void SetLocalLength(in double segmentLength);
263 * Returns <segment length> value.
264 * Can be zero in case if NumberOfSegments() has been set
266 double GetLocalLength();
269 * Sets <maximum element area> to be dependent on 1D discretization
271 void LengthFromEdges();
273 * Sets <maximum element area> value.
274 * Zero or negative value means same as LengthFromEdges().
276 void SetMaxElementArea(in double area);
278 * Returns <maximum element area> value.
279 * Can be zero in case of LengthFromEdges()
281 double GetMaxElementArea();
284 * Enables/disables generation of quadrangular faces
286 void SetAllowQuadrangles(in boolean toAllow);
288 * Returns true if generation of quadrangular faces is enabled
290 boolean GetAllowQuadrangles();
294 * NETGENPlugin_SimpleHypothesis_3D: interface of "NETGEN 3D simple parameters" hypothesis
296 interface NETGENPlugin_SimpleHypothesis_3D : NETGENPlugin_SimpleHypothesis_2D
299 * Sets <maximum element volume> to be dependent on 2D discretization
301 void LengthFromFaces();
303 * Sets <maximum element volume> value.
304 * Zero or negative value means same as LengthFromFaces().
306 void SetMaxElementVolume(in double volume);
309 * Returns <maximum element volume> value
310 * Can be zero in case of LengthFromFaces()
312 double GetMaxElementVolume();