Version: 8.3.0
MED_GaussUtils.hxx
Go to the documentation of this file.
1 // Copyright (C) 2007-2016 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 #ifndef MED_GaussUtils_HeaderFile
23 #define MED_GaussUtils_HeaderFile
24 
25 #include "MED_WrapperBase.hxx"
26 
27 #include "MED_Structures.hxx"
28 
29 namespace MED
30 {
31  //---------------------------------------------------------------
34 
37  virtual TModeSwitchInfo
38  {
42 
44 
46 
47  public:
48 
49  TGaussCoord();
50 
52  void
53  Init(TInt theNbElem,
54  TInt theNbGauss,
55  TInt theDim,
56  EModeSwitch theMode = eFULL_INTERLACE);
57 
58  TInt
59  GetNbElem() const;
60 
61  TInt
62  GetNbGauss() const;
63 
64  TInt
65  GetDim() const;
66 
67  unsigned char*
68  GetValuePtr();
69 
72  GetCoordSliceArr(TInt theElemId) const;
73 
76  GetCoordSliceArr(TInt theElemId);
77  };
79 
80 
81  //---------------------------------------------------------------
84  bool
85  GetGaussCoord3D(const TGaussInfo& theGaussInfo,
86  const TCellInfo& theCellInfo,
87  const TNodeInfo& theNodeInfo,
88  TGaussCoord& theGaussCoord,
89  const TElemNum& theElemNum = TElemNum(),
90  EModeSwitch theMode = eFULL_INTERLACE);
91 
92 
93  //---------------------------------------------------------------
96  bool
97  GetBaryCenter(const TCellInfo& theCellInfo,
98  const TNodeInfo& theNodeInfo,
99  TGaussCoord& theGaussCoord,
100  const TElemNum& theElemNum = TElemNum(),
101  EModeSwitch theMode = eFULL_INTERLACE);
102 
105  bool
106  GetBaryCenter(const TPolygoneInfo& thePolygoneInfo,
107  const TNodeInfo& theNodeInfo,
108  TGaussCoord& theGaussCoord,
109  const TElemNum& theElemNum = TElemNum(),
110  EModeSwitch theMode = eFULL_INTERLACE);
111 
114  bool
115  GetBaryCenter(const TPolyedreInfo& thePolyedreInfo,
116  const TNodeInfo& theNodeInfo,
117  TGaussCoord& theGaussCoord,
118  const TElemNum& theElemNum = TElemNum(),
119  EModeSwitch theMode = eFULL_INTERLACE);
120 
121  //---------------------------------------------------------------
123  //---------------------------------------------------------------
125  {
126  class TFun;
127 
131 
132  TShapeFun(TInt theDim = 0, TInt theNbRef = 0);
133 
134  TInt GetNbRef() const { return myNbRef; }
135 
136  TCCoordSlice GetCoord(TInt theRefId) const;
137 
138  TCoordSlice GetCoord(TInt theRefId);
139 
140  void GetFun(const TCCoordSliceArr& theRef,
141  const TCCoordSliceArr& theGauss,
142  TFun& theFun) const;
143  virtual
144  void InitFun(const TCCoordSliceArr& theRef,
145  const TCCoordSliceArr& theGauss,
146  TFun& theFun) const = 0;
147  virtual
148  bool IsSatisfy(const TCCoordSliceArr& theRefCoord) const;
149 
150  bool Eval(const TCellInfo& theCellInfo,
151  const TNodeInfo& theNodeInfo,
152  const TElemNum& theElemNum,
153  const TCCoordSliceArr& theRef,
154  const TCCoordSliceArr& theGauss,
155  TGaussCoord& theGaussCoord,
156  EModeSwitch theMode);
157  };
158  //---------------------------------------------------------------
159  struct TSeg2a: TShapeFun {
160  TSeg2a();
161  virtual void InitFun(const TCCoordSliceArr& theRef,
162  const TCCoordSliceArr& theGauss,
163  TFun& theFun) const;
164  };
165  //---------------------------------------------------------------
166  struct TSeg3a: TShapeFun {
167  TSeg3a();
168  virtual void InitFun(const TCCoordSliceArr& theRef,
169  const TCCoordSliceArr& theGauss,
170  TFun& theFun) const;
171  };
172  //---------------------------------------------------------------
173  struct TTria3a: TShapeFun {
174  TTria3a();
175  virtual void InitFun(const TCCoordSliceArr& theRef,
176  const TCCoordSliceArr& theGauss,
177  TFun& theFun) const;
178  };
179  //---------------------------------------------------------------
180  struct TTria6a: TShapeFun {
181  TTria6a();
182  virtual void InitFun(const TCCoordSliceArr& theRef,
183  const TCCoordSliceArr& theGauss,
184  TFun& theFun) const;
185  };
186  //---------------------------------------------------------------
187  struct TTria3b: TShapeFun {
188  TTria3b();
189  virtual void InitFun(const TCCoordSliceArr& theRef,
190  const TCCoordSliceArr& theGauss,
191  TFun& theFun) const;
192  };
193  //---------------------------------------------------------------
194  struct TTria6b: TShapeFun {
195  TTria6b();
196  virtual void InitFun(const TCCoordSliceArr& theRef,
197  const TCCoordSliceArr& theGauss,
198  TFun& theFun) const;
199  };
200  //---------------------------------------------------------------
201  struct TQuad4a: TShapeFun {
202  TQuad4a();
203  virtual void InitFun(const TCCoordSliceArr& theRef,
204  const TCCoordSliceArr& theGauss,
205  TFun& theFun) const;
206  };
207  //---------------------------------------------------------------
208  struct TQuad8a: TShapeFun {
209  TQuad8a();
210  virtual void InitFun(const TCCoordSliceArr& theRef,
211  const TCCoordSliceArr& theGauss,
212  TFun& theFun) const;
213  };
214  //---------------------------------------------------------------
215  struct TQuad9a: TShapeFun {
216  TQuad9a();
217  virtual void InitFun(const TCCoordSliceArr& theRef,
218  const TCCoordSliceArr& theGauss,
219  TFun& theFun) const;
220  };
221  //---------------------------------------------------------------
222  struct TQuad4b: TShapeFun {
223  TQuad4b();
224  virtual void InitFun(const TCCoordSliceArr& theRef,
225  const TCCoordSliceArr& theGauss,
226  TFun& theFun) const;
227  };
228  //---------------------------------------------------------------
229  struct TQuad8b: TShapeFun {
230  TQuad8b();
231  virtual void InitFun(const TCCoordSliceArr& theRef,
232  const TCCoordSliceArr& theGauss,
233  TFun& theFun) const;
234  };
235  //---------------------------------------------------------------
236  struct TQuad9b: TShapeFun {
237  TQuad9b();
238  virtual void InitFun(const TCCoordSliceArr& theRef,
239  const TCCoordSliceArr& theGauss,
240  TFun& theFun) const;
241  };
242  //---------------------------------------------------------------
243  struct TTetra4a: TShapeFun {
244  TTetra4a();
245  virtual void InitFun(const TCCoordSliceArr& theRef,
246  const TCCoordSliceArr& theGauss,
247  TFun& theFun) const;
248  };
249  //---------------------------------------------------------------
251  TTetra10a();
252  virtual void InitFun(const TCCoordSliceArr& theRef,
253  const TCCoordSliceArr& theGauss,
254  TFun& theFun) const;
255  };
256  //---------------------------------------------------------------
257  struct TTetra4b: TShapeFun {
258  TTetra4b();
259  virtual void InitFun(const TCCoordSliceArr& theRef,
260  const TCCoordSliceArr& theGauss,
261  TFun& theFun) const;
262  };
263  //---------------------------------------------------------------
265  TTetra10b();
266  virtual void InitFun(const TCCoordSliceArr& theRef,
267  const TCCoordSliceArr& theGauss,
268  TFun& theFun) const;
269  };
270  //---------------------------------------------------------------
271  struct THexa8a: TShapeFun {
272  THexa8a();
273  virtual void InitFun(const TCCoordSliceArr& theRef,
274  const TCCoordSliceArr& theGauss,
275  TFun& theFun) const;
276  };
277  //---------------------------------------------------------------
278  struct THexa20a: TShapeFun {
279  THexa20a(TInt theDim = 3, TInt theNbRef = 20);
280  virtual void InitFun(const TCCoordSliceArr& theRef,
281  const TCCoordSliceArr& theGauss,
282  TFun& theFun) const;
283  };
284  //---------------------------------------------------------------
285  struct THexa27a: THexa20a {
286  THexa27a();
287  virtual void InitFun(const TCCoordSliceArr& theRef,
288  const TCCoordSliceArr& theGauss,
289  TFun& theFun) const;
290  };
291  //---------------------------------------------------------------
292  struct THexa8b: TShapeFun {
293  THexa8b();
294  virtual void InitFun(const TCCoordSliceArr& theRef,
295  const TCCoordSliceArr& theGauss,
296  TFun& theFun) const;
297  };
298  //---------------------------------------------------------------
299  struct THexa20b: TShapeFun {
300  THexa20b(TInt theDim = 3, TInt theNbRef = 20);
301  virtual void InitFun(const TCCoordSliceArr& theRef,
302  const TCCoordSliceArr& theGauss,
303  TFun& theFun) const;
304  };
305  //---------------------------------------------------------------
306  struct TPenta6a: TShapeFun {
307  TPenta6a();
308  virtual void InitFun(const TCCoordSliceArr& theRef,
309  const TCCoordSliceArr& theGauss,
310  TFun& theFun) const;
311  };
312  //---------------------------------------------------------------
313  struct TPenta6b: TShapeFun {
314  TPenta6b();
315  virtual void InitFun(const TCCoordSliceArr& theRef,
316  const TCCoordSliceArr& theGauss,
317  TFun& theFun) const;
318  };
319  //---------------------------------------------------------------
321  TPenta15a();
322  virtual void InitFun(const TCCoordSliceArr& theRef,
323  const TCCoordSliceArr& theGauss,
324  TFun& theFun) const;
325  };
326  //---------------------------------------------------------------
328  TPenta15b();
329  virtual void InitFun(const TCCoordSliceArr& theRef,
330  const TCCoordSliceArr& theGauss,
331  TFun& theFun) const;
332  };
333  //---------------------------------------------------------------
334  struct TPyra5a: TShapeFun {
335  TPyra5a();
336  virtual void InitFun(const TCCoordSliceArr& theRef,
337  const TCCoordSliceArr& theGauss,
338  TFun& theFun) const;
339  };
340  //---------------------------------------------------------------
341  struct TPyra5b: TShapeFun {
342  TPyra5b();
343  virtual void InitFun(const TCCoordSliceArr& theRef,
344  const TCCoordSliceArr& theGauss,
345  TFun& theFun) const;
346  };
347  //---------------------------------------------------------------
348  struct TPyra13a: TShapeFun {
349  TPyra13a();
350  virtual void InitFun(const TCCoordSliceArr& theRef,
351  const TCCoordSliceArr& theGauss,
352  TFun& theFun) const;
353  };
354  //---------------------------------------------------------------
355  struct TPyra13b: TShapeFun {
356  TPyra13b();
357  virtual void InitFun(const TCCoordSliceArr& theRef,
358  const TCCoordSliceArr& theGauss,
359  TFun& theFun) const;
360  };
361  //---------------------------------------------------------------
362 
363 }
364 
365 #endif