Salome HOME
Update copyright
[plugins/netgenplugin.git] / idl / NETGENPlugin_Algorithm.idl
1 // Copyright (C) 2007-2011  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.
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 //  $Header$
26 //
27 #ifndef _SMESH_NETGENALGORITHM_IDL_
28 #define _SMESH_NETGENALGORITHM_IDL_
29
30 #include "SALOME_Exception.idl"
31 #include "SMESH_Hypothesis.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_Hypothesis: interface of "NETGEN parameters" hypothesis
72    */
73   interface NETGENPlugin_Hypothesis : SMESH::SMESH_Hypothesis
74   {
75     void SetMaxSize(in double value);
76     double GetMaxSize();
77
78     void SetSecondOrder(in boolean value);
79     boolean GetSecondOrder();
80
81     void SetOptimize(in boolean value);
82     boolean GetOptimize();
83
84     void SetFineness(in long value);
85     long GetFineness();
86
87     void SetGrowthRate(in double value);
88     double GetGrowthRate();
89
90     void SetNbSegPerEdge(in double value);
91     double GetNbSegPerEdge();
92
93     void SetNbSegPerRadius(in double value);
94     double GetNbSegPerRadius();
95
96     void SetLocalSizeOnShape(in GEOM::GEOM_Object GeomObj, in double localSize);
97     void SetLocalSizeOnEntry(in string entry, in double localSize);
98     double GetLocalSizeOnEntry(in string entry);
99     string_array GetLocalSizeEntries();
100     void UnsetLocalSizeOnEntry(in string entry);
101   };
102
103   /*!
104    * NETGENPlugin_Hypothesis_2D: interface of "NETGEN 2D parameters" hypothesis
105    */
106   interface NETGENPlugin_Hypothesis_2D : NETGENPlugin_Hypothesis
107   {
108     void SetQuadAllowed(in boolean value);
109     boolean GetQuadAllowed();
110   };
111
112   /*!
113    * interface of "NETGEN 2D parameters" hypothesis used by NETGENPlugin_NETGEN_2D_ONLY algoritm
114    */
115   interface NETGENPlugin_Hypothesis_2D_ONLY : NETGENPlugin_Hypothesis_2D
116   {
117   };
118
119   /*!
120    * interface of "NETGEN 3D parameters" hypothesis used by NETGENPlugin_NETGEN_3D algorithm
121    */
122   interface NETGENPlugin_Hypothesis_3D : NETGENPlugin_Hypothesis
123   {
124   };
125
126   /*!
127    * NETGENPlugin_Hypothesis: interface of "NETGEN 2D simple parameters" hypothesis
128    */
129   interface NETGENPlugin_SimpleHypothesis_2D : SMESH::SMESH_Hypothesis
130   {
131     /*!
132      * Sets <number of segments> value
133      */
134     void SetNumberOfSegments(in short nb) raises (SALOME::SALOME_Exception);
135     /*!
136      * Returns <number of segments> value.
137      * Can be zero in case if LocalLength() has been set
138      */
139     short GetNumberOfSegments();
140
141     /*!
142      * Sets <segment length> value
143      */
144     void SetLocalLength(in double segmentLength);
145     /*!
146      * Returns <segment length> value.
147      * Can be zero in case if NumberOfSegments() has been set
148      */
149     double GetLocalLength();
150
151     /*!
152      * Sets <maximum element area> to be dependent on 1D discretization
153      */
154     void LengthFromEdges();
155     /*!
156      * Sets <maximum element area> value.
157      * Zero or negative value means same as LengthFromEdges().
158      */
159     void SetMaxElementArea(in double area);
160     /*!
161      * Returns <maximum element area> value.
162      * Can be zero in case of LengthFromEdges()
163      */
164     double GetMaxElementArea();
165   };
166
167   /*!
168    * NETGENPlugin_SimpleHypothesis_3D: interface of "NETGEN 3D simple parameters" hypothesis
169    */
170   interface NETGENPlugin_SimpleHypothesis_3D : NETGENPlugin_SimpleHypothesis_2D
171   {
172     /*!
173      * Sets <maximum element volume> to be dependent on 2D discretization
174      */
175     void LengthFromFaces();
176     /*!
177      * Sets <maximum element volume> value.
178      * Zero or negative value means same as LengthFromFaces().
179      */
180     void SetMaxElementVolume(in double volume);
181
182     /*!
183      * Returns <maximum element volume> value
184      * Can be zero in case of LengthFromFaces()
185      */
186     double GetMaxElementVolume();
187   };
188
189 };
190
191 #endif