Salome HOME
update after merging trhe branches CEA_V3_0_x, OCC_V3_1_0_a1_x, and the main
[modules/med.git] / src / MEDMEM_I / MEDMEM_convert.cxx
1 //=============================================================================
2 // File      : MEDMEM_convert.cxx
3 // Created   : mer fév 20 15:47:57 CET 2002
4 // Author    : EDF
5 // Project   : SALOME
6 // Copyright : EDF 2002
7 // $Header: /export/home/PAL/MED_SRC/src/MEDMEM_I/MEDMEM_convert.cxx
8 //=============================================================================
9
10 #include "utilities.h"
11 #include "Utils_CorbaException.hxx"
12
13 #include "MEDMEM_convert.hxx"
14
15
16 SALOME_MED::medGeometryElement convertMedEltToIdlElt(medGeometryElement element) 
17 throw (SALOME::SALOME_Exception)
18 {
19   switch (element)
20     {
21     case MED_NONE    :  return SALOME_MED::MED_NONE;
22     case MED_POINT1  :  return SALOME_MED::MED_POINT1;
23     case MED_SEG2    :  return SALOME_MED::MED_SEG2;
24     case MED_SEG3    :  return SALOME_MED::MED_SEG3;
25     case MED_TRIA3   :  return SALOME_MED::MED_TRIA3;
26     case MED_QUAD4   :  return SALOME_MED::MED_QUAD4;
27     case MED_TRIA6   :  return SALOME_MED::MED_TRIA6;
28     case MED_QUAD8   :  return SALOME_MED::MED_QUAD8;
29     case MED_TETRA4  :  return SALOME_MED::MED_TETRA4;
30     case MED_PYRA5   :  return SALOME_MED::MED_PYRA5;
31     case MED_PENTA6  :  return SALOME_MED::MED_PENTA6;
32     case MED_HEXA8   :  return SALOME_MED::MED_HEXA8;
33     case MED_TETRA10 :  return SALOME_MED::MED_TETRA10;
34     case MED_PYRA13  :  return SALOME_MED::MED_PYRA13;
35     case MED_PENTA15 :  return SALOME_MED::MED_PENTA15;
36     case MED_HEXA20  :  return SALOME_MED::MED_HEXA20;
37     case MED_POLYGON      :  return SALOME_MED::MED_POLYGON;
38     case MED_POLYHEDRA    :  return SALOME_MED::MED_POLYHEDRA;
39     case MED_ALL_ELEMENTS :  return SALOME_MED::MED_ALL_ELEMENTS;
40     default :
41         { MESSAGE("Unknown Geometry Element");
42           THROW_SALOME_CORBA_EXCEPTION("Unknown Geometry Element",
43                                         SALOME::INTERNAL_ERROR);
44         } 
45    }
46 }
47
48 medGeometryElement convertIdlEltToMedElt(SALOME_MED::medGeometryElement element) 
49 throw (SALOME::SALOME_Exception)
50 {
51
52   SCRUTE(element);
53
54   switch (element)
55     {
56     case SALOME_MED::MED_NONE     :  return MED_NONE;
57     case SALOME_MED::MED_POINT1   :  return MED_POINT1;
58     case SALOME_MED::MED_SEG2     :  return MED_SEG2;
59     case SALOME_MED::MED_SEG3     :  return MED_SEG3;
60     case SALOME_MED::MED_TRIA3    :  return MED_TRIA3;
61     case SALOME_MED::MED_QUAD4    :  return MED_QUAD4;
62     case SALOME_MED::MED_TRIA6    :  return MED_TRIA6;
63     case SALOME_MED::MED_QUAD8    :  return MED_QUAD8;
64     case SALOME_MED::MED_TETRA4   :  return MED_TETRA4;
65     case SALOME_MED::MED_PYRA5    :  return MED_PYRA5;
66     case SALOME_MED::MED_PENTA6   :  return MED_PENTA6;
67     case SALOME_MED::MED_HEXA8    :  return MED_HEXA8;
68     case SALOME_MED::MED_TETRA10  :  return MED_TETRA10;
69     case SALOME_MED::MED_PYRA13   :  return MED_PYRA13;
70     case SALOME_MED::MED_PENTA15  :  return MED_PENTA15;
71     case SALOME_MED::MED_HEXA20   :  return MED_HEXA20;
72     case SALOME_MED::MED_POLYGON      :  return MED_POLYGON;
73     case SALOME_MED::MED_POLYHEDRA    :  return MED_POLYHEDRA;
74     case SALOME_MED::MED_ALL_ELEMENTS :  return MED_ALL_ELEMENTS;
75     default :
76         { MESSAGE("unknown Geometry Element");
77           THROW_SALOME_CORBA_EXCEPTION("Unknown Geometry Element",
78                                         SALOME::INTERNAL_ERROR);
79         } 
80    }
81 }
82
83 SALOME_MED::medEntityMesh convertMedEntToIdlEnt(medEntityMesh entity)
84 throw (SALOME::SALOME_Exception)
85 {
86   switch (entity)
87     {
88     case MED_CELL    :  return SALOME_MED::MED_CELL;
89     case MED_FACE    :  return SALOME_MED::MED_FACE;
90     case MED_EDGE    :  return SALOME_MED::MED_EDGE;
91     case MED_NODE    :  return SALOME_MED::MED_NODE;
92     case MED_ALL_ENTITIES : return SALOME_MED::MED_ALL_ENTITIES;
93     default :
94         { MESSAGE("Unknown entity element");
95           THROW_SALOME_CORBA_EXCEPTION("Unknown Entity Element",
96                                         SALOME::INTERNAL_ERROR);
97         } 
98    }
99 }
100
101 medEntityMesh convertIdlEntToMedEnt(SALOME_MED::medEntityMesh entity)
102 throw (SALOME::SALOME_Exception)
103 {
104   switch (entity)
105     {
106     case SALOME_MED::MED_CELL    :  return MED_CELL; 
107     case SALOME_MED::MED_FACE    :  return MED_FACE;
108     case SALOME_MED::MED_EDGE    :  return MED_EDGE;
109     case SALOME_MED::MED_NODE    :  return MED_NODE;
110     case SALOME_MED::MED_ALL_ENTITIES : return MED_ALL_ENTITIES;
111     default :
112         { MESSAGE("Unknown Entity Element");
113           THROW_SALOME_CORBA_EXCEPTION("Unknown Entity Element",
114                                         SALOME::INTERNAL_ERROR);
115         } 
116    }
117 }
118
119 medModeSwitch convertIdlModeToMedMode(SALOME_MED::medModeSwitch mode)
120 throw (SALOME::SALOME_Exception)
121 {
122   switch (mode)
123     {
124     case SALOME_MED::MED_FULL_INTERLACE  :  return MED_FULL_INTERLACE; 
125     case SALOME_MED::MED_NO_INTERLACE    :  return MED_NO_INTERLACE; 
126     default :
127         { MESSAGE("Unknown interlace mode");
128           THROW_SALOME_CORBA_EXCEPTION("Unknown interlace mode",
129                                         SALOME::INTERNAL_ERROR);
130         } 
131    }
132 }
133
134 SALOME_MED::medModeSwitch convertMedModeToIdlMode(medModeSwitch mode)
135 throw (SALOME::SALOME_Exception)
136 {
137   switch (mode)
138     {
139     case MED_FULL_INTERLACE  :  return SALOME_MED::MED_FULL_INTERLACE; 
140     case MED_NO_INTERLACE    :  return SALOME_MED::MED_NO_INTERLACE; 
141     default :
142         { MESSAGE("Unknown interlace mode");
143           THROW_SALOME_CORBA_EXCEPTION("Unknown interlace mode",
144                                         SALOME::INTERNAL_ERROR);
145         } 
146    }
147 }
148 SALOME_MED::medConnectivity convertMedConnToIdlConn(medConnectivity connectivite)
149 throw (SALOME::SALOME_Exception)
150 {
151   switch (connectivite)
152     {
153     case MED_NODAL       :  return SALOME_MED::MED_NODAL; 
154     case MED_DESCENDING  :  return SALOME_MED::MED_DESCENDING; 
155     default :
156         { MESSAGE("Unknown connectivity type");
157           THROW_SALOME_CORBA_EXCEPTION("Unknown connectivity type",
158                                         SALOME::INTERNAL_ERROR);
159         } 
160    }
161 }
162 medConnectivity convertIdlConnToMedConn(SALOME_MED::medConnectivity connectivite)
163 throw (SALOME::SALOME_Exception)
164 {
165   switch (connectivite)
166     {
167     case SALOME_MED::MED_NODAL       :  return MED_NODAL; 
168     case SALOME_MED::MED_DESCENDING  :  return MED_DESCENDING; 
169     default :
170         { MESSAGE("Unknown connectivity type");
171           THROW_SALOME_CORBA_EXCEPTION("Unknown connectivity type",
172                                         SALOME::INTERNAL_ERROR);
173         } 
174    }
175 }
176 SALOME_MED::medDriverTypes convertMedDriverToIdlDriver(MEDMEM::driverTypes driverType)
177 throw (SALOME::SALOME_Exception)
178 {
179   switch (driverType)
180     {
181     case MEDMEM::MED_DRIVER  :  return SALOME_MED::MED_DRIVER; 
182     case MEDMEM::VTK_DRIVER  :  return SALOME_MED::VTK_DRIVER; 
183     case MEDMEM::NO_DRIVER   :  return SALOME_MED::NO_DRIVER;
184     default :
185         { MESSAGE("Unknown driver type");
186           THROW_SALOME_CORBA_EXCEPTION("Unknown driver type",
187                                         SALOME::INTERNAL_ERROR);
188         } 
189    }
190 }
191
192 MEDMEM::driverTypes convertIdlDriverToMedDriver(SALOME_MED::medDriverTypes driverType)
193 throw (SALOME::SALOME_Exception)
194 {
195   switch (driverType)
196     {
197     case SALOME_MED::MED_DRIVER  :  return MEDMEM::MED_DRIVER; 
198     case SALOME_MED::VTK_DRIVER  :  return MEDMEM::VTK_DRIVER; 
199     case SALOME_MED::NO_DRIVER   :  return MEDMEM::NO_DRIVER;
200     default :
201         { MESSAGE("Unknown driver type");
202           THROW_SALOME_CORBA_EXCEPTION("Unknown driver type",
203                                         SALOME::INTERNAL_ERROR);
204         } 
205    }
206 }
207 bool verifieParam (SALOME_MED::medEntityMesh entity,SALOME_MED::medGeometryElement geomElement)
208 throw (SALOME::SALOME_Exception)
209 {
210   SCRUTE(entity);
211   SCRUTE(geomElement);
212   bool coherent=false;
213   switch (entity)
214    { 
215     case SALOME_MED::MED_FACE :
216        {
217          switch (geomElement)
218            {
219            case SALOME_MED::MED_TRIA3    : coherent=true;
220            case SALOME_MED::MED_QUAD4    : coherent=true;
221            case SALOME_MED::MED_TRIA6    : coherent=true;
222            case SALOME_MED::MED_QUAD8    : coherent=true;
223            case SALOME_MED::MED_POLYGON  : coherent=true;
224            }
225          break;
226        }
227     case SALOME_MED::MED_CELL :
228        {
229          switch (geomElement)
230            {
231            case SALOME_MED::MED_POINT1   : coherent=true;
232            case SALOME_MED::MED_SEG2     : coherent=true;
233            case SALOME_MED::MED_SEG3     : coherent=true;
234            case SALOME_MED::MED_TRIA3    : coherent=true;
235            case SALOME_MED::MED_TRIA6    : coherent=true;
236            case SALOME_MED::MED_QUAD4    : coherent=true;
237            case SALOME_MED::MED_QUAD8    : coherent=true;
238            case SALOME_MED::MED_TETRA4   : coherent=true;
239            case SALOME_MED::MED_TETRA10  : coherent=true;
240            case SALOME_MED::MED_HEXA8    : coherent=true;
241            case SALOME_MED::MED_HEXA20   : coherent=true;
242            case SALOME_MED::MED_PENTA6   : coherent=true;
243            case SALOME_MED::MED_PENTA15  : coherent=true;
244            case SALOME_MED::MED_PYRA5    : coherent=true;
245            case SALOME_MED::MED_PYRA13   : coherent=true;
246            case SALOME_MED::MED_POLYGON  : coherent=true;
247            case SALOME_MED::MED_POLYHEDRA: coherent=true;
248            }
249          break;
250        }
251     case SALOME_MED::MED_EDGE :
252        {
253          switch (geomElement)
254            {
255            case SALOME_MED::MED_SEG2     : coherent=true;
256            case SALOME_MED::MED_SEG3     : coherent=true;
257            }
258          break;
259        }         
260     case SALOME_MED::MED_NODE :
261        {
262          switch (geomElement)
263            {
264            case SALOME_MED::MED_POINT1   : coherent=true;
265            }
266          break;
267        }
268     case SALOME_MED::MED_ALL_ENTITIES :
269        {
270          switch (geomElement)
271            {
272            case SALOME_MED::MED_NONE     : coherent=true;
273            }
274          break;
275        }
276     default :
277         { MESSAGE("Unknown geometric entity");
278           THROW_SALOME_CORBA_EXCEPTION("Unknown geometric entity",
279                                         SALOME::INTERNAL_ERROR);
280         } 
281          break;
282     } 
283
284      switch (geomElement)
285      {
286            case SALOME_MED::MED_ALL_ELEMENTS     : coherent=true;
287      }
288     return coherent;
289 }