]> SALOME platform Git repositories - modules/med.git/blob - src/MEDMEM/MEDMEM_ArrayConvert.hxx
Salome HOME
Fix problem of make distcheck
[modules/med.git] / src / MEDMEM / MEDMEM_ArrayConvert.hxx
1 // Copyright (C) 2007-2012  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 #ifndef MEDMEM_ARRAY_CONVERT_HXX
24 #define MEDMEM_ARRAY_CONVERT_HXX
25
26 namespace MEDMEM {
27
28 template  <class T, class CHECKING_POLICY >
29 MEDMEM_Array<T, FullInterlaceGaussPolicy, CHECKING_POLICY> *
30 ArrayConvert(
31              const MEDMEM_Array< T, NoInterlaceGaussPolicy, CHECKING_POLICY > &array, T* values=0
32              )
33 {
34   MEDMEM_Array<T,FullInterlaceGaussPolicy,CHECKING_POLICY> * myArray;
35   if(values)
36     myArray = new MEDMEM_Array<T,FullInterlaceGaussPolicy,CHECKING_POLICY> 
37       (values,
38        array.getDim(),
39        array.getNbElem(),
40        array.getNbGeoType(),
41        array.getNbElemGeoC(),
42        array.getNbGaussGeo(),
43        true,false
44        );
45   else
46      myArray= new MEDMEM_Array<T,FullInterlaceGaussPolicy,CHECKING_POLICY> 
47       (array.getDim(),
48        array.getNbElem(),
49        array.getNbGeoType(),
50        array.getNbElemGeoC(),
51        array.getNbGaussGeo()
52        );
53   for (int i=1; i <= array.getNbElem() ; i++ )
54     for (int k=1; k<= array.getNbGauss(i); k++ )
55       for (int j=1; j<= array.getDim(); j++ )
56         myArray->setIJK(i,j,k,array.getIJK(i,j,k));
57
58   return myArray;
59
60 }
61
62 template  <class T, class CHECKING_POLICY>
63 MEDMEM_Array<T, NoInterlaceGaussPolicy, CHECKING_POLICY> *
64 ArrayConvert(
65              const MEDMEM_Array< T, FullInterlaceGaussPolicy, CHECKING_POLICY > &array, T* values=0
66              )
67 {
68   MEDMEM_Array<T,NoInterlaceGaussPolicy,CHECKING_POLICY> * myArray;
69   if(values)
70     myArray = new MEDMEM_Array<T, NoInterlaceGaussPolicy,CHECKING_POLICY> (
71                                                                            values,
72                                                                            array.getDim(),
73                                                                            array.getNbElem(),
74                                                                            array.getNbGeoType(),
75                                                                            array.getNbElemGeoC(),
76                                                                            array.getNbGaussGeo(),
77                                                                            true,false
78                                                                            );
79   else
80     myArray = new MEDMEM_Array<T, NoInterlaceGaussPolicy,CHECKING_POLICY> (
81                                                                            array.getDim(),
82                                                                            array.getNbElem(),
83                                                                            array.getNbGeoType(),
84                                                                            array.getNbElemGeoC(),
85                                                                            array.getNbGaussGeo()
86                                                                            );
87   for (int i=1; i <= array.getNbElem() ; i++ )
88     for (int k=1; k<= array.getNbGauss(i); k++ )
89       for (int j=1; j<= array.getDim(); j++ )
90         myArray->setIJK(i,j,k,array.getIJK(i,j,k));
91
92   return myArray;
93
94 }
95
96 template  <class T, class CHECKING_POLICY>
97 MEDMEM_Array<T, FullInterlaceGaussPolicy, CHECKING_POLICY> *
98 ArrayConvert(
99              const MEDMEM_Array< T, NoInterlaceByTypeGaussPolicy, CHECKING_POLICY > &array, T* values=0
100              )
101 {
102   MEDMEM_Array<T,FullInterlaceGaussPolicy,CHECKING_POLICY> * myArray;
103   if(values)
104     myArray = new MEDMEM_Array<T, FullInterlaceGaussPolicy,CHECKING_POLICY> (
105                                                                            values,
106                                                                            array.getDim(),
107                                                                            array.getNbElem(),
108                                                                            array.getNbGeoType(),
109                                                                            array.getNbElemGeoC(),
110                                                                            array.getNbGaussGeo(),
111                                                                            true,false
112                                                                            );
113   else
114     myArray = new MEDMEM_Array<T, FullInterlaceGaussPolicy,CHECKING_POLICY> (
115                                                                            array.getDim(),
116                                                                            array.getNbElem(),
117                                                                            array.getNbGeoType(),
118                                                                            array.getNbElemGeoC(),
119                                                                            array.getNbGaussGeo()
120                                                                            );
121   for (int i=1; i <= array.getNbElem() ; i++ )
122     for (int k=1; k<= array.getNbGauss(i); k++ )
123       for (int j=1; j<= array.getDim(); j++ )
124         myArray->setIJK(i,j,k,array.getIJK(i,j,k));
125   
126   return myArray;
127
128 }
129
130 template  <class T, class CHECKING_POLICY>
131 MEDMEM_Array<T, NoInterlaceGaussPolicy, CHECKING_POLICY> *
132 ArrayConvert2No(
133              const MEDMEM_Array< T, NoInterlaceByTypeGaussPolicy, CHECKING_POLICY > &array, T* values=0
134              )
135 {
136   MEDMEM_Array<T,NoInterlaceGaussPolicy,CHECKING_POLICY> * myArray;
137   if(values)
138     myArray = new MEDMEM_Array<T, NoInterlaceGaussPolicy,CHECKING_POLICY> (
139                                                                            values,
140                                                                            array.getDim(),
141                                                                            array.getNbElem(),
142                                                                            array.getNbGeoType(),
143                                                                            array.getNbElemGeoC(),
144                                                                            array.getNbGaussGeo(),
145                                                                            true,false
146                                                                            );
147   else
148     myArray = new MEDMEM_Array<T, NoInterlaceGaussPolicy,CHECKING_POLICY> (
149                                                                            array.getDim(),
150                                                                            array.getNbElem(),
151                                                                            array.getNbGeoType(),
152                                                                            array.getNbElemGeoC(),
153                                                                            array.getNbGaussGeo()
154                                                                            );
155   for (int i=1; i <= array.getNbElem() ; i++ )
156     for (int k=1; k<= array.getNbGauss(i); k++ )
157       for (int j=1; j<= array.getDim(); j++ )
158         myArray->setIJK(i,j,k,array.getIJK(i,j,k));
159   
160   return myArray;
161
162 }
163
164 template  <class T, class CHECKING_POLICY>
165 MEDMEM_Array<T, NoInterlaceNoGaussPolicy, CHECKING_POLICY> *
166 ArrayConvert(
167              const MEDMEM_Array< T, FullInterlaceNoGaussPolicy, CHECKING_POLICY > &array, T* values=0
168              )
169 {
170   MEDMEM_Array<T,NoInterlaceNoGaussPolicy,CHECKING_POLICY> * myArray;
171   if(values)
172     myArray=new MEDMEM_Array<T, NoInterlaceNoGaussPolicy, CHECKING_POLICY> ( values,
173                                                                              array.getDim(),
174                                                                              array.getNbElem(),
175                                                                              true,false
176                                                                              );
177   else
178     myArray = new MEDMEM_Array<T, NoInterlaceNoGaussPolicy, CHECKING_POLICY> (
179                                                                               array.getDim(),
180                                                                               array.getNbElem()
181                                                                               );
182   for (int i=1; i <= array.getNbElem() ; i++ )
183     for (int j=1; j<= array.getDim(); j++ )
184       myArray->setIJ(i,j,array.getIJ(i,j));
185
186   return myArray;
187
188 }
189
190 template  <class T, class CHECKING_POLICY>
191 MEDMEM_Array<T, FullInterlaceNoGaussPolicy, CHECKING_POLICY> *
192 ArrayConvert(
193              const MEDMEM_Array< T, NoInterlaceByTypeNoGaussPolicy, CHECKING_POLICY > &array, T* values=0
194              )
195 {
196   MEDMEM_Array<T,FullInterlaceNoGaussPolicy,CHECKING_POLICY> * myArray;
197   if(values)
198     myArray=new MEDMEM_Array<T, FullInterlaceNoGaussPolicy, CHECKING_POLICY> ( values,
199                                                                              array.getDim(),
200                                                                              array.getNbElem(),
201                                                                              true,false
202                                                                              );
203   else
204     myArray = new MEDMEM_Array<T, FullInterlaceNoGaussPolicy, CHECKING_POLICY> (
205                                                                               array.getDim(),
206                                                                               array.getNbElem()
207                                                                               );
208   for (int i=1; i <= array.getNbElem() ; i++ )
209     for (int j=1; j<= array.getDim(); j++ )
210       myArray->setIJ(i,j,array.getIJ(i,j));
211   
212   return myArray;
213
214 }
215
216 template  <class T, class CHECKING_POLICY>
217 MEDMEM_Array<T, NoInterlaceNoGaussPolicy, CHECKING_POLICY> *
218 ArrayConvert2No(
219              const MEDMEM_Array< T, NoInterlaceByTypeNoGaussPolicy, CHECKING_POLICY > &array, T* values=0
220              )
221 {
222   MEDMEM_Array<T,NoInterlaceNoGaussPolicy,CHECKING_POLICY> * myArray;
223   if(values)
224     myArray=new MEDMEM_Array<T, NoInterlaceNoGaussPolicy, CHECKING_POLICY> ( values,
225                                                                              array.getDim(),
226                                                                              array.getNbElem(),
227                                                                              true,false
228                                                                              );
229   else
230     myArray = new MEDMEM_Array<T, NoInterlaceNoGaussPolicy, CHECKING_POLICY> (
231                                                                               array.getDim(),
232                                                                               array.getNbElem()
233                                                                               );
234   for (int i=1; i <= array.getNbElem() ; i++ )
235     for (int j=1; j<= array.getDim(); j++ )
236       myArray->setIJ(i,j,array.getIJ(i,j));
237   
238   return myArray;
239
240 }
241
242 template  <class T, class CHECKING_POLICY>
243 MEDMEM_Array<T, FullInterlaceNoGaussPolicy, CHECKING_POLICY> *
244 ArrayConvert(
245              const MEDMEM_Array< T, NoInterlaceNoGaussPolicy, CHECKING_POLICY > &array, T* values=0
246              )
247 {
248   MEDMEM_Array<T,FullInterlaceNoGaussPolicy,CHECKING_POLICY> * myArray;
249   if(values)
250     myArray= new MEDMEM_Array<T, FullInterlaceNoGaussPolicy, CHECKING_POLICY> (values,
251                                                                                array.getDim(),
252                                                                                array.getNbElem(),
253                                                                                true,false
254                                                                                );
255   else
256     myArray= new MEDMEM_Array<T, FullInterlaceNoGaussPolicy, CHECKING_POLICY> (
257                                                                                array.getDim(),
258                                                                                array.getNbElem()
259                                                                                );
260   for (int i=1; i <= array.getNbElem() ; i++ )
261     for (int j=1; j<= array.getDim(); j++ )
262       myArray->setIJ(i,j,array.getIJ(i,j));
263
264   return myArray;
265
266 }
267
268
269
270 // template  <class T,class INTERLACING_POLICY,class INTERLACING_POLICY_OTHER,
271 //         class CHECKING_POLICY>
272 // void ArrayConvert(
273 //                const MEDMEM_Array< T, INTERLACING_POLICY, CHECKING_POLICY > & arrayin,
274 //                MEDMEM_Array< T, INTERLACING_POLICY_OTHER, CHECKING_POLICY> * & arrayout
275 //                )
276 // {
277
278 //   MEDMEM_Array<T,INTERLACING_POLICY_OTHER,CHECKING_POLICY> *  myArray;
279 //   myArray= new MEDMEM_Array< T, INTERLACING_POLICY_OTHER, CHECKING_POLICY > (
280 //                    arrayin.getDim(),
281 //                    arrayin.getNbElem(),
282 //                    arrayin.getNbGeoType(),
283 //                    arrayin.getNbElemGeoC(),
284 //                    arrayin.getNbGaussGeo()
285 //                    );
286
287 //   for (int i=1; i <= arrayin.getNbElem() ; i++ )
288 //     for (int k=1; k<= arrayin.getNbGauss(i); k++ )
289 //       for (int j=1; j<= arrayin.getDim(); j++ )
290 //      myArray->setIJK(i,j,k,arrayin.getIJK(i,j,k));
291
292 //   arrayout=myArray;
293
294 // };
295
296
297
298
299
300 // template  <class ARRAY_ELEMENT_TYPE,
301 //         class GAUSS_TAG,class CHECKING_POLICY=IndexCheckPolicy>
302 //            typename MEDMEM_ArrayInterface<ARRAY_ELEMENT_TYPE,
303 //                    FullInterlace,
304 //                    GAUSS_TAG,
305 //                    CHECKING_POLICY>::Array &
306 // convertBis(const typename MEDMEM_ArrayInterface<
307 //         ARRAY_ELEMENT_TYPE,
308 //         NoInterlace,
309 //         GAUSS_TAG,
310 //         CHECKING_POLICY>::Array & array ) {
311 //   std::cout << "-------- Convert 3" << std::endl;
312 // };
313
314 } //END NAMESPACE
315 #endif