Salome HOME
3e28a515c6c2d929f5878b6a4fab49d84a99503b
[tools/medcoupling.git] / src / MEDCoupling_Swig / MEDCouplingCommon.i
1 // Copyright (C) 2007-2013  CEA/DEN, EDF R&D
2 //
3 // This library is free software; you can redistribute it and/or
4 // modify it under the terms of the GNU Lesser General Public
5 // License as published by the Free Software Foundation; either
6 // version 2.1 of the License.
7 //
8 // This library is distributed in the hope that it will be useful,
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
11 // Lesser General Public License for more details.
12 //
13 // You should have received a copy of the GNU Lesser General Public
14 // License along with this library; if not, write to the Free Software
15 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
16 //
17 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
18 //
19
20 %module MEDCoupling
21
22 #define MEDCOUPLING_EXPORT
23
24 %include std_vector.i
25 %include std_string.i
26
27 %{
28 #include "MEDCouplingMemArray.hxx"
29 #include "MEDCouplingUMesh.hxx"
30 #include "MEDCouplingExtrudedMesh.hxx"
31 #include "MEDCouplingCMesh.hxx"
32 #include "MEDCouplingCurveLinearMesh.hxx"
33 #include "MEDCoupling1GTUMesh.hxx"
34 #include "MEDCouplingField.hxx"
35 #include "MEDCouplingFieldDouble.hxx"
36 #include "MEDCouplingFieldTemplate.hxx"
37 #include "MEDCouplingGaussLocalization.hxx"
38 #include "MEDCouplingAutoRefCountObjectPtr.hxx"
39 #include "MEDCouplingMultiFields.hxx"
40 #include "MEDCouplingFieldOverTime.hxx"
41 #include "MEDCouplingDefinitionTime.hxx"
42 #include "MEDCouplingFieldDiscretization.hxx"
43 #include "MEDCouplingTypemaps.i"
44
45 #include "InterpKernelAutoPtr.hxx"
46
47 using namespace ParaMEDMEM;
48 using namespace INTERP_KERNEL;
49
50 %}
51
52 %template(ivec) std::vector<int>;
53 %template(dvec) std::vector<double>;
54 %template(svec) std::vector<std::string>;
55
56 ////////////////////
57 %typemap(out) ParaMEDMEM::MEDCouplingMesh*
58 {
59   $result=convertMesh($1,$owner);
60 }
61
62 %typemap(out) MEDCouplingMesh*
63 {
64   $result=convertMesh($1,$owner);
65 }
66 //$$$$$$$$$$$$$$$$$$
67
68 ////////////////////
69 %typemap(out) ParaMEDMEM::MEDCouplingPointSet*
70 {
71   $result=convertMesh($1,$owner);
72 }
73
74 %typemap(out) MEDCouplingPointSet*
75 {
76   $result=convertMesh($1,$owner);
77 }
78 //$$$$$$$$$$$$$$$$$$
79
80
81 ////////////////////
82 %typemap(out) ParaMEDMEM::MEDCoupling1GTUMesh*
83 {
84   $result=convertMesh($1,$owner);
85 }
86
87 %typemap(out) MEDCoupling1GTUMesh*
88 {
89   $result=convertMesh($1,$owner);
90 }
91 //$$$$$$$$$$$$$$$$$$
92
93 ////////////////////
94 %typemap(out) ParaMEDMEM::MEDCouplingStructuredMesh*
95 {
96   $result=convertMesh($1,$owner);
97 }
98
99 %typemap(out) MEDCouplingStructuredMesh*
100 {
101   $result=convertMesh($1,$owner);
102 }
103 //$$$$$$$$$$$$$$$$$$
104
105 ////////////////////
106 %typemap(out) ParaMEDMEM::MEDCouplingFieldDiscretization*
107 {
108   $result=convertFieldDiscretization($1,$owner);
109 }
110
111 %typemap(out) MEDCouplingFieldDiscretization*
112 {
113   $result=convertFieldDiscretization($1,$owner);
114 }
115 //$$$$$$$$$$$$$$$$$$
116
117 ////////////////////
118 %typemap(out) ParaMEDMEM::MEDCouplingMultiFields*
119 {
120   $result=convertMultiFields($1,$owner);
121 }
122
123 %typemap(out) MEDCouplingMultiFields*
124 {
125   $result=convertMultiFields($1,$owner);
126 }
127 //$$$$$$$$$$$$$$$$$$
128
129 ////////////////////
130 %typemap(out) ParaMEDMEM::DataArray*
131 {
132   $result=convertDataArray($1,$owner);
133 }
134
135 %typemap(out) DataArray*
136 {
137   $result=convertDataArray($1,$owner);
138 }
139 //$$$$$$$$$$$$$$$$$$
140
141 ////////////////////
142 %typemap(out) ParaMEDMEM::DataArrayChar*
143 {
144   $result=convertDataArrayChar($1,$owner);
145 }
146
147 %typemap(out) DataArrayChar*
148 {
149   $result=convertDataArrayChar($1,$owner);
150 }
151 //$$$$$$$$$$$$$$$$$$
152
153 #ifdef WITH_NUMPY
154 %init %{ import_array(); %}
155 #endif
156
157 %feature("autodoc", "1");
158 %feature("docstring");
159
160 %newobject ParaMEDMEM::MEDCouplingFieldDiscretization::New;
161 %newobject ParaMEDMEM::MEDCouplingFieldDiscretization::getOffsetArr;
162 %newobject ParaMEDMEM::MEDCouplingFieldDiscretization::deepCpy;
163 %newobject ParaMEDMEM::MEDCouplingFieldDiscretization::clone;
164 %newobject ParaMEDMEM::MEDCouplingFieldDiscretization::clonePart;
165 %newobject ParaMEDMEM::MEDCouplingFieldDiscretization::clonePartRange;
166 %newobject ParaMEDMEM::MEDCouplingFieldDiscretization::getMeasureField;
167 %newobject ParaMEDMEM::MEDCouplingFieldDiscretization::getOffsetArr;
168 %newobject ParaMEDMEM::MEDCouplingFieldDiscretization::getLocalizationOfDiscValues;
169 %newobject ParaMEDMEM::MEDCouplingFieldDiscretization::getValueOnMulti;
170 %newobject ParaMEDMEM::MEDCouplingFieldDiscretization::computeTupleIdsToSelectFromCellIds;
171 %newobject ParaMEDMEM::MEDCouplingFieldDiscretization::buildSubMeshData;
172 %newobject ParaMEDMEM::MEDCouplingField::buildMeasureField;
173 %newobject ParaMEDMEM::MEDCouplingField::getLocalizationOfDiscr;
174 %newobject ParaMEDMEM::MEDCouplingField::computeTupleIdsToSelectFromCellIds;
175 %newobject ParaMEDMEM::MEDCouplingFieldDouble::New;
176 %newobject ParaMEDMEM::MEDCouplingFieldDouble::getArray;
177 %newobject ParaMEDMEM::MEDCouplingFieldDouble::getEndArray;
178 %newobject ParaMEDMEM::MEDCouplingFieldDouble::MergeFields;
179 %newobject ParaMEDMEM::MEDCouplingFieldDouble::MeldFields;
180 %newobject ParaMEDMEM::MEDCouplingFieldDouble::doublyContractedProduct;
181 %newobject ParaMEDMEM::MEDCouplingFieldDouble::determinant;
182 %newobject ParaMEDMEM::MEDCouplingFieldDouble::eigenValues;
183 %newobject ParaMEDMEM::MEDCouplingFieldDouble::eigenVectors;
184 %newobject ParaMEDMEM::MEDCouplingFieldDouble::inverse;
185 %newobject ParaMEDMEM::MEDCouplingFieldDouble::trace;
186 %newobject ParaMEDMEM::MEDCouplingFieldDouble::deviator;
187 %newobject ParaMEDMEM::MEDCouplingFieldDouble::magnitude;
188 %newobject ParaMEDMEM::MEDCouplingFieldDouble::maxPerTuple;
189 %newobject ParaMEDMEM::MEDCouplingFieldDouble::keepSelectedComponents;
190 %newobject ParaMEDMEM::MEDCouplingFieldDouble::extractSlice3D;
191 %newobject ParaMEDMEM::MEDCouplingFieldDouble::DotFields;
192 %newobject ParaMEDMEM::MEDCouplingFieldDouble::dot;
193 %newobject ParaMEDMEM::MEDCouplingFieldDouble::CrossProductFields;
194 %newobject ParaMEDMEM::MEDCouplingFieldDouble::crossProduct;
195 %newobject ParaMEDMEM::MEDCouplingFieldDouble::MaxFields;
196 %newobject ParaMEDMEM::MEDCouplingFieldDouble::max;
197 %newobject ParaMEDMEM::MEDCouplingFieldDouble::MinFields;
198 %newobject ParaMEDMEM::MEDCouplingFieldDouble::AddFields;
199 %newobject ParaMEDMEM::MEDCouplingFieldDouble::SubstractFields;
200 %newobject ParaMEDMEM::MEDCouplingFieldDouble::MultiplyFields;
201 %newobject ParaMEDMEM::MEDCouplingFieldDouble::DivideFields;
202 %newobject ParaMEDMEM::MEDCouplingFieldDouble::min;
203 %newobject ParaMEDMEM::MEDCouplingFieldDouble::negate;
204 %newobject ParaMEDMEM::MEDCouplingFieldDouble::getIdsInRange;
205 %newobject ParaMEDMEM::MEDCouplingFieldDouble::buildSubPart;
206 %newobject ParaMEDMEM::MEDCouplingFieldDouble::buildSubPartRange;
207 %newobject ParaMEDMEM::MEDCouplingFieldDouble::__getitem__;
208 %newobject ParaMEDMEM::MEDCouplingFieldDouble::__neg__;
209 %newobject ParaMEDMEM::MEDCouplingFieldDouble::__add__;
210 %newobject ParaMEDMEM::MEDCouplingFieldDouble::__sub__;
211 %newobject ParaMEDMEM::MEDCouplingFieldDouble::__mul__;
212 %newobject ParaMEDMEM::MEDCouplingFieldDouble::__div__;
213 %newobject ParaMEDMEM::MEDCouplingFieldDouble::__pow__;
214 %newobject ParaMEDMEM::MEDCouplingFieldDouble::__radd__;
215 %newobject ParaMEDMEM::MEDCouplingFieldDouble::__rsub__;
216 %newobject ParaMEDMEM::MEDCouplingFieldDouble::__rmul__;
217 %newobject ParaMEDMEM::MEDCouplingFieldDouble::__rdiv__;
218 %newobject ParaMEDMEM::MEDCouplingFieldDouble::clone;
219 %newobject ParaMEDMEM::MEDCouplingFieldDouble::cloneWithMesh;
220 %newobject ParaMEDMEM::MEDCouplingFieldDouble::deepCpy;
221 %newobject ParaMEDMEM::MEDCouplingFieldDouble::buildNewTimeReprFromThis;
222 %newobject ParaMEDMEM::MEDCouplingFieldDouble::getValueOnMulti;
223 %newobject ParaMEDMEM::MEDCouplingFieldTemplate::New;
224 %newobject ParaMEDMEM::DataArray::deepCpy;
225 %newobject ParaMEDMEM::DataArray::selectByTupleRanges;
226 %newobject ParaMEDMEM::DataArray::selectByTupleId;
227 %newobject ParaMEDMEM::DataArray::selectByTupleIdSafe;
228 %newobject ParaMEDMEM::DataArray::selectByTupleId2;
229 %newobject ParaMEDMEM::DataArray::Aggregate;
230 %newobject ParaMEDMEM::DataArrayInt::New;
231 %newobject ParaMEDMEM::DataArrayInt::__iter__;
232 %newobject ParaMEDMEM::DataArrayInt::convertToDblArr;
233 %newobject ParaMEDMEM::DataArrayInt::performCpy;
234 %newobject ParaMEDMEM::DataArrayInt::substr;
235 %newobject ParaMEDMEM::DataArrayInt::changeNbOfComponents;
236 %newobject ParaMEDMEM::DataArrayInt::accumulatePerChunck;
237 %newobject ParaMEDMEM::DataArrayInt::checkAndPreparePermutation;
238 %newobject ParaMEDMEM::DataArrayInt::transformWithIndArrR;
239 %newobject ParaMEDMEM::DataArrayInt::renumber;
240 %newobject ParaMEDMEM::DataArrayInt::renumberR;
241 %newobject ParaMEDMEM::DataArrayInt::renumberAndReduce;
242 %newobject ParaMEDMEM::DataArrayInt::invertArrayO2N2N2O;
243 %newobject ParaMEDMEM::DataArrayInt::invertArrayN2O2O2N;
244 %newobject ParaMEDMEM::DataArrayInt::invertArrayO2N2N2OBis;
245 %newobject ParaMEDMEM::DataArrayInt::getIdsEqual;
246 %newobject ParaMEDMEM::DataArrayInt::getIdsNotEqual;
247 %newobject ParaMEDMEM::DataArrayInt::getIdsEqualList;
248 %newobject ParaMEDMEM::DataArrayInt::getIdsNotEqualList;
249 %newobject ParaMEDMEM::DataArrayInt::negate;
250 %newobject ParaMEDMEM::DataArrayInt::getIdsInRange;
251 %newobject ParaMEDMEM::DataArrayInt::Aggregate;
252 %newobject ParaMEDMEM::DataArrayInt::AggregateIndexes;
253 %newobject ParaMEDMEM::DataArrayInt::Meld;
254 %newobject ParaMEDMEM::DataArrayInt::Add;
255 %newobject ParaMEDMEM::DataArrayInt::Substract;
256 %newobject ParaMEDMEM::DataArrayInt::Multiply;
257 %newobject ParaMEDMEM::DataArrayInt::Divide;
258 %newobject ParaMEDMEM::DataArrayInt::Pow;
259 %newobject ParaMEDMEM::DataArrayInt::BuildUnion;
260 %newobject ParaMEDMEM::DataArrayInt::BuildIntersection;
261 %newobject ParaMEDMEM::DataArrayInt::Range;
262 %newobject ParaMEDMEM::DataArrayInt::fromNoInterlace;
263 %newobject ParaMEDMEM::DataArrayInt::toNoInterlace;
264 %newobject ParaMEDMEM::DataArrayInt::buildComplement;
265 %newobject ParaMEDMEM::DataArrayInt::buildUnion;
266 %newobject ParaMEDMEM::DataArrayInt::buildSubstraction;
267 %newobject ParaMEDMEM::DataArrayInt::buildSubstractionOptimized;
268 %newobject ParaMEDMEM::DataArrayInt::buildIntersection;
269 %newobject ParaMEDMEM::DataArrayInt::buildUnique;
270 %newobject ParaMEDMEM::DataArrayInt::deltaShiftIndex;
271 %newobject ParaMEDMEM::DataArrayInt::buildExplicitArrByRanges;
272 %newobject ParaMEDMEM::DataArrayInt::buildExplicitArrOfSliceOnScaledArr;
273 %newobject ParaMEDMEM::DataArrayInt::findRangeIdForEachTuple;
274 %newobject ParaMEDMEM::DataArrayInt::findIdInRangeForEachTuple;
275 %newobject ParaMEDMEM::DataArrayInt::duplicateEachTupleNTimes;
276 %newobject ParaMEDMEM::DataArrayInt::buildPermutationArr;
277 %newobject ParaMEDMEM::DataArrayInt::buildPermArrPerLevel;
278 %newobject ParaMEDMEM::DataArrayInt::getDifferentValues;
279 %newobject ParaMEDMEM::DataArrayInt::FindPermutationFromFirstToSecond;
280 %newobject ParaMEDMEM::DataArrayInt::__neg__;
281 %newobject ParaMEDMEM::DataArrayInt::__add__;
282 %newobject ParaMEDMEM::DataArrayInt::__radd__;
283 %newobject ParaMEDMEM::DataArrayInt::__sub__;
284 %newobject ParaMEDMEM::DataArrayInt::__rsub__;
285 %newobject ParaMEDMEM::DataArrayInt::__mul__;
286 %newobject ParaMEDMEM::DataArrayInt::__rmul__;
287 %newobject ParaMEDMEM::DataArrayInt::__div__;
288 %newobject ParaMEDMEM::DataArrayInt::__rdiv__;
289 %newobject ParaMEDMEM::DataArrayInt::__mod__;
290 %newobject ParaMEDMEM::DataArrayInt::__rmod__;
291 %newobject ParaMEDMEM::DataArrayInt::__pow__;
292 %newobject ParaMEDMEM::DataArrayInt::__rpow__;
293 %newobject ParaMEDMEM::DataArrayIntTuple::buildDAInt;
294 %newobject ParaMEDMEM::DataArrayChar::convertToIntArr;
295 %newobject ParaMEDMEM::DataArrayChar::renumber;
296 %newobject ParaMEDMEM::DataArrayChar::renumberR;
297 %newobject ParaMEDMEM::DataArrayChar::renumberAndReduce;
298 %newobject ParaMEDMEM::DataArrayChar::changeNbOfComponents;
299 %newobject ParaMEDMEM::DataArrayChar::getIdsEqual;
300 %newobject ParaMEDMEM::DataArrayChar::getIdsNotEqual;
301 %newobject ParaMEDMEM::DataArrayChar::Aggregate;
302 %newobject ParaMEDMEM::DataArrayChar::Meld;
303 %newobject ParaMEDMEM::DataArrayByte::New;
304 %newobject ParaMEDMEM::DataArrayByte::__iter__;
305 %newobject ParaMEDMEM::DataArrayByte::performCpy;
306 %newobject ParaMEDMEM::DataArrayByteTuple::buildDAByte;
307 %newobject ParaMEDMEM::DataArrayChar::substr;
308 %newobject ParaMEDMEM::DataArrayAsciiChar::New;
309 %newobject ParaMEDMEM::DataArrayAsciiChar::__iter__;
310 %newobject ParaMEDMEM::DataArrayAsciiChar::performCpy;
311 %newobject ParaMEDMEM::DataArrayAsciiCharTuple::buildDAAsciiChar;
312 %newobject ParaMEDMEM::DataArrayDouble::New;
313 %newobject ParaMEDMEM::DataArrayDouble::__iter__;
314 %newobject ParaMEDMEM::DataArrayDouble::convertToIntArr;
315 %newobject ParaMEDMEM::DataArrayDouble::performCpy;
316 %newobject ParaMEDMEM::DataArrayDouble::Aggregate;
317 %newobject ParaMEDMEM::DataArrayDouble::Meld;
318 %newobject ParaMEDMEM::DataArrayDouble::Dot;
319 %newobject ParaMEDMEM::DataArrayDouble::CrossProduct;
320 %newobject ParaMEDMEM::DataArrayDouble::Add;
321 %newobject ParaMEDMEM::DataArrayDouble::Substract;
322 %newobject ParaMEDMEM::DataArrayDouble::Multiply;
323 %newobject ParaMEDMEM::DataArrayDouble::Divide;
324 %newobject ParaMEDMEM::DataArrayDouble::Pow;
325 %newobject ParaMEDMEM::DataArrayDouble::substr;
326 %newobject ParaMEDMEM::DataArrayDouble::changeNbOfComponents;
327 %newobject ParaMEDMEM::DataArrayDouble::accumulatePerChunck;
328 %newobject ParaMEDMEM::DataArrayDouble::getIdsInRange;
329 %newobject ParaMEDMEM::DataArrayDouble::negate;
330 %newobject ParaMEDMEM::DataArrayDouble::applyFunc;
331 %newobject ParaMEDMEM::DataArrayDouble::applyFunc2;
332 %newobject ParaMEDMEM::DataArrayDouble::applyFunc3;
333 %newobject ParaMEDMEM::DataArrayDouble::doublyContractedProduct;
334 %newobject ParaMEDMEM::DataArrayDouble::determinant;
335 %newobject ParaMEDMEM::DataArrayDouble::eigenValues;
336 %newobject ParaMEDMEM::DataArrayDouble::eigenVectors;
337 %newobject ParaMEDMEM::DataArrayDouble::inverse;
338 %newobject ParaMEDMEM::DataArrayDouble::trace;
339 %newobject ParaMEDMEM::DataArrayDouble::deviator;
340 %newobject ParaMEDMEM::DataArrayDouble::magnitude;
341 %newobject ParaMEDMEM::DataArrayDouble::maxPerTuple;
342 %newobject ParaMEDMEM::DataArrayDouble::computeBBoxPerTuple;
343 %newobject ParaMEDMEM::DataArrayDouble::buildEuclidianDistanceDenseMatrix;
344 %newobject ParaMEDMEM::DataArrayDouble::buildEuclidianDistanceDenseMatrixWith;
345 %newobject ParaMEDMEM::DataArrayDouble::renumber;
346 %newobject ParaMEDMEM::DataArrayDouble::renumberR;
347 %newobject ParaMEDMEM::DataArrayDouble::renumberAndReduce;
348 %newobject ParaMEDMEM::DataArrayDouble::fromNoInterlace;
349 %newobject ParaMEDMEM::DataArrayDouble::toNoInterlace;
350 %newobject ParaMEDMEM::DataArrayDouble::fromPolarToCart;
351 %newobject ParaMEDMEM::DataArrayDouble::fromCylToCart;
352 %newobject ParaMEDMEM::DataArrayDouble::fromSpherToCart;
353 %newobject ParaMEDMEM::DataArrayDouble::getDifferentValues;
354 %newobject ParaMEDMEM::DataArrayDouble::findClosestTupleId;
355 %newobject ParaMEDMEM::DataArrayDouble::duplicateEachTupleNTimes;
356 %newobject ParaMEDMEM::DataArrayDouble::__neg__;
357 %newobject ParaMEDMEM::DataArrayDouble::__radd__;
358 %newobject ParaMEDMEM::DataArrayDouble::__rsub__;
359 %newobject ParaMEDMEM::DataArrayDouble::__rmul__;
360 %newobject ParaMEDMEM::DataArrayDouble::__rdiv__;
361 %newobject ParaMEDMEM::DataArrayDouble::__pow__;
362 %newobject ParaMEDMEM::DataArrayDouble::__rpow__;
363 %newobject ParaMEDMEM::DataArrayDoubleTuple::buildDADouble;
364 %newobject ParaMEDMEM::MEDCouplingMesh::deepCpy;
365 %newobject ParaMEDMEM::MEDCouplingMesh::checkDeepEquivalOnSameNodesWith;
366 %newobject ParaMEDMEM::MEDCouplingMesh::checkTypeConsistencyAndContig;
367 %newobject ParaMEDMEM::MEDCouplingMesh::computeNbOfNodesPerCell;
368 %newobject ParaMEDMEM::MEDCouplingMesh::computeNbOfFacesPerCell;
369 %newobject ParaMEDMEM::MEDCouplingMesh::computeEffectiveNbOfNodesPerCell;
370 %newobject ParaMEDMEM::MEDCouplingMesh::buildPartRange;
371 %newobject ParaMEDMEM::MEDCouplingMesh::giveCellsWithType;
372 %newobject ParaMEDMEM::MEDCouplingMesh::getCoordinatesAndOwner;
373 %newobject ParaMEDMEM::MEDCouplingMesh::getBarycenterAndOwner;
374 %newobject ParaMEDMEM::MEDCouplingMesh::computeIsoBarycenterOfNodesPerCell;
375 %newobject ParaMEDMEM::MEDCouplingMesh::buildOrthogonalField;
376 %newobject ParaMEDMEM::MEDCouplingMesh::getCellIdsFullyIncludedInNodeIds;
377 %newobject ParaMEDMEM::MEDCouplingMesh::mergeMyselfWith;
378 %newobject ParaMEDMEM::MEDCouplingMesh::fillFromAnalytic;
379 %newobject ParaMEDMEM::MEDCouplingMesh::fillFromAnalytic2;
380 %newobject ParaMEDMEM::MEDCouplingMesh::fillFromAnalytic3;
381 %newobject ParaMEDMEM::MEDCouplingMesh::getMeasureField;
382 %newobject ParaMEDMEM::MEDCouplingMesh::simplexize;
383 %newobject ParaMEDMEM::MEDCouplingMesh::buildUnstructured;
384 %newobject ParaMEDMEM::MEDCouplingMesh::MergeMeshes;
385 %newobject ParaMEDMEM::MEDCouplingPointSet::zipCoordsTraducer;
386 %newobject ParaMEDMEM::MEDCouplingPointSet::getCellsInBoundingBox;
387 %newobject ParaMEDMEM::MEDCouplingPointSet::findBoundaryNodes;
388 %newobject ParaMEDMEM::MEDCouplingPointSet::buildBoundaryMesh;
389 %newobject ParaMEDMEM::MEDCouplingPointSet::MergeNodesArray;
390 %newobject ParaMEDMEM::MEDCouplingPointSet::buildPartOfMySelf2;
391 %newobject ParaMEDMEM::MEDCouplingPointSet::BuildInstanceFromMeshType;
392 %newobject ParaMEDMEM::MEDCouplingPointSet::zipConnectivityTraducer;
393 %newobject ParaMEDMEM::MEDCouplingPointSet::mergeMyselfWithOnSameCoords;
394 %newobject ParaMEDMEM::MEDCouplingPointSet::fillCellIdsToKeepFromNodeIds;
395 %newobject ParaMEDMEM::MEDCouplingPointSet::getCellIdsLyingOnNodes;
396 %newobject ParaMEDMEM::MEDCouplingPointSet::deepCpyConnectivityOnly;
397 %newobject ParaMEDMEM::MEDCouplingPointSet::__getitem__;
398 %newobject ParaMEDMEM::MEDCouplingUMesh::New;
399 %newobject ParaMEDMEM::MEDCouplingUMesh::getNodalConnectivity;
400 %newobject ParaMEDMEM::MEDCouplingUMesh::getNodalConnectivityIndex;
401 %newobject ParaMEDMEM::MEDCouplingUMesh::clone;
402 %newobject ParaMEDMEM::MEDCouplingUMesh::__iter__;
403 %newobject ParaMEDMEM::MEDCouplingUMesh::cellsByType;
404 %newobject ParaMEDMEM::MEDCouplingUMesh::buildDescendingConnectivity;
405 %newobject ParaMEDMEM::MEDCouplingUMesh::buildDescendingConnectivity2;
406 %newobject ParaMEDMEM::MEDCouplingUMesh::explode3DMeshTo1D;
407 %newobject ParaMEDMEM::MEDCouplingUMesh::buildExtrudedMesh;
408 %newobject ParaMEDMEM::MEDCouplingUMesh::buildSpreadZonesWithPoly;
409 %newobject ParaMEDMEM::MEDCouplingUMesh::MergeUMeshes;
410 %newobject ParaMEDMEM::MEDCouplingUMesh::MergeUMeshesOnSameCoords;
411 %newobject ParaMEDMEM::MEDCouplingUMesh::ComputeSpreadZoneGradually;
412 %newobject ParaMEDMEM::MEDCouplingUMesh::ComputeSpreadZoneGraduallyFromSeed;
413 %newobject ParaMEDMEM::MEDCouplingUMesh::buildNewNumberingFromCommNodesFrmt;
414 %newobject ParaMEDMEM::MEDCouplingUMesh::rearrange2ConsecutiveCellTypes;
415 %newobject ParaMEDMEM::MEDCouplingUMesh::sortCellsInMEDFileFrmt;
416 %newobject ParaMEDMEM::MEDCouplingUMesh::getRenumArrForMEDFileFrmt;
417 %newobject ParaMEDMEM::MEDCouplingUMesh::convertCellArrayPerGeoType;
418 %newobject ParaMEDMEM::MEDCouplingUMesh::computeFetchedNodeIds;
419 %newobject ParaMEDMEM::MEDCouplingUMesh::getRenumArrForConsecutiveCellTypesSpec;
420 %newobject ParaMEDMEM::MEDCouplingUMesh::buildDirectionVectorField;
421 %newobject ParaMEDMEM::MEDCouplingUMesh::convertLinearCellsToQuadratic;
422 %newobject ParaMEDMEM::MEDCouplingUMesh::getEdgeRatioField;
423 %newobject ParaMEDMEM::MEDCouplingUMesh::getAspectRatioField;
424 %newobject ParaMEDMEM::MEDCouplingUMesh::getWarpField;
425 %newobject ParaMEDMEM::MEDCouplingUMesh::getSkewField;
426 %newobject ParaMEDMEM::MEDCouplingUMesh::getPartBarycenterAndOwner;
427 %newobject ParaMEDMEM::MEDCouplingUMesh::getPartMeasureField;
428 %newobject ParaMEDMEM::MEDCouplingUMesh::buildPartOrthogonalField;
429 %newobject ParaMEDMEM::MEDCouplingUMesh::keepCellIdsByType;
430 %newobject ParaMEDMEM::MEDCouplingUMesh::Build0DMeshFromCoords;
431 %newobject ParaMEDMEM::MEDCouplingUMesh::findAndCorrectBadOriented3DExtrudedCells;
432 %newobject ParaMEDMEM::MEDCouplingUMesh::findAndCorrectBadOriented3DCells;
433 %newobject ParaMEDMEM::MEDCouplingUMesh::convertIntoSingleGeoTypeMesh;
434 %newobject ParaMEDMEM::MEDCouplingUMesh::convertNodalConnectivityToStaticGeoTypeMesh;
435 %newobject ParaMEDMEM::MEDCouplingUMesh::findCellIdsOnBoundary;
436 %newobject ParaMEDMEM::MEDCouplingUMesh::computeSkin;
437 %newobject ParaMEDMEM::MEDCouplingUMesh::buildSetInstanceFromThis;
438 %newobject ParaMEDMEM::MEDCouplingUMesh::getCellIdsCrossingPlane;
439 %newobject ParaMEDMEM::MEDCouplingUMesh::convexEnvelop2D;
440 %newobject ParaMEDMEM::MEDCouplingUMesh::ComputeRangesFromTypeDistribution;
441 %newobject ParaMEDMEM::MEDCouplingUMeshCellByTypeEntry::__iter__;
442 %newobject ParaMEDMEM::MEDCouplingUMeshCellEntry::__iter__;
443 %newobject ParaMEDMEM::MEDCoupling1GTUMesh::New;
444 %newobject ParaMEDMEM::MEDCoupling1GTUMesh::getNodalConnectivity;
445 %newobject ParaMEDMEM::MEDCoupling1GTUMesh::AggregateOnSameCoordsToUMesh;
446 %newobject ParaMEDMEM::MEDCoupling1SGTUMesh::New;
447 %newobject ParaMEDMEM::MEDCoupling1SGTUMesh::buildSetInstanceFromThis;
448 %newobject ParaMEDMEM::MEDCoupling1SGTUMesh::Merge1SGTUMeshes;
449 %newobject ParaMEDMEM::MEDCoupling1SGTUMesh::Merge1SGTUMeshesOnSameCoords;
450 %newobject ParaMEDMEM::MEDCoupling1DGTUMesh::New;
451 %newobject ParaMEDMEM::MEDCoupling1DGTUMesh::getNodalConnectivityIndex;
452 %newobject ParaMEDMEM::MEDCoupling1DGTUMesh::buildSetInstanceFromThis;
453 %newobject ParaMEDMEM::MEDCoupling1DGTUMesh::Merge1DGTUMeshes;
454 %newobject ParaMEDMEM::MEDCoupling1DGTUMesh::Merge1DGTUMeshesOnSameCoords;
455 %newobject ParaMEDMEM::MEDCouplingExtrudedMesh::New;
456 %newobject ParaMEDMEM::MEDCouplingExtrudedMesh::build3DUnstructuredMesh;
457 %newobject ParaMEDMEM::MEDCouplingStructuredMesh::buildStructuredSubPart;
458 %newobject ParaMEDMEM::MEDCouplingStructuredMesh::build1SGTUnstructured;
459 %newobject ParaMEDMEM::MEDCouplingStructuredMesh::BuildExplicitIdsFrom;
460 %newobject ParaMEDMEM::MEDCouplingStructuredMesh::Build1GTNodalConnectivity;
461 %newobject ParaMEDMEM::MEDCouplingCMesh::New;
462 %newobject ParaMEDMEM::MEDCouplingCMesh::clone;
463 %newobject ParaMEDMEM::MEDCouplingCMesh::getCoordsAt;
464 %newobject ParaMEDMEM::MEDCouplingCurveLinearMesh::New;
465 %newobject ParaMEDMEM::MEDCouplingCurveLinearMesh::clone;
466 %newobject ParaMEDMEM::MEDCouplingCurveLinearMesh::getCoords;
467 %newobject ParaMEDMEM::MEDCouplingMultiFields::New;
468 %newobject ParaMEDMEM::MEDCouplingMultiFields::deepCpy;
469 %newobject ParaMEDMEM::MEDCouplingFieldOverTime::New;
470
471 %feature("unref") DataArray "$this->decrRef();"
472 %feature("unref") DataArrayDouble "$this->decrRef();"
473 %feature("unref") MEDCouplingPointSet "$this->decrRef();"
474 %feature("unref") MEDCouplingMesh "$this->decrRef();"
475 %feature("unref") MEDCouplingUMesh "$this->decrRef();"
476 %feature("unref") MEDCoupling1GTUMesh "$this->decrRef();"
477 %feature("unref") MEDCoupling1SGTUMesh "$this->decrRef();"
478 %feature("unref") MEDCoupling1DGTUMesh "$this->decrRef();"
479 %feature("unref") MEDCouplingExtrudedMesh "$this->decrRef();"
480 %feature("unref") MEDCouplingCMesh "$this->decrRef();"
481 %feature("unref") DataArrayInt "$this->decrRef();"
482 %feature("unref") DataArrayChar "$this->decrRef();"
483 %feature("unref") DataArrayAsciiChar "$this->decrRef();"
484 %feature("unref") DataArrayByte "$this->decrRef();"
485 %feature("unref") MEDCouplingField "$this->decrRef();"
486 %feature("unref") MEDCouplingFieldDiscretizationP0 "$this->decrRef();"
487 %feature("unref") MEDCouplingFieldDiscretizationP1 "$this->decrRef();"
488 %feature("unref") MEDCouplingFieldDiscretizationGauss "$this->decrRef();"
489 %feature("unref") MEDCouplingFieldDiscretizationGaussNE "$this->decrRef();"
490 %feature("unref") MEDCouplingFieldDiscretizationKriging "$this->decrRef();"
491 %feature("unref") MEDCouplingFieldDouble "$this->decrRef();"
492 %feature("unref") MEDCouplingMultiFields "$this->decrRef();"
493 %feature("unref") MEDCouplingFieldTemplate "$this->decrRef();"
494 %feature("unref") MEDCouplingMultiFields "$this->decrRef();"
495
496 %rename(assign) *::operator=;
497 %ignore ParaMEDMEM::RefCountObject::decrRef;
498 %ignore ParaMEDMEM::MEDCouplingGaussLocalization::pushTinySerializationIntInfo;
499 %ignore ParaMEDMEM::MEDCouplingGaussLocalization::pushTinySerializationDblInfo;
500 %ignore ParaMEDMEM::MEDCouplingGaussLocalization::fillWithValues;
501 %ignore ParaMEDMEM::MEDCouplingGaussLocalization::buildNewInstanceFromTinyInfo;
502
503 %nodefaultctor;
504
505 %rename (InterpKernelException) INTERP_KERNEL::Exception;
506
507 namespace INTERP_KERNEL
508 {
509   class Exception
510   {
511   public:
512     Exception(const char* what);
513     ~Exception() throw ();
514     const char *what() const throw ();
515     %extend
516     {
517       std::string __str__() const
518         {
519           return std::string(self->what());
520         }
521     }
522   };
523 }
524
525 namespace ParaMEDMEM
526 {
527   class TimeLabel
528   {
529   public:
530     void declareAsNew() const;
531     virtual void updateTime() const;
532     unsigned int getTimeOfThis() const;
533   protected:
534     ~TimeLabel();
535   };
536 }
537
538 namespace ParaMEDMEM
539 {
540   typedef enum
541     {
542       C_DEALLOC = 2,
543       CPP_DEALLOC = 3
544     } DeallocType;
545
546   typedef enum
547     {
548       ON_CELLS = 0,
549       ON_NODES = 1,
550       ON_GAUSS_PT = 2,
551       ON_GAUSS_NE = 3,
552       ON_NODES_KR = 4
553     } TypeOfField;
554
555   typedef enum
556     {
557       NO_TIME = 4,
558       ONE_TIME = 5,
559       LINEAR_TIME = 6,
560       CONST_ON_TIME_INTERVAL = 7
561     } TypeOfTimeDiscretization;
562
563   const char *MEDCouplingVersionStr();
564   int MEDCouplingVersion();
565   int MEDCouplingSizeOfVoidStar();
566
567   class RefCountObject
568   {
569   protected:
570     RefCountObject();
571     RefCountObject(const RefCountObject& other);
572     ~RefCountObject();
573   public:
574     bool decrRef() const;
575     void incrRef() const;
576     int getRCValue() const;
577     virtual std::size_t getHeapMemorySize() const;
578   };
579 }
580
581 %inline
582 {
583   PyObject *MEDCouplingVersionMajMinRel()
584   {
585     int tmp0=0,tmp1=0,tmp2=0;
586     MEDCouplingVersionMajMinRel(tmp0,tmp1,tmp2);
587     PyObject *res = PyList_New(3);
588     PyList_SetItem(res,0,SWIG_From_int(tmp0));
589     PyList_SetItem(res,1,SWIG_From_int(tmp1));
590     PyList_SetItem(res,2,SWIG_From_int(tmp2));
591     return res;
592   }
593
594   bool MEDCouplingHasNumPyBindings()
595   {
596 #ifdef WITH_NUMPY
597     return true;
598 #else
599     return false;
600 #endif
601   }
602
603   std::string MEDCouplingCompletionScript() throw(INTERP_KERNEL::Exception)
604   {
605     static const char script[]="import rlcompleter,readline\nreadline.parse_and_bind('tab:complete')";
606     std::ostringstream oss; oss << "MEDCouplingCompletionScript : error when trying to activate completion ! readline not present ?\nScript is :\n" << script;
607     if(PyRun_SimpleString(script)!=0)
608       throw INTERP_KERNEL::Exception(oss.str().c_str());
609     return std::string(script);
610   }
611 }
612
613 %include "MEDCouplingMemArray.i"
614
615 namespace ParaMEDMEM
616 {
617   typedef enum
618     {
619       UNSTRUCTURED = 5,
620       UNSTRUCTURED_DESC = 6,
621       CARTESIAN = 7,
622       EXTRUDED = 8,
623       CURVE_LINEAR = 9
624     } MEDCouplingMeshType;
625
626   class DataArrayInt;
627   class DataArrayDouble;
628   class MEDCouplingUMesh;
629   class MEDCouplingFieldDouble;
630
631   %extend RefCountObject
632   {
633     std::string getHiddenCppPointer() const
634     {
635       std::ostringstream oss; oss << "C++ Pointer address is : " << self;
636       return oss.str();
637     }
638   }
639
640   %extend MEDCouplingGaussLocalization
641   {
642     std::string __str__() const throw(INTERP_KERNEL::Exception)
643     {
644       return self->getStringRepr();
645     }
646
647     std::string __repr__() const throw(INTERP_KERNEL::Exception)
648     {
649       std::ostringstream oss; oss << "MEDCouplingGaussLocalization C++ instance at " << self << "." << std::endl;
650       oss << self->getStringRepr();
651       return oss.str();
652     }
653   }
654
655   //== MEDCouplingMesh
656   
657   class MEDCouplingMesh : public RefCountObject, public TimeLabel
658   {
659   public:
660     void setName(const char *name);
661     std::string getName() const;
662     void setDescription(const char *descr);
663     std::string getDescription() const;
664     void setTime(double val, int iteration, int order);
665     void setTimeUnit(const char *unit);
666     const char *getTimeUnit() const;
667     virtual MEDCouplingMeshType getType() const throw(INTERP_KERNEL::Exception);
668     bool isStructured() const throw(INTERP_KERNEL::Exception);
669     virtual MEDCouplingMesh *deepCpy() const;
670     virtual bool isEqual(const MEDCouplingMesh *other, double prec) const throw(INTERP_KERNEL::Exception);
671     virtual bool isEqualWithoutConsideringStr(const MEDCouplingMesh *other, double prec) const throw(INTERP_KERNEL::Exception);
672     virtual void checkFastEquivalWith(const MEDCouplingMesh *other, double prec) const throw(INTERP_KERNEL::Exception);
673     virtual void copyTinyStringsFrom(const MEDCouplingMesh *other) throw(INTERP_KERNEL::Exception);
674     virtual void copyTinyInfoFrom(const MEDCouplingMesh *other) throw(INTERP_KERNEL::Exception);
675     virtual void checkCoherency() const throw(INTERP_KERNEL::Exception);
676     virtual void checkCoherency1(double eps=1e-12) const throw(INTERP_KERNEL::Exception);
677     virtual void checkCoherency2(double eps=1e-12) const throw(INTERP_KERNEL::Exception);
678     virtual int getNumberOfCells() const throw(INTERP_KERNEL::Exception);
679     virtual int getNumberOfNodes() const throw(INTERP_KERNEL::Exception);
680     virtual int getSpaceDimension() const throw(INTERP_KERNEL::Exception);
681     virtual int getMeshDimension() const throw(INTERP_KERNEL::Exception);
682     virtual DataArrayDouble *getCoordinatesAndOwner() const throw(INTERP_KERNEL::Exception);
683     virtual DataArrayDouble *getBarycenterAndOwner() const throw(INTERP_KERNEL::Exception);
684     virtual DataArrayDouble *computeIsoBarycenterOfNodesPerCell() const throw(INTERP_KERNEL::Exception);
685     virtual DataArrayInt *giveCellsWithType(INTERP_KERNEL::NormalizedCellType type) const throw(INTERP_KERNEL::Exception);
686     virtual DataArrayInt *computeNbOfNodesPerCell() const throw(INTERP_KERNEL::Exception);
687     virtual DataArrayInt *computeNbOfFacesPerCell() const throw(INTERP_KERNEL::Exception);
688     virtual DataArrayInt *computeEffectiveNbOfNodesPerCell() const throw(INTERP_KERNEL::Exception);
689     virtual MEDCouplingMesh *buildPartRange(int beginCellIds, int endCellIds, int stepCellIds) const throw(INTERP_KERNEL::Exception);
690     virtual int getNumberOfCellsWithType(INTERP_KERNEL::NormalizedCellType type) const throw(INTERP_KERNEL::Exception);
691     virtual INTERP_KERNEL::NormalizedCellType getTypeOfCell(int cellId) const throw(INTERP_KERNEL::Exception);
692     virtual std::string simpleRepr() const throw(INTERP_KERNEL::Exception);
693     virtual std::string advancedRepr() const throw(INTERP_KERNEL::Exception);
694     void writeVTK(const char *fileName) const throw(INTERP_KERNEL::Exception);
695     // tools
696     virtual MEDCouplingFieldDouble *getMeasureField(bool isAbs) const throw(INTERP_KERNEL::Exception);
697     virtual MEDCouplingFieldDouble *getMeasureFieldOnNode(bool isAbs) const throw(INTERP_KERNEL::Exception);
698     virtual MEDCouplingFieldDouble *fillFromAnalytic(TypeOfField t, int nbOfComp, const char *func) const throw(INTERP_KERNEL::Exception);
699     virtual MEDCouplingFieldDouble *fillFromAnalytic2(TypeOfField t, int nbOfComp, const char *func) const throw(INTERP_KERNEL::Exception);
700     virtual MEDCouplingFieldDouble *fillFromAnalytic3(TypeOfField t, int nbOfComp, const std::vector<std::string>& varsOrder, const char *func) const throw(INTERP_KERNEL::Exception);
701     virtual MEDCouplingFieldDouble *buildOrthogonalField() const throw(INTERP_KERNEL::Exception);
702     virtual MEDCouplingUMesh *buildUnstructured() const throw(INTERP_KERNEL::Exception);
703     virtual MEDCouplingMesh *mergeMyselfWith(const MEDCouplingMesh *other) const throw(INTERP_KERNEL::Exception);
704     virtual bool areCompatibleForMerge(const MEDCouplingMesh *other) const throw(INTERP_KERNEL::Exception);
705     virtual DataArrayInt *simplexize(int policy) throw(INTERP_KERNEL::Exception);
706     static MEDCouplingMesh *MergeMeshes(const MEDCouplingMesh *mesh1, const MEDCouplingMesh *mesh2) throw(INTERP_KERNEL::Exception);
707     static bool IsStaticGeometricType(INTERP_KERNEL::NormalizedCellType type) throw(INTERP_KERNEL::Exception);
708     static bool IsLinearGeometricType(INTERP_KERNEL::NormalizedCellType type) throw(INTERP_KERNEL::Exception);
709     static INTERP_KERNEL::NormalizedCellType GetCorrespondingPolyType(INTERP_KERNEL::NormalizedCellType type) throw(INTERP_KERNEL::Exception);
710     static int GetNumberOfNodesOfGeometricType(INTERP_KERNEL::NormalizedCellType type) throw(INTERP_KERNEL::Exception);
711     static int GetDimensionOfGeometricType(INTERP_KERNEL::NormalizedCellType type) throw(INTERP_KERNEL::Exception);
712     static const char *GetReprOfGeometricType(INTERP_KERNEL::NormalizedCellType type) throw(INTERP_KERNEL::Exception);
713     %extend
714        {
715          std::string __str__() const throw(INTERP_KERNEL::Exception)
716          {
717            return self->simpleRepr();
718          }
719
720          PyObject *getTime() throw(INTERP_KERNEL::Exception)
721          {
722            int tmp1,tmp2;
723            double tmp0=self->getTime(tmp1,tmp2);
724            PyObject *res = PyList_New(3);
725            PyList_SetItem(res,0,SWIG_From_double(tmp0));
726            PyList_SetItem(res,1,SWIG_From_int(tmp1));
727            PyList_SetItem(res,2,SWIG_From_int(tmp2));
728            return res;
729          }
730
731          int getCellContainingPoint(PyObject *p, double eps) const throw(INTERP_KERNEL::Exception)
732          {
733            double val;
734            DataArrayDouble *a;
735            DataArrayDoubleTuple *aa;
736            std::vector<double> bb;
737            int sw;
738            int spaceDim=self->getSpaceDimension();
739            const char msg[]="Python wrap of MEDCouplingMesh::getCellContainingPoint : ";
740            const double *pos=convertObjToPossibleCpp5_Safe(p,sw,val,a,aa,bb,msg,1,spaceDim,true);
741            return self->getCellContainingPoint(pos,eps);
742          }
743
744          PyObject *getCellsContainingPoints(PyObject *p, int nbOfPoints, double eps) const throw(INTERP_KERNEL::Exception)
745          {
746            double val;
747            DataArrayDouble *a;
748            DataArrayDoubleTuple *aa;
749            std::vector<double> bb;
750            int sw;
751            int spaceDim=self->getSpaceDimension();
752            const char msg[]="Python wrap of MEDCouplingMesh::getCellsContainingPoint : ";
753            const double *pos=convertObjToPossibleCpp5_Safe(p,sw,val,a,aa,bb,msg,nbOfPoints,spaceDim,true);
754            std::vector<int> elts,eltsIndex;
755            self->getCellsContainingPoints(pos,nbOfPoints,eps,elts,eltsIndex);
756            MEDCouplingAutoRefCountObjectPtr<DataArrayInt> d0=DataArrayInt::New();
757            MEDCouplingAutoRefCountObjectPtr<DataArrayInt> d1=DataArrayInt::New();
758            d0->alloc(elts.size(),1);
759            d1->alloc(eltsIndex.size(),1);
760            std::copy(elts.begin(),elts.end(),d0->getPointer());
761            std::copy(eltsIndex.begin(),eltsIndex.end(),d1->getPointer());
762            PyObject *ret=PyTuple_New(2);
763            PyTuple_SetItem(ret,0,SWIG_NewPointerObj(SWIG_as_voidptr(d0.retn()),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 ));
764            PyTuple_SetItem(ret,1,SWIG_NewPointerObj(SWIG_as_voidptr(d1.retn()),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 ));
765            return ret;
766          }
767
768          PyObject *getCellsContainingPoints(PyObject *p, double eps) const throw(INTERP_KERNEL::Exception)
769          {
770            std::vector<int> elts,eltsIndex;
771            int spaceDim=self->getSpaceDimension();
772            void *da=0;
773            int res1=SWIG_ConvertPtr(p,&da,SWIGTYPE_p_ParaMEDMEM__DataArrayDouble, 0 |  0 );
774            if (!SWIG_IsOK(res1))
775              {
776                int size;
777                INTERP_KERNEL::AutoCPtr<double> tmp=convertPyToNewDblArr2(p,&size);
778                int nbOfPoints=size/spaceDim;
779                if(size%spaceDim!=0)
780                  {
781                    throw INTERP_KERNEL::Exception("MEDCouplingMesh::getCellsContainingPoints : Invalid list length ! Must be a multiple of self.getSpaceDimension() !");
782                  }
783                self->getCellsContainingPoints(tmp,nbOfPoints,eps,elts,eltsIndex);
784              }
785            else
786              {
787                DataArrayDouble *da2=reinterpret_cast< DataArrayDouble * >(da);
788                if(!da2)
789                  throw INTERP_KERNEL::Exception("MEDCouplingMesh::getCellsContainingPoints : Not null DataArrayDouble instance expected !");
790                da2->checkAllocated();
791                int size=da2->getNumberOfTuples();
792                int nbOfCompo=da2->getNumberOfComponents();
793                if(nbOfCompo!=spaceDim)
794                  {
795                    throw INTERP_KERNEL::Exception("MEDCouplingMesh::getCellsContainingPoints : Invalid DataArrayDouble nb of components ! Expected same as self.getSpaceDimension() !");
796                  }
797                self->getCellsContainingPoints(da2->getConstPointer(),size,eps,elts,eltsIndex);
798              }
799            MEDCouplingAutoRefCountObjectPtr<DataArrayInt> d0=DataArrayInt::New();
800            MEDCouplingAutoRefCountObjectPtr<DataArrayInt> d1=DataArrayInt::New();
801            d0->alloc(elts.size(),1);
802            d1->alloc(eltsIndex.size(),1);
803            std::copy(elts.begin(),elts.end(),d0->getPointer());
804            std::copy(eltsIndex.begin(),eltsIndex.end(),d1->getPointer());
805            PyObject *ret=PyTuple_New(2);
806            PyTuple_SetItem(ret,0,SWIG_NewPointerObj(SWIG_as_voidptr(d0.retn()),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 ));
807            PyTuple_SetItem(ret,1,SWIG_NewPointerObj(SWIG_as_voidptr(d1.retn()),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 ));
808            return ret;
809          }
810
811          PyObject *getCellsContainingPoint(PyObject *p, double eps) const throw(INTERP_KERNEL::Exception)
812          {
813            double val;
814            DataArrayDouble *a;
815            DataArrayDoubleTuple *aa;
816            std::vector<double> bb;
817            int sw;
818            int spaceDim=self->getSpaceDimension();
819            const char msg[]="Python wrap of MEDCouplingUMesh::getCellsContainingPoint : ";
820            const double *pos=convertObjToPossibleCpp5_Safe(p,sw,val,a,aa,bb,msg,1,spaceDim,true);
821            std::vector<int> elts;
822            self->getCellsContainingPoint(pos,eps,elts);
823            DataArrayInt *ret=DataArrayInt::New();
824            ret->alloc((int)elts.size(),1);
825            std::copy(elts.begin(),elts.end(),ret->getPointer());
826            return SWIG_NewPointerObj(SWIG_as_voidptr(ret),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 );
827          }
828          
829          void renumberCells(PyObject *li, bool check=true) throw(INTERP_KERNEL::Exception)
830          {
831            void *da=0;
832            int res1=SWIG_ConvertPtr(li,&da,SWIGTYPE_p_ParaMEDMEM__DataArrayInt, 0 |  0 );
833            if (!SWIG_IsOK(res1))
834              {
835                int size;
836                INTERP_KERNEL::AutoPtr<int> tmp=convertPyToNewIntArr2(li,&size);
837                self->renumberCells(tmp,check);
838              }
839            else
840              {
841                DataArrayInt *da2=reinterpret_cast< DataArrayInt * >(da);
842                if(!da2)
843                    throw INTERP_KERNEL::Exception("Not null DataArrayInt instance expected !");
844                da2->checkAllocated();
845                self->renumberCells(da2->getConstPointer(),check);
846              }
847          }
848
849          PyObject *checkGeoEquivalWith(const MEDCouplingMesh *other, int levOfCheck, double prec) const throw(INTERP_KERNEL::Exception)
850          {
851            DataArrayInt *cellCor, *nodeCor;
852            self->checkGeoEquivalWith(other,levOfCheck,prec,cellCor,nodeCor);
853            PyObject *res = PyList_New(2);
854            PyList_SetItem(res,0,SWIG_NewPointerObj(SWIG_as_voidptr(cellCor),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, cellCor?SWIG_POINTER_OWN | 0:0 ));
855            PyList_SetItem(res,1,SWIG_NewPointerObj(SWIG_as_voidptr(nodeCor),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, nodeCor?SWIG_POINTER_OWN | 0:0 ));
856            return res;
857          }
858
859          PyObject *checkDeepEquivalWith(const MEDCouplingMesh *other, int cellCompPol, double prec) const throw(INTERP_KERNEL::Exception)
860          {
861            DataArrayInt *cellCor=0,*nodeCor=0;
862            self->checkDeepEquivalWith(other,cellCompPol,prec,cellCor,nodeCor);
863            PyObject *res = PyList_New(2);
864            PyList_SetItem(res,0,SWIG_NewPointerObj(SWIG_as_voidptr(cellCor),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, cellCor?SWIG_POINTER_OWN | 0:0 ));
865            PyList_SetItem(res,1,SWIG_NewPointerObj(SWIG_as_voidptr(nodeCor),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, nodeCor?SWIG_POINTER_OWN | 0:0 ));
866            return res;
867          }
868          
869          DataArrayInt *checkDeepEquivalOnSameNodesWith(const MEDCouplingMesh *other, int cellCompPol, double prec) const throw(INTERP_KERNEL::Exception)
870          {
871            DataArrayInt *cellCor=0;
872            self->checkDeepEquivalOnSameNodesWith(other,cellCompPol,prec,cellCor);
873            return cellCor;
874          }
875
876          DataArrayInt *getCellIdsFullyIncludedInNodeIds(PyObject *li) const throw(INTERP_KERNEL::Exception)
877          {
878            void *da=0;
879            int res1=SWIG_ConvertPtr(li,&da,SWIGTYPE_p_ParaMEDMEM__DataArrayInt, 0 |  0 );
880            if (!SWIG_IsOK(res1))
881              {
882                int size;
883                INTERP_KERNEL::AutoPtr<int> tmp=convertPyToNewIntArr2(li,&size);
884                return self->getCellIdsFullyIncludedInNodeIds(tmp,((const int *)tmp)+size);
885              }
886            else
887              {
888                DataArrayInt *da2=reinterpret_cast< DataArrayInt * >(da);
889                if(!da2)
890                  throw INTERP_KERNEL::Exception("Not null DataArrayInt instance expected !");
891                da2->checkAllocated();
892                return self->getCellIdsFullyIncludedInNodeIds(da2->getConstPointer(),da2->getConstPointer()+da2->getNbOfElems());
893              }
894          }
895          PyObject *getNodeIdsOfCell(int cellId) const throw(INTERP_KERNEL::Exception)
896          {
897            std::vector<int> conn;
898            self->getNodeIdsOfCell(cellId,conn);
899            return convertIntArrToPyList2(conn);
900          }
901
902          PyObject *getCoordinatesOfNode(int nodeId) const throw(INTERP_KERNEL::Exception)
903          {
904            std::vector<double> coo;
905            self->getCoordinatesOfNode(nodeId,coo);
906            return convertDblArrToPyList2(coo);
907          }
908
909          void scale(PyObject *point, double factor) throw(INTERP_KERNEL::Exception)
910          {
911            double val;
912            DataArrayDouble *a;
913            DataArrayDoubleTuple *aa;
914            std::vector<double> bb;
915            int sw;
916            int spaceDim=self->getSpaceDimension();
917            const char msg[]="Python wrap of MEDCouplingPointSet::scale : ";
918            const double *pointPtr=convertObjToPossibleCpp5_Safe(point,sw,val,a,aa,bb,msg,1,spaceDim,true);
919            self->scale(pointPtr,factor);
920          }
921
922          PyObject *getBoundingBox() const throw(INTERP_KERNEL::Exception)
923          {
924            int spaceDim=self->getSpaceDimension();
925            INTERP_KERNEL::AutoPtr<double> tmp=new double[2*spaceDim];
926            self->getBoundingBox(tmp);
927            PyObject *ret=convertDblArrToPyListOfTuple(tmp,2,spaceDim);
928            return ret;
929          }
930
931          PyObject *isEqualIfNotWhy(const MEDCouplingMesh *other, double prec) const throw(INTERP_KERNEL::Exception)
932          {
933            std::string ret1;
934            bool ret0=self->isEqualIfNotWhy(other,prec,ret1);
935            PyObject *ret=PyTuple_New(2);
936            PyObject *ret0Py=ret0?Py_True:Py_False;
937            Py_XINCREF(ret0Py);
938            PyTuple_SetItem(ret,0,ret0Py);
939            PyTuple_SetItem(ret,1,PyString_FromString(ret1.c_str()));
940            return ret;
941          }
942
943          PyObject *buildPart(PyObject *li) const throw(INTERP_KERNEL::Exception)
944          {
945            int szArr,sw,iTypppArr;
946            std::vector<int> stdvecTyyppArr;
947            const int *tmp=convertObjToPossibleCpp1_Safe(li,sw,szArr,iTypppArr,stdvecTyyppArr);
948            MEDCouplingMesh *ret=self->buildPart(tmp,tmp+szArr);
949            if(sw==3)//DataArrayInt
950              { 
951                void *argp; SWIG_ConvertPtr(li,&argp,SWIGTYPE_p_ParaMEDMEM__DataArrayInt,0|0);
952                DataArrayInt *argpt=reinterpret_cast< ParaMEDMEM::DataArrayInt * >(argp);
953                std::string name=argpt->getName();
954                if(!name.empty())
955                  ret->setName(name.c_str());
956              }
957            return convertMesh(ret, SWIG_POINTER_OWN | 0 );
958          }
959         
960          PyObject *buildPartAndReduceNodes(PyObject *li) const throw(INTERP_KERNEL::Exception)
961          {
962            int szArr,sw,iTypppArr;
963            std::vector<int> stdvecTyyppArr;
964            DataArrayInt *arr=0;
965            const int *tmp=convertObjToPossibleCpp1_Safe(li,sw,szArr,iTypppArr,stdvecTyyppArr);
966            MEDCouplingMesh *ret=self->buildPartAndReduceNodes(tmp,tmp+szArr,arr);
967            if(sw==3)//DataArrayInt
968              { 
969                void *argp; SWIG_ConvertPtr(li,&argp,SWIGTYPE_p_ParaMEDMEM__DataArrayInt,0|0);
970                DataArrayInt *argpt=reinterpret_cast< ParaMEDMEM::DataArrayInt * >(argp);
971                std::string name=argpt->getName();
972                if(!name.empty())
973                  ret->setName(name.c_str());
974              }
975            //
976            PyObject *res = PyList_New(2);
977            PyObject *obj0=convertMesh(ret, SWIG_POINTER_OWN | 0 );
978            PyObject *obj1=SWIG_NewPointerObj(SWIG_as_voidptr(arr),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 );
979            PyList_SetItem(res,0,obj0);
980            PyList_SetItem(res,1,obj1);
981            return res;
982          }
983
984          PyObject *buildPartRangeAndReduceNodes(int beginCellIds, int endCellIds, int stepCellIds) const throw(INTERP_KERNEL::Exception)
985          {
986            int a,b,c;
987            DataArrayInt *arr=0;
988            MEDCouplingMesh *ret=self->buildPartRangeAndReduceNodes(beginCellIds,endCellIds,stepCellIds,a,b,c,arr);
989            PyObject *res = PyTuple_New(2);
990            PyObject *obj0=convertMesh(ret, SWIG_POINTER_OWN | 0 );
991            PyObject *obj1=0;
992            if(arr)
993              obj1=SWIG_NewPointerObj(SWIG_as_voidptr(arr),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 );
994            else
995              obj1=PySlice_New(PyInt_FromLong(a),PyInt_FromLong(b),PyInt_FromLong(b));
996            PyTuple_SetItem(res,0,obj0);
997            PyTuple_SetItem(res,1,obj1);
998            return res;
999          }
1000
1001         PyObject *getDistributionOfTypes() const throw(INTERP_KERNEL::Exception)
1002         {
1003           std::vector<int> vals=self->getDistributionOfTypes();
1004           if(vals.size()%3!=0)
1005             throw INTERP_KERNEL::Exception("Internal Error detected in wrap python ! code returned by MEDCouplingMesh::getDistributionOfTypes is not so that %3==0 !");
1006           PyObject *ret=PyList_New((int)vals.size()/3);
1007           for(int j=0;j<(int)vals.size()/3;j++)
1008              {
1009                PyObject *ret1=PyList_New(3);
1010                PyList_SetItem(ret1,0,SWIG_From_int(vals[3*j]));
1011                PyList_SetItem(ret1,1,SWIG_From_int(vals[3*j+1]));
1012                PyList_SetItem(ret1,2,SWIG_From_int(vals[3*j+2]));
1013                PyList_SetItem(ret,j,ret1);
1014              }
1015           return ret;
1016         }
1017
1018         DataArrayInt *checkTypeConsistencyAndContig(PyObject *li, PyObject *li2) const throw(INTERP_KERNEL::Exception)
1019         {
1020           std::vector<int> code;
1021           std::vector<const DataArrayInt *> idsPerType;
1022           convertFromPyObjVectorOfObj<const ParaMEDMEM::DataArrayInt *>(li2,SWIGTYPE_p_ParaMEDMEM__DataArrayInt,"DataArrayInt",idsPerType);
1023           convertPyToNewIntArr4(li,1,3,code);
1024           return self->checkTypeConsistencyAndContig(code,idsPerType);
1025         }
1026
1027         PyObject *splitProfilePerType(const DataArrayInt *profile) const throw(INTERP_KERNEL::Exception)
1028         {
1029           std::vector<int> code;
1030           std::vector<DataArrayInt *> idsInPflPerType;
1031           std::vector<DataArrayInt *> idsPerType;
1032           self->splitProfilePerType(profile,code,idsInPflPerType,idsPerType);
1033           PyObject *ret=PyTuple_New(3);
1034           //
1035           if(code.size()%3!=0)
1036             throw INTERP_KERNEL::Exception("Internal Error detected in wrap python ! code returned by MEDCouplingMesh::splitProfilePerType is not so that %3==0 !");
1037           PyObject *ret0=PyList_New((int)code.size()/3);
1038           for(int j=0;j<(int)code.size()/3;j++)
1039              {
1040                PyObject *ret00=PyList_New(3);
1041                PyList_SetItem(ret00,0,SWIG_From_int(code[3*j]));
1042                PyList_SetItem(ret00,1,SWIG_From_int(code[3*j+1]));
1043                PyList_SetItem(ret00,2,SWIG_From_int(code[3*j+2]));
1044                PyList_SetItem(ret0,j,ret00);
1045              }
1046           PyTuple_SetItem(ret,0,ret0);
1047           //
1048           PyObject *ret1=PyList_New(idsInPflPerType.size());
1049           for(std::size_t j=0;j<idsInPflPerType.size();j++)
1050             PyList_SetItem(ret1,j,SWIG_NewPointerObj(SWIG_as_voidptr(idsInPflPerType[j]),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 ));
1051           PyTuple_SetItem(ret,1,ret1);
1052           int n=idsPerType.size();
1053           PyObject *ret2=PyList_New(n);
1054           for(int i=0;i<n;i++)
1055             PyList_SetItem(ret2,i,SWIG_NewPointerObj(SWIG_as_voidptr(idsPerType[i]),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 ));
1056           PyTuple_SetItem(ret,2,ret2);
1057           return ret;
1058         }
1059
1060         void translate(PyObject *vector) throw(INTERP_KERNEL::Exception)
1061         {
1062           double val;
1063           DataArrayDouble *a;
1064           DataArrayDoubleTuple *aa;
1065           std::vector<double> bb;
1066           int sw;
1067           int spaceDim=self->getSpaceDimension();
1068           const char msg[]="Python wrap of MEDCouplingPointSet::translate : ";
1069           const double *vectorPtr=convertObjToPossibleCpp5_Safe(vector,sw,val,a,aa,bb,msg,1,spaceDim,true);
1070           self->translate(vectorPtr);
1071         }
1072
1073          void rotate(PyObject *center, double alpha) throw(INTERP_KERNEL::Exception)
1074          {
1075            const char msg[]="Python wrap of MEDCouplingPointSet::rotate : ";
1076            double val;
1077            DataArrayDouble *a;
1078            DataArrayDoubleTuple *aa;
1079            std::vector<double> bb;
1080            int sw;
1081            int spaceDim=self->getSpaceDimension();
1082            const double *centerPtr=convertObjToPossibleCpp5_Safe(center,sw,val,a,aa,bb,msg,1,spaceDim,true);
1083            self->rotate(centerPtr,0,alpha);
1084          }
1085
1086          void rotate(PyObject *center, PyObject *vector, double alpha) throw(INTERP_KERNEL::Exception)
1087          {
1088            const char msg[]="Python wrap of MEDCouplingPointSet::rotate : ";
1089            double val,val2;
1090            DataArrayDouble *a,*a2;
1091            DataArrayDoubleTuple *aa,*aa2;
1092            std::vector<double> bb,bb2;
1093            int sw;
1094            int spaceDim=self->getSpaceDimension();
1095            const double *centerPtr=convertObjToPossibleCpp5_Safe(center,sw,val,a,aa,bb,msg,1,spaceDim,true);
1096            const double *vectorPtr=convertObjToPossibleCpp5_Safe(vector,sw,val2,a2,aa2,bb2,msg,1,spaceDim,false);//vectorPtr can be null in case of space dim 2
1097            self->rotate(centerPtr,vectorPtr,alpha);
1098          }
1099
1100          PyObject *getAllGeoTypes() const throw(INTERP_KERNEL::Exception)
1101          {
1102            std::set<INTERP_KERNEL::NormalizedCellType> result=self->getAllGeoTypes();
1103            std::set<INTERP_KERNEL::NormalizedCellType>::const_iterator iL=result.begin();
1104            PyObject *res=PyList_New(result.size());
1105            for(int i=0;iL!=result.end(); i++, iL++)
1106              PyList_SetItem(res,i,PyInt_FromLong(*iL));
1107            return res;
1108          }
1109          
1110          static MEDCouplingMesh *MergeMeshes(PyObject *li) throw(INTERP_KERNEL::Exception)
1111          {
1112             std::vector<const ParaMEDMEM::MEDCouplingMesh *> tmp;
1113             convertFromPyObjVectorOfObj<const ParaMEDMEM::MEDCouplingMesh *>(li,SWIGTYPE_p_ParaMEDMEM__MEDCouplingMesh,"MEDCouplingMesh",tmp);
1114             return MEDCouplingMesh::MergeMeshes(tmp);
1115          }
1116        }
1117   };
1118 }
1119
1120 //== MEDCouplingMesh End
1121
1122 %include "NormalizedUnstructuredMesh.hxx"
1123 %include "MEDCouplingNatureOfField.hxx"
1124 %include "MEDCouplingTimeDiscretization.hxx"
1125 %include "MEDCouplingGaussLocalization.hxx"
1126 %include "MEDCouplingFieldDiscretization.hxx"
1127
1128 %ignore ParaMEDMEM::MEDCouplingFieldDiscretization::clonePart;
1129 %ignore ParaMEDMEM::MEDCouplingFieldDiscretization::buildSubMeshDataRange;
1130 %ignore ParaMEDMEM::MEDCouplingFieldDiscretizationPerCell::getArrayOfDiscIds;
1131
1132 //== MEDCouplingPointSet
1133
1134 namespace ParaMEDMEM
1135 {
1136   class MEDCouplingPointSet : public ParaMEDMEM::MEDCouplingMesh
1137     {
1138     public:
1139       void setCoords(const DataArrayDouble *coords) throw(INTERP_KERNEL::Exception);
1140       DataArrayDouble *getCoordinatesAndOwner() const throw(INTERP_KERNEL::Exception);
1141       bool areCoordsEqual(const MEDCouplingPointSet& other, double prec) const throw(INTERP_KERNEL::Exception);
1142       void zipCoords() throw(INTERP_KERNEL::Exception);
1143       double getCaracteristicDimension() const throw(INTERP_KERNEL::Exception);
1144       void recenterForMaxPrecision(double eps) throw(INTERP_KERNEL::Exception);
1145       void changeSpaceDimension(int newSpaceDim, double dftVal=0.) throw(INTERP_KERNEL::Exception);
1146       void tryToShareSameCoords(const MEDCouplingPointSet& other, double epsilon) throw(INTERP_KERNEL::Exception);
1147       virtual void shallowCopyConnectivityFrom(const MEDCouplingPointSet *other) throw(INTERP_KERNEL::Exception);
1148       virtual MEDCouplingPointSet *buildPartOfMySelf2(int start, int end, int step) const throw(INTERP_KERNEL::Exception);
1149       virtual void tryToShareSameCoordsPermute(const MEDCouplingPointSet& other, double epsilon) throw(INTERP_KERNEL::Exception);
1150       static DataArrayDouble *MergeNodesArray(const MEDCouplingPointSet *m1, const MEDCouplingPointSet *m2) throw(INTERP_KERNEL::Exception);
1151       static MEDCouplingPointSet *BuildInstanceFromMeshType(MEDCouplingMeshType type) throw(INTERP_KERNEL::Exception);
1152       virtual MEDCouplingPointSet *buildBoundaryMesh(bool keepCoords) const throw(INTERP_KERNEL::Exception);
1153       virtual DataArrayInt *getCellsInBoundingBox(const INTERP_KERNEL::DirectedBoundingBox& bbox, double eps) throw(INTERP_KERNEL::Exception);
1154       virtual DataArrayInt *zipCoordsTraducer() throw(INTERP_KERNEL::Exception);
1155       virtual DataArrayInt *findBoundaryNodes() const;
1156       virtual DataArrayInt *zipConnectivityTraducer(int compType, int startCellId=0) throw(INTERP_KERNEL::Exception);
1157       virtual MEDCouplingPointSet *mergeMyselfWithOnSameCoords(const MEDCouplingPointSet *other) const throw(INTERP_KERNEL::Exception);
1158       virtual void checkFullyDefined() const throw(INTERP_KERNEL::Exception);
1159       virtual bool isEmptyMesh(const std::vector<int>& tinyInfo) const throw(INTERP_KERNEL::Exception);
1160       virtual MEDCouplingPointSet *deepCpyConnectivityOnly() const throw(INTERP_KERNEL::Exception);
1161       %extend 
1162          {
1163            std::string __str__() const throw(INTERP_KERNEL::Exception)
1164            {
1165              return self->simpleRepr();
1166            }
1167            
1168            PyObject *buildNewNumberingFromCommonNodesFormat(const DataArrayInt *comm, const DataArrayInt *commIndex) const throw(INTERP_KERNEL::Exception)
1169            {
1170              int newNbOfNodes;
1171              DataArrayInt *ret0=self->buildNewNumberingFromCommonNodesFormat(comm,commIndex,newNbOfNodes);
1172              PyObject *res = PyList_New(2);
1173              PyList_SetItem(res,0,SWIG_NewPointerObj(SWIG_as_voidptr(ret0),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 ));
1174              PyList_SetItem(res,1,SWIG_From_int(newNbOfNodes));
1175              return res;
1176            }
1177            
1178            PyObject *findCommonNodes(double prec, int limitTupleId=-1) const throw(INTERP_KERNEL::Exception)
1179            {
1180              DataArrayInt *comm, *commIndex;
1181              self->findCommonNodes(prec,limitTupleId,comm,commIndex);
1182              PyObject *res = PyList_New(2);
1183              PyList_SetItem(res,0,SWIG_NewPointerObj(SWIG_as_voidptr(comm),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 ));
1184              PyList_SetItem(res,1,SWIG_NewPointerObj(SWIG_as_voidptr(commIndex),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 ));
1185              return res;
1186            }
1187            
1188            PyObject *getCoords() throw(INTERP_KERNEL::Exception)
1189            {
1190              DataArrayDouble *ret1=self->getCoords();
1191              if (ret1)
1192                 ret1->incrRef();
1193              return SWIG_NewPointerObj((void*)ret1,SWIGTYPE_p_ParaMEDMEM__DataArrayDouble,SWIG_POINTER_OWN | 0);
1194            }
1195            
1196            PyObject *buildPartOfMySelf(PyObject *li, bool keepCoords=true) const throw(INTERP_KERNEL::Exception)
1197            {
1198              int szArr,sw,iTypppArr;
1199              std::vector<int> stdvecTyyppArr;
1200              const int *tmp=convertObjToPossibleCpp1_Safe(li,sw,szArr,iTypppArr,stdvecTyyppArr);
1201              MEDCouplingPointSet *ret=self->buildPartOfMySelf(tmp,tmp+szArr,keepCoords);
1202              if(sw==3)//DataArrayInt
1203                { 
1204                  void *argp; SWIG_ConvertPtr(li,&argp,SWIGTYPE_p_ParaMEDMEM__DataArrayInt,0|0);
1205                  DataArrayInt *argpt=reinterpret_cast< ParaMEDMEM::DataArrayInt * >(argp);
1206                  std::string name=argpt->getName();
1207                  if(!name.empty())
1208                    ret->setName(name.c_str());
1209                }
1210              return convertMesh(ret, SWIG_POINTER_OWN | 0 );
1211            }
1212            
1213            PyObject *buildPartOfMySelfNode(PyObject *li, bool fullyIn) const throw(INTERP_KERNEL::Exception)
1214            {
1215              int szArr,sw,iTypppArr;
1216              std::vector<int> stdvecTyyppArr;
1217              const int *tmp=convertObjToPossibleCpp1_Safe(li,sw,szArr,iTypppArr,stdvecTyyppArr);
1218              MEDCouplingPointSet *ret=self->buildPartOfMySelfNode(tmp,tmp+szArr,fullyIn);
1219              if(sw==3)//DataArrayInt
1220                { 
1221                  void *argp; SWIG_ConvertPtr(li,&argp,SWIGTYPE_p_ParaMEDMEM__DataArrayInt,0|0);
1222                  DataArrayInt *argpt=reinterpret_cast< ParaMEDMEM::DataArrayInt * >(argp);
1223                  std::string name=argpt->getName();
1224                  if(!name.empty())
1225                    ret->setName(name.c_str());
1226                }
1227              return convertMesh(ret, SWIG_POINTER_OWN | 0 );
1228            }
1229
1230            virtual PyObject *buildPartOfMySelfKeepCoords(PyObject *li) const throw(INTERP_KERNEL::Exception)
1231            {
1232              int szArr,sw,iTypppArr;
1233              std::vector<int> stdvecTyyppArr;
1234              const int *tmp=convertObjToPossibleCpp1_Safe(li,sw,szArr,iTypppArr,stdvecTyyppArr);
1235              MEDCouplingPointSet *ret=self->buildPartOfMySelfKeepCoords(tmp,tmp+szArr);
1236              if(sw==3)//DataArrayInt
1237                { 
1238                  void *argp; SWIG_ConvertPtr(li,&argp,SWIGTYPE_p_ParaMEDMEM__DataArrayInt,0|0);
1239                  DataArrayInt *argpt=reinterpret_cast< ParaMEDMEM::DataArrayInt * >(argp);
1240                  std::string name=argpt->getName();
1241                  if(!name.empty())
1242                    ret->setName(name.c_str());
1243                }
1244              return convertMesh(ret, SWIG_POINTER_OWN | 0 );
1245            }
1246
1247            virtual PyObject *buildPartOfMySelfKeepCoords2(int start, int end, int step) const throw(INTERP_KERNEL::Exception)
1248            {
1249              MEDCouplingPointSet *ret=self->buildPartOfMySelfKeepCoords2(start,end,step);
1250              return convertMesh(ret, SWIG_POINTER_OWN | 0 );
1251            }
1252
1253            PyObject *buildFacePartOfMySelfNode(PyObject *li, bool fullyIn) const throw(INTERP_KERNEL::Exception)
1254            {
1255              int szArr,sw,iTypppArr;
1256              std::vector<int> stdvecTyyppArr;
1257              const int *tmp=convertObjToPossibleCpp1_Safe(li,sw,szArr,iTypppArr,stdvecTyyppArr);
1258              MEDCouplingPointSet *ret=self->buildFacePartOfMySelfNode(tmp,tmp+szArr,fullyIn);
1259              if(sw==3)//DataArrayInt
1260                { 
1261                  void *argp; SWIG_ConvertPtr(li,&argp,SWIGTYPE_p_ParaMEDMEM__DataArrayInt,0|0);
1262                  DataArrayInt *argpt=reinterpret_cast< ParaMEDMEM::DataArrayInt * >(argp);
1263                  std::string name=argpt->getName();
1264                  if(!name.empty())
1265                    ret->setName(name.c_str());
1266                }
1267              return convertMesh(ret, SWIG_POINTER_OWN | 0 );
1268            }
1269
1270            void renumberNodes(PyObject *li, int newNbOfNodes) throw(INTERP_KERNEL::Exception)
1271            {
1272              int szArr,sw,iTypppArr;
1273              std::vector<int> stdvecTyyppArr;
1274              const int *tmp=convertObjToPossibleCpp1_Safe(li,sw,szArr,iTypppArr,stdvecTyyppArr);
1275              self->renumberNodes(tmp,newNbOfNodes);
1276            }
1277
1278            void renumberNodes2(PyObject *li, int newNbOfNodes) throw(INTERP_KERNEL::Exception)
1279            {
1280              int szArr,sw,iTypppArr;
1281              std::vector<int> stdvecTyyppArr;
1282              const int *tmp=convertObjToPossibleCpp1_Safe(li,sw,szArr,iTypppArr,stdvecTyyppArr);
1283              self->renumberNodes2(tmp,newNbOfNodes);
1284            }
1285
1286            PyObject *findNodesOnLine(PyObject *pt, PyObject *vec, double eps) const throw(INTERP_KERNEL::Exception)
1287              {
1288                int spaceDim=self->getSpaceDimension();
1289                double val,val2;
1290                DataArrayDouble *a,*a2;
1291                DataArrayDoubleTuple *aa,*aa2;
1292                std::vector<double> bb,bb2;
1293                int sw;
1294                const char msg[]="Python wrap of MEDCouplingPointSet::findNodesOnLine : 1st paramater for point.";
1295                const char msg2[]="Python wrap of MEDCouplingPointSet::findNodesOnLine : 2nd paramater for vector.";
1296                const double *p=convertObjToPossibleCpp5_Safe(pt,sw,val,a,aa,bb,msg,1,spaceDim,true);
1297                const double *v=convertObjToPossibleCpp5_Safe(vec,sw,val2,a2,aa2,bb2,msg2,1,spaceDim,true);
1298                std::vector<int> nodes;
1299                self->findNodesOnLine(p,v,eps,nodes);
1300                DataArrayInt *ret=DataArrayInt::New();
1301                ret->alloc((int)nodes.size(),1);
1302                std::copy(nodes.begin(),nodes.end(),ret->getPointer());
1303                return SWIG_NewPointerObj(SWIG_as_voidptr(ret),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 );
1304              }
1305            PyObject *findNodesOnPlane(PyObject *pt, PyObject *vec, double eps) const throw(INTERP_KERNEL::Exception)
1306              {
1307                int spaceDim=self->getSpaceDimension();
1308                double val,val2;
1309                DataArrayDouble *a,*a2;
1310                DataArrayDoubleTuple *aa,*aa2;
1311                std::vector<double> bb,bb2;
1312                int sw;
1313                const char msg[]="Python wrap of MEDCouplingPointSet::findNodesOnPlane : 1st paramater for point.";
1314                const char msg2[]="Python wrap of MEDCouplingPointSet::findNodesOnPlane : 2nd paramater for vector.";
1315                const double *p=convertObjToPossibleCpp5_Safe(pt,sw,val,a,aa,bb,msg,1,spaceDim,true);
1316                const double *v=convertObjToPossibleCpp5_Safe(vec,sw,val2,a2,aa2,bb2,msg2,1,spaceDim,true);
1317                std::vector<int> nodes;
1318                self->findNodesOnPlane(p,v,eps,nodes);
1319                DataArrayInt *ret=DataArrayInt::New();
1320                ret->alloc((int)nodes.size(),1);
1321                std::copy(nodes.begin(),nodes.end(),ret->getPointer());
1322                return SWIG_NewPointerObj(SWIG_as_voidptr(ret),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 );
1323              }
1324            
1325            PyObject *getNodeIdsNearPoint(PyObject *pt, double eps) const throw(INTERP_KERNEL::Exception)
1326            {
1327              double val;
1328              DataArrayDouble *a;
1329              DataArrayDoubleTuple *aa;
1330              std::vector<double> bb;
1331              int sw;
1332              int spaceDim=self->getSpaceDimension();
1333              const char msg[]="Python wrap of MEDCouplingPointSet::getNodeIdsNearPoint : ";
1334              const double *pos=convertObjToPossibleCpp5_Safe(pt,sw,val,a,aa,bb,msg,1,spaceDim,true);
1335              DataArrayInt *ret=self->getNodeIdsNearPoint(pos,eps);
1336              return SWIG_NewPointerObj(SWIG_as_voidptr(ret),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 );
1337            }
1338
1339            PyObject *getNodeIdsNearPoints(PyObject *pt, int nbOfPoints, double eps) const throw(INTERP_KERNEL::Exception)
1340            {
1341              DataArrayInt *c=0,*cI=0;
1342              //
1343              double val;
1344              DataArrayDouble *a;
1345              DataArrayDoubleTuple *aa;
1346              std::vector<double> bb;
1347              int sw;
1348              int spaceDim=self->getSpaceDimension();
1349              const char msg[]="Python wrap of MEDCouplingPointSet::getNodeIdsNearPoints : ";
1350              const double *pos=convertObjToPossibleCpp5_Safe(pt,sw,val,a,aa,bb,msg,nbOfPoints,spaceDim,true);
1351              self->getNodeIdsNearPoints(pos,nbOfPoints,eps,c,cI);
1352              PyObject *ret=PyTuple_New(2);
1353              PyTuple_SetItem(ret,0,SWIG_NewPointerObj(SWIG_as_voidptr(c),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 ));
1354              PyTuple_SetItem(ret,1,SWIG_NewPointerObj(SWIG_as_voidptr(cI),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 ));
1355              return ret;
1356            }
1357
1358            PyObject *getNodeIdsNearPoints(PyObject *pt, double eps) const throw(INTERP_KERNEL::Exception)
1359            {
1360              DataArrayInt *c=0,*cI=0;
1361              int spaceDim=self->getSpaceDimension();
1362              double val;
1363              DataArrayDouble *a;
1364              DataArrayDoubleTuple *aa;
1365              std::vector<double> bb;
1366              int sw;
1367              int nbOfTuples=-1;
1368              const double *ptPtr=convertObjToPossibleCpp5_Safe2(pt,sw,val,a,aa,bb,"Python wrap of MEDCouplingUMesh::getNodeIdsNearPoints",spaceDim,true,nbOfTuples);
1369              self->getNodeIdsNearPoints(ptPtr,nbOfTuples,eps,c,cI);
1370              //
1371              PyObject *ret=PyTuple_New(2);
1372              PyTuple_SetItem(ret,0,SWIG_NewPointerObj(SWIG_as_voidptr(c),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 ));
1373              PyTuple_SetItem(ret,1,SWIG_NewPointerObj(SWIG_as_voidptr(cI),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 ));
1374              return ret;
1375            }
1376
1377            PyObject *getCellsInBoundingBox(PyObject *bbox, double eps) const throw(INTERP_KERNEL::Exception)
1378            {
1379              double val;
1380              DataArrayDouble *a;
1381              DataArrayDoubleTuple *aa;
1382              std::vector<double> bb;
1383              int sw;
1384              int spaceDim=self->getSpaceDimension();
1385              const char msg[]="Python wrap of MEDCouplingPointSet::getCellsInBoundingBox : ";
1386              const double *tmp=convertObjToPossibleCpp5_Safe(bbox,sw,val,a,aa,bb,msg,spaceDim,2,true);
1387              //
1388              DataArrayInt *elems=self->getCellsInBoundingBox(tmp,eps);
1389              return SWIG_NewPointerObj(SWIG_as_voidptr(elems),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 );
1390            }
1391
1392            void duplicateNodesInCoords(PyObject *li) throw(INTERP_KERNEL::Exception)
1393            {
1394              int sw;
1395              int singleVal;
1396              std::vector<int> multiVal;
1397              std::pair<int, std::pair<int,int> > slic;
1398              ParaMEDMEM::DataArrayInt *daIntTyypp=0;
1399              convertObjToPossibleCpp2(li,self->getNumberOfNodes(),sw,singleVal,multiVal,slic,daIntTyypp);
1400              switch(sw)
1401                {
1402                case 1:
1403                  return self->duplicateNodesInCoords(&singleVal,&singleVal+1);
1404                case 2:
1405                  return self->duplicateNodesInCoords(&multiVal[0],&multiVal[0]+multiVal.size());
1406                case 4:
1407                  return self->duplicateNodesInCoords(daIntTyypp->begin(),daIntTyypp->end());
1408                default:
1409                  throw INTERP_KERNEL::Exception("MEDCouplingPointSet::duplicateNodesInCoords : unrecognized type entered, expected list of int, tuple of int or DataArrayInt !");
1410                }
1411            }
1412
1413            virtual PyObject *getReverseNodalConnectivity() const throw(INTERP_KERNEL::Exception)
1414            {
1415              MEDCouplingAutoRefCountObjectPtr<DataArrayInt> d0=DataArrayInt::New();
1416              MEDCouplingAutoRefCountObjectPtr<DataArrayInt> d1=DataArrayInt::New();
1417              self->getReverseNodalConnectivity(d0,d1);
1418              PyObject *ret=PyTuple_New(2);
1419              PyTuple_SetItem(ret,0,SWIG_NewPointerObj(SWIG_as_voidptr(d0.retn()),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 ));
1420              PyTuple_SetItem(ret,1,SWIG_NewPointerObj(SWIG_as_voidptr(d1.retn()),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 ));
1421              return ret;
1422            }
1423
1424            virtual PyObject *findCommonCells(int compType, int startCellId=0) const throw(INTERP_KERNEL::Exception)
1425            {
1426              DataArrayInt *v0=0,*v1=0;
1427              self->findCommonCells(compType,startCellId,v0,v1);
1428              PyObject *res = PyList_New(2);
1429              PyList_SetItem(res,0,SWIG_NewPointerObj(SWIG_as_voidptr(v0),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 ));
1430              PyList_SetItem(res,1,SWIG_NewPointerObj(SWIG_as_voidptr(v1),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 ));
1431              return res;
1432            }
1433
1434       
1435            virtual void renumberNodesInConn(PyObject *li) throw(INTERP_KERNEL::Exception)
1436            {
1437              void *da=0;
1438              int res1=SWIG_ConvertPtr(li,&da,SWIGTYPE_p_ParaMEDMEM__DataArrayInt, 0 | 0 );
1439              if (!SWIG_IsOK(res1))
1440                {
1441                  int size;
1442                  INTERP_KERNEL::AutoPtr<int> tmp=convertPyToNewIntArr2(li,&size);
1443                  self->renumberNodesInConn(tmp);
1444                }
1445              else
1446                {
1447                  DataArrayInt *da2=reinterpret_cast< DataArrayInt * >(da);
1448                  if(!da2)
1449                    throw INTERP_KERNEL::Exception("Not null DataArrayInt instance expected !");
1450                  da2->checkAllocated();
1451                  self->renumberNodesInConn(da2->getConstPointer());
1452                }
1453            }
1454
1455            virtual PyObject *getNodeIdsInUse() const throw(INTERP_KERNEL::Exception)
1456            {
1457              int ret1=-1;
1458              DataArrayInt *ret0=self->getNodeIdsInUse(ret1);
1459              PyObject *ret=PyTuple_New(2);
1460              PyTuple_SetItem(ret,0,SWIG_NewPointerObj(SWIG_as_voidptr(ret0),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 ));
1461              PyTuple_SetItem(ret,1,PyInt_FromLong(ret1));
1462              return ret;
1463            }
1464
1465            virtual DataArrayInt *fillCellIdsToKeepFromNodeIds(PyObject *li, bool fullyIn) const
1466            {
1467              DataArrayInt *ret=0;
1468              //
1469              int szArr,sw,iTypppArr;
1470              std::vector<int> stdvecTyyppArr;
1471              const int *tmp=convertObjToPossibleCpp1_Safe(li,sw,szArr,iTypppArr,stdvecTyyppArr);
1472              self->fillCellIdsToKeepFromNodeIds(tmp,tmp+szArr,fullyIn,ret);
1473              return ret;
1474            }
1475
1476            virtual PyObject *mergeNodes(double precision) throw(INTERP_KERNEL::Exception)
1477            {
1478              bool ret1;
1479              int ret2;
1480              DataArrayInt *ret0=self->mergeNodes(precision,ret1,ret2);
1481              PyObject *res = PyList_New(3);
1482              PyList_SetItem(res,0,SWIG_NewPointerObj(SWIG_as_voidptr(ret0),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 ));
1483              PyList_SetItem(res,1,SWIG_From_bool(ret1));
1484              PyList_SetItem(res,2,SWIG_From_int(ret2));
1485              return res;
1486            }
1487            
1488            virtual PyObject *mergeNodes2(double precision) throw(INTERP_KERNEL::Exception)
1489            {
1490              bool ret1;
1491              int ret2;
1492              DataArrayInt *ret0=self->mergeNodes2(precision,ret1,ret2);
1493              PyObject *res = PyList_New(3);
1494              PyList_SetItem(res,0,SWIG_NewPointerObj(SWIG_as_voidptr(ret0),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 ));
1495              PyList_SetItem(res,1,SWIG_From_bool(ret1));
1496              PyList_SetItem(res,2,SWIG_From_int(ret2));
1497              return res;
1498            }
1499            
1500            DataArrayInt *getCellIdsLyingOnNodes(PyObject *li, bool fullyIn) const throw(INTERP_KERNEL::Exception)
1501            {
1502              void *da=0;
1503              int res1=SWIG_ConvertPtr(li,&da,SWIGTYPE_p_ParaMEDMEM__DataArrayInt, 0 |  0 );
1504              if (!SWIG_IsOK(res1))
1505                {
1506                  int size;
1507                  INTERP_KERNEL::AutoPtr<int> tmp=convertPyToNewIntArr2(li,&size);
1508                  return self->getCellIdsLyingOnNodes(tmp,((const int *)tmp)+size,fullyIn);
1509                }
1510              else
1511                {
1512                  DataArrayInt *da2=reinterpret_cast< DataArrayInt * >(da);
1513                  if(!da2)
1514                    throw INTERP_KERNEL::Exception("Not null DataArrayInt instance expected !");
1515                  da2->checkAllocated();
1516                  return self->getCellIdsLyingOnNodes(da2->getConstPointer(),da2->getConstPointer()+da2->getNbOfElems(),fullyIn);
1517                }
1518            }
1519
1520            MEDCouplingPointSet *__getitem__(PyObject *listOrDataArrI) throw(INTERP_KERNEL::Exception)
1521            {
1522              int sw;
1523              int singleVal;
1524              std::vector<int> multiVal;
1525              std::pair<int, std::pair<int,int> > slic;
1526              ParaMEDMEM::DataArrayInt *daIntTyypp=0;
1527              int nbc=self->getNumberOfCells();
1528              convertObjToPossibleCpp2(listOrDataArrI,nbc,sw,singleVal,multiVal,slic,daIntTyypp);
1529              switch(sw)
1530                {
1531                case 1:
1532                  {
1533                    if(singleVal>=nbc)
1534                      {
1535                        std::ostringstream oss;
1536                        oss << "Requesting for cell id " << singleVal << " having only " << nbc << " cells !";
1537                        throw INTERP_KERNEL::Exception(oss.str().c_str());
1538                      }
1539                    if(singleVal>=0)
1540                      return self->buildPartOfMySelf(&singleVal,&singleVal+1,true);
1541                    else
1542                      {
1543                        if(nbc+singleVal>0)
1544                          {
1545                            int tmp=nbc+singleVal;
1546                            return self->buildPartOfMySelf(&tmp,&tmp+1,true);
1547                          }
1548                        else
1549                          {
1550                            std::ostringstream oss;
1551                            oss << "Requesting for cell id " << singleVal << " having only " << nbc << " cells !";
1552                            throw INTERP_KERNEL::Exception(oss.str().c_str());
1553                          }
1554                      }
1555                  }
1556                case 2:
1557                  {
1558                    return static_cast<MEDCouplingPointSet *>(self->buildPartOfMySelf(&multiVal[0],&multiVal[0]+multiVal.size(),true));
1559                  }
1560                case 3:
1561                  {
1562                    return self->buildPartOfMySelf2(slic.first,slic.second.first,slic.second.second,true);
1563                  }
1564                case 4:
1565                  {
1566                    if(!daIntTyypp)
1567                      throw INTERP_KERNEL::Exception("MEDCouplingUMesh::__getitem__ : null instance has been given in input !");
1568                    daIntTyypp->checkAllocated();
1569                    return self->buildPartOfMySelf(daIntTyypp->begin(),daIntTyypp->end(),true);
1570                  }
1571                default:
1572                  throw INTERP_KERNEL::Exception("MEDCouplingUMesh::__getitem__ : unrecognized type in input ! Possibilities are : int, list or tuple of int DataArrayInt instance !");
1573                }
1574            }
1575            
1576            static void Rotate2DAlg(PyObject *center, double angle, int nbNodes, PyObject *coords) throw(INTERP_KERNEL::Exception)
1577            {
1578              int sz;
1579              INTERP_KERNEL::AutoCPtr<double> c=convertPyToNewDblArr2(center,&sz);
1580              INTERP_KERNEL::AutoCPtr<double> coo=convertPyToNewDblArr2(coords,&sz);
1581              ParaMEDMEM::MEDCouplingPointSet::Rotate2DAlg(c,angle,nbNodes,coo);
1582              for(int i=0;i<sz;i++)
1583                PyList_SetItem(coords,i,PyFloat_FromDouble(coo[i]));
1584            }
1585            
1586            static void Rotate2DAlg(PyObject *center, double angle, PyObject *coords) throw(INTERP_KERNEL::Exception)
1587            {
1588              int sz;
1589              INTERP_KERNEL::AutoCPtr<double> c=convertPyToNewDblArr2(center,&sz);
1590              int sw,nbNodes=0;
1591              double val0;  ParaMEDMEM::DataArrayDouble *val1=0; ParaMEDMEM::DataArrayDoubleTuple *val2=0;
1592              std::vector<double> val3;
1593              const double *coo=convertObjToPossibleCpp5_Safe2(coords,sw,val0,val1,val2,val3,
1594                                                             "Rotate2DAlg",2,true,nbNodes);
1595              if(sw!=2 && sw!=3)
1596                throw INTERP_KERNEL::Exception("Invalid call to MEDCouplingPointSet::Rotate2DAlg : try another overload method !");
1597              ParaMEDMEM::MEDCouplingPointSet::Rotate2DAlg(c,angle,nbNodes,const_cast<double *>(coo));
1598            }
1599            
1600            static void Rotate3DAlg(PyObject *center, PyObject *vect, double angle, int nbNodes, PyObject *coords) throw(INTERP_KERNEL::Exception)
1601            {
1602              int sz,sz2;
1603              INTERP_KERNEL::AutoCPtr<double> c=convertPyToNewDblArr2(center,&sz);
1604              INTERP_KERNEL::AutoCPtr<double> coo=convertPyToNewDblArr2(coords,&sz);
1605              INTERP_KERNEL::AutoCPtr<double> v=convertPyToNewDblArr2(vect,&sz2);
1606              ParaMEDMEM::MEDCouplingPointSet::Rotate3DAlg(c,v,angle,nbNodes,coo);
1607              for(int i=0;i<sz;i++)
1608                PyList_SetItem(coords,i,PyFloat_FromDouble(coo[i]));
1609            }
1610            
1611            static void Rotate3DAlg(PyObject *center, PyObject *vect, double angle, PyObject *coords) throw(INTERP_KERNEL::Exception)
1612            {
1613              int sz,sz2;
1614              INTERP_KERNEL::AutoCPtr<double> c=convertPyToNewDblArr2(center,&sz);
1615              int sw,nbNodes=0;
1616              double val0;  ParaMEDMEM::DataArrayDouble *val1=0; ParaMEDMEM::DataArrayDoubleTuple *val2=0;
1617              std::vector<double> val3;
1618              const double *coo=convertObjToPossibleCpp5_Safe2(coords,sw,val0,val1,val2,val3,
1619                                                             "Rotate3DAlg",3,true,nbNodes);
1620              if(sw!=2 && sw!=3)
1621                throw INTERP_KERNEL::Exception("Invalid call to MEDCouplingPointSet::Rotate3DAlg : try another overload method !");
1622              INTERP_KERNEL::AutoCPtr<double> v=convertPyToNewDblArr2(vect,&sz2);
1623              ParaMEDMEM::MEDCouplingPointSet::Rotate3DAlg(c,v,angle,nbNodes,const_cast<double *>(coo));
1624            }
1625          }
1626     };
1627
1628   //== MEDCouplingPointSet End
1629
1630   class MEDCouplingUMeshCell
1631   {
1632   public:
1633     INTERP_KERNEL::NormalizedCellType getType() const;
1634     %extend
1635       {
1636         std::string __str__() const throw(INTERP_KERNEL::Exception)
1637         {
1638           return self->repr();
1639         }
1640
1641         PyObject *getAllConn() const throw(INTERP_KERNEL::Exception)
1642         {
1643           int ret2;
1644           const int *r=self->getAllConn(ret2);
1645           PyObject *ret=PyTuple_New(ret2);
1646           for(int i=0;i<ret2;i++)
1647             PyTuple_SetItem(ret,i,PyInt_FromLong(r[i]));
1648           return ret;
1649         }
1650       }
1651   };
1652
1653   class MEDCouplingUMeshCellIterator
1654   {
1655   public:
1656     %extend
1657       {
1658         PyObject *next()
1659         {
1660           MEDCouplingUMeshCell *ret=self->nextt();
1661           if(ret)
1662             return SWIG_NewPointerObj(SWIG_as_voidptr(ret),SWIGTYPE_p_ParaMEDMEM__MEDCouplingUMeshCell,0|0);
1663           else
1664             {
1665               PyErr_SetString(PyExc_StopIteration,"No more data.");
1666               return 0;
1667             }
1668         }
1669       }
1670   };
1671
1672   class MEDCouplingUMeshCellByTypeIterator
1673   {
1674   public:
1675     ~MEDCouplingUMeshCellByTypeIterator();
1676     %extend
1677       {
1678         PyObject *next()
1679         {
1680           MEDCouplingUMeshCellEntry *ret=self->nextt();
1681           if(ret)
1682             return SWIG_NewPointerObj(SWIG_as_voidptr(ret),SWIGTYPE_p_ParaMEDMEM__MEDCouplingUMeshCellEntry,SWIG_POINTER_OWN | 0);
1683           else
1684             {
1685               PyErr_SetString(PyExc_StopIteration,"No more data.");
1686               return 0;
1687             }
1688         }
1689       }
1690   };
1691
1692   class MEDCouplingUMeshCellByTypeEntry
1693   {
1694   public:
1695     ~MEDCouplingUMeshCellByTypeEntry();
1696     %extend
1697       {
1698         MEDCouplingUMeshCellByTypeIterator *__iter__()
1699         {
1700           return self->iterator();
1701         }
1702       }
1703   };
1704
1705   class MEDCouplingUMeshCellEntry
1706   {
1707   public:
1708     INTERP_KERNEL::NormalizedCellType getType() const;
1709     int getNumberOfElems() const;
1710     %extend
1711       {
1712         MEDCouplingUMeshCellIterator *__iter__()
1713         {
1714           return self->iterator();
1715         }
1716       }
1717   };
1718   
1719   //== MEDCouplingUMesh
1720
1721   class MEDCouplingUMesh : public ParaMEDMEM::MEDCouplingPointSet
1722   {
1723   public:
1724     static MEDCouplingUMesh *New() throw(INTERP_KERNEL::Exception);
1725     static MEDCouplingUMesh *New(const char *meshName, int meshDim) throw(INTERP_KERNEL::Exception);
1726     MEDCouplingUMesh *clone(bool recDeepCpy) const;
1727     void checkCoherency() const throw(INTERP_KERNEL::Exception);
1728     void setMeshDimension(int meshDim) throw(INTERP_KERNEL::Exception);
1729     void allocateCells(int nbOfCells=0) throw(INTERP_KERNEL::Exception);
1730     void finishInsertingCells() throw(INTERP_KERNEL::Exception);
1731     MEDCouplingUMeshCellByTypeEntry *cellsByType() throw(INTERP_KERNEL::Exception);
1732     void setConnectivity(DataArrayInt *conn, DataArrayInt *connIndex, bool isComputingTypes=true) throw(INTERP_KERNEL::Exception);
1733     INTERP_KERNEL::NormalizedCellType getTypeOfCell(int cellId) const throw(INTERP_KERNEL::Exception);
1734     void setPartOfMySelf2(int start, int end, int step, const MEDCouplingUMesh& otherOnSameCoordsThanThis) throw(INTERP_KERNEL::Exception);
1735     int getNumberOfNodesInCell(int cellId) const throw(INTERP_KERNEL::Exception);
1736     int getMeshLength() const throw(INTERP_KERNEL::Exception);
1737     void computeTypes() throw(INTERP_KERNEL::Exception);
1738     std::string reprConnectivityOfThis() const throw(INTERP_KERNEL::Exception);
1739     MEDCouplingUMesh *buildSetInstanceFromThis(int spaceDim) const throw(INTERP_KERNEL::Exception);
1740     //tools
1741     void shiftNodeNumbersInConn(int delta) throw(INTERP_KERNEL::Exception);
1742     std::vector<bool> getQuadraticStatus() const throw(INTERP_KERNEL::Exception);
1743     DataArrayInt *findCellIdsOnBoundary() const throw(INTERP_KERNEL::Exception);
1744     MEDCouplingUMesh *computeSkin() const throw(INTERP_KERNEL::Exception);
1745     bool checkConsecutiveCellTypes() const throw(INTERP_KERNEL::Exception);
1746     bool checkConsecutiveCellTypesForMEDFileFrmt() const throw(INTERP_KERNEL::Exception);
1747     DataArrayInt *rearrange2ConsecutiveCellTypes() throw(INTERP_KERNEL::Exception);
1748     DataArrayInt *sortCellsInMEDFileFrmt() throw(INTERP_KERNEL::Exception);
1749     DataArrayInt *getRenumArrForMEDFileFrmt() const throw(INTERP_KERNEL::Exception);
1750     DataArrayInt *convertCellArrayPerGeoType(const DataArrayInt *da) const throw(INTERP_KERNEL::Exception);
1751     DataArrayInt *computeFetchedNodeIds() const throw(INTERP_KERNEL::Exception);
1752     MEDCouplingUMesh *buildDescendingConnectivity(DataArrayInt *desc, DataArrayInt *descIndx, DataArrayInt *revDesc, DataArrayInt *revDescIndx) const throw(INTERP_KERNEL::Exception);
1753     MEDCouplingUMesh *buildDescendingConnectivity2(DataArrayInt *desc, DataArrayInt *descIndx, DataArrayInt *revDesc, DataArrayInt *revDescIndx) const throw(INTERP_KERNEL::Exception);
1754     MEDCouplingUMesh *explode3DMeshTo1D(DataArrayInt *desc, DataArrayInt *descIndx, DataArrayInt *revDesc, DataArrayInt *revDescIndx) const throw(INTERP_KERNEL::Exception);
1755     void orientCorrectlyPolyhedrons() throw(INTERP_KERNEL::Exception);
1756     bool isPresenceOfQuadratic() const throw(INTERP_KERNEL::Exception);
1757     MEDCouplingFieldDouble *buildDirectionVectorField() const throw(INTERP_KERNEL::Exception);
1758     bool isContiguous1D() const throw(INTERP_KERNEL::Exception);
1759     void tessellate2D(double eps) throw(INTERP_KERNEL::Exception);
1760     void tessellate2DCurve(double eps) throw(INTERP_KERNEL::Exception);
1761     void convertQuadraticCellsToLinear() throw(INTERP_KERNEL::Exception);
1762     DataArrayInt *convertLinearCellsToQuadratic(int conversionType=0) throw(INTERP_KERNEL::Exception);
1763     void convertDegeneratedCells() throw(INTERP_KERNEL::Exception);
1764     bool areOnlySimplexCells() const throw(INTERP_KERNEL::Exception);
1765     MEDCouplingFieldDouble *getEdgeRatioField() const throw(INTERP_KERNEL::Exception);
1766     MEDCouplingFieldDouble *getAspectRatioField() const throw(INTERP_KERNEL::Exception);
1767     MEDCouplingFieldDouble *getWarpField() const throw(INTERP_KERNEL::Exception);
1768     MEDCouplingFieldDouble *getSkewField() const throw(INTERP_KERNEL::Exception);
1769     DataArrayInt *convexEnvelop2D() throw(INTERP_KERNEL::Exception);
1770     std::string cppRepr() const throw(INTERP_KERNEL::Exception);
1771     DataArrayInt *findAndCorrectBadOriented3DExtrudedCells() throw(INTERP_KERNEL::Exception);
1772     DataArrayInt *findAndCorrectBadOriented3DCells() throw(INTERP_KERNEL::Exception);
1773     ParaMEDMEM::MEDCoupling1GTUMesh *convertIntoSingleGeoTypeMesh() const throw(INTERP_KERNEL::Exception);
1774     DataArrayInt *convertNodalConnectivityToStaticGeoTypeMesh() const throw(INTERP_KERNEL::Exception);
1775     static MEDCouplingUMesh *Build0DMeshFromCoords(DataArrayDouble *da) throw(INTERP_KERNEL::Exception);
1776     static MEDCouplingUMesh *MergeUMeshes(const MEDCouplingUMesh *mesh1, const MEDCouplingUMesh *mesh2) throw(INTERP_KERNEL::Exception);
1777     static MEDCouplingUMesh *MergeUMeshesOnSameCoords(const MEDCouplingUMesh *mesh1, const MEDCouplingUMesh *mesh2) throw(INTERP_KERNEL::Exception);
1778     static DataArrayInt *ComputeSpreadZoneGradually(const DataArrayInt *arrIn, const DataArrayInt *arrIndxIn) throw(INTERP_KERNEL::Exception);
1779     static DataArrayInt *ComputeRangesFromTypeDistribution(const std::vector<int>& code) throw(INTERP_KERNEL::Exception);
1780     %extend {
1781       MEDCouplingUMesh() throw(INTERP_KERNEL::Exception)
1782       {
1783         return MEDCouplingUMesh::New();
1784       }
1785       
1786       MEDCouplingUMesh(const char *meshName, int meshDim) throw(INTERP_KERNEL::Exception)
1787       {
1788         return MEDCouplingUMesh::New(meshName,meshDim);
1789       }
1790       
1791       std::string __str__() const throw(INTERP_KERNEL::Exception)
1792       {
1793         return self->simpleRepr();
1794       }
1795       
1796       std::string __repr__() const throw(INTERP_KERNEL::Exception)
1797       {
1798         std::ostringstream oss;
1799         self->reprQuickOverview(oss);
1800         return oss.str();
1801       }
1802       
1803       MEDCouplingUMeshCellIterator *__iter__() throw(INTERP_KERNEL::Exception)
1804       {
1805         return self->cellIterator();
1806       }
1807       
1808       void setPartOfMySelf(PyObject *li, const MEDCouplingUMesh& otherOnSameCoordsThanThis) throw(INTERP_KERNEL::Exception)
1809       {
1810         int sw;
1811         int singleVal;
1812         std::vector<int> multiVal;
1813         std::pair<int, std::pair<int,int> > slic;
1814         ParaMEDMEM::DataArrayInt *daIntTyypp=0;
1815         int nbc=self->getNumberOfCells();
1816         convertObjToPossibleCpp2(li,nbc,sw,singleVal,multiVal,slic,daIntTyypp);
1817         switch(sw)
1818           {
1819           case 1:
1820             {
1821               if(singleVal>=nbc)
1822                 {
1823                   std::ostringstream oss;
1824                   oss << "Requesting for cell id " << singleVal << " having only " << nbc << " cells !";
1825                   throw INTERP_KERNEL::Exception(oss.str().c_str());
1826                 }
1827               if(singleVal>=0)
1828                 {
1829                   self->setPartOfMySelf(&singleVal,&singleVal+1,otherOnSameCoordsThanThis);
1830                   break;
1831                 }
1832               else
1833                 {
1834                   if(nbc+singleVal>0)
1835                     {
1836                       int tmp=nbc+singleVal;
1837                       self->setPartOfMySelf(&tmp,&tmp+1,otherOnSameCoordsThanThis);
1838                       break;
1839                     }
1840                   else
1841                     {
1842                       std::ostringstream oss;
1843                       oss << "Requesting for cell id " << singleVal << " having only " << nbc << " cells !";
1844                       throw INTERP_KERNEL::Exception(oss.str().c_str());
1845                     }
1846                 }
1847             }
1848           case 2:
1849             {
1850               self->setPartOfMySelf(&multiVal[0],&multiVal[0]+multiVal.size(),otherOnSameCoordsThanThis);
1851               break;
1852             }
1853           case 4:
1854             {
1855               if(!daIntTyypp)
1856                 throw INTERP_KERNEL::Exception("MEDCouplingUMesh::setPartOfMySelf : null instance has been given in input !");
1857               daIntTyypp->checkAllocated();
1858               self->setPartOfMySelf(daIntTyypp->begin(),daIntTyypp->end(),otherOnSameCoordsThanThis);
1859               break;
1860             }
1861           default:
1862             throw INTERP_KERNEL::Exception("MEDCouplingUMesh::setPartOfMySelf : unrecognized type in input ! Possibilities are : int, list or tuple of int DataArrayInt instance !");
1863           }
1864       }
1865
1866       void __setitem__(PyObject *li, const MEDCouplingUMesh& otherOnSameCoordsThanThis) throw(INTERP_KERNEL::Exception)
1867       {
1868         int sw;
1869         int singleVal;
1870         std::vector<int> multiVal;
1871         std::pair<int, std::pair<int,int> > slic;
1872         ParaMEDMEM::DataArrayInt *daIntTyypp=0;
1873         int nbc=self->getNumberOfCells();
1874         convertObjToPossibleCpp2(li,nbc,sw,singleVal,multiVal,slic,daIntTyypp);
1875         switch(sw)
1876           {
1877           case 1:
1878             {
1879               if(singleVal>=nbc)
1880                 {
1881                   std::ostringstream oss;
1882                   oss << "Requesting for cell id " << singleVal << " having only " << nbc << " cells !";
1883                   throw INTERP_KERNEL::Exception(oss.str().c_str());
1884                 }
1885               if(singleVal>=0)
1886                 {
1887                   self->setPartOfMySelf(&singleVal,&singleVal+1,otherOnSameCoordsThanThis);
1888                   break;
1889                 }
1890               else
1891                 {
1892                   if(nbc+singleVal>0)
1893                     {
1894                       int tmp=nbc+singleVal;
1895                       self->setPartOfMySelf(&tmp,&tmp+1,otherOnSameCoordsThanThis);
1896                       break;
1897                     }
1898                   else
1899                     {
1900                       std::ostringstream oss;
1901                       oss << "Requesting for cell id " << singleVal << " having only " << nbc << " cells !";
1902                       throw INTERP_KERNEL::Exception(oss.str().c_str());
1903                     }
1904                 }
1905             }
1906           case 2:
1907             {
1908               self->setPartOfMySelf(&multiVal[0],&multiVal[0]+multiVal.size(),otherOnSameCoordsThanThis);
1909               break;
1910             }
1911           case 3:
1912             {
1913               self->setPartOfMySelf2(slic.first,slic.second.first,slic.second.second,otherOnSameCoordsThanThis);
1914               break;
1915             }
1916           case 4:
1917             {
1918               if(!daIntTyypp)
1919                 throw INTERP_KERNEL::Exception("MEDCouplingUMesh::__setitem__ : null instance has been given in input !");
1920               daIntTyypp->checkAllocated();
1921               self->setPartOfMySelf(daIntTyypp->begin(),daIntTyypp->end(),otherOnSameCoordsThanThis);
1922               break;
1923             }
1924           default:
1925             throw INTERP_KERNEL::Exception("MEDCouplingUMesh::__setitem__ : unrecognized type in input ! Possibilities are : int, list or tuple of int, slice, DataArrayInt instance !");
1926           }
1927       }
1928
1929       void insertNextCell(INTERP_KERNEL::NormalizedCellType type, int size, PyObject *li) throw(INTERP_KERNEL::Exception)
1930       {
1931         int szArr,sw,iTypppArr;
1932         std::vector<int> stdvecTyyppArr;
1933         const int *tmp=convertObjToPossibleCpp1_Safe(li,sw,szArr,iTypppArr,stdvecTyyppArr);
1934         if(size>szArr)
1935           {
1936             std::ostringstream oss; oss << "Wrap of MEDCouplingUMesh::insertNextCell : request of connectivity with length " << size << " whereas the length of input is " << szArr << " !";
1937             throw INTERP_KERNEL::Exception(oss.str().c_str());
1938           }
1939         self->insertNextCell(type,size,tmp);
1940       }
1941
1942       void insertNextCell(INTERP_KERNEL::NormalizedCellType type, PyObject *li) throw(INTERP_KERNEL::Exception)
1943       {
1944         int szArr,sw,iTypppArr;
1945         std::vector<int> stdvecTyyppArr;
1946         const int *tmp=convertObjToPossibleCpp1_Safe(li,sw,szArr,iTypppArr,stdvecTyyppArr);
1947         self->insertNextCell(type,szArr,tmp);
1948       }
1949       
1950       DataArrayInt *getNodalConnectivity() throw(INTERP_KERNEL::Exception)
1951       {
1952         DataArrayInt *ret=self->getNodalConnectivity();
1953         if(ret)
1954           ret->incrRef();
1955         return ret;
1956       }
1957       DataArrayInt *getNodalConnectivityIndex() throw(INTERP_KERNEL::Exception)
1958       {
1959         DataArrayInt *ret=self->getNodalConnectivityIndex();
1960         if(ret)
1961           ret->incrRef();
1962         return ret;
1963       }
1964       PyObject *getAllTypes() const throw(INTERP_KERNEL::Exception)
1965       {
1966         std::set<INTERP_KERNEL::NormalizedCellType> result=self->getAllTypes();
1967         std::set<INTERP_KERNEL::NormalizedCellType>::const_iterator iL=result.begin();
1968         PyObject *res = PyList_New(result.size());
1969         for (int i=0;iL!=result.end(); i++, iL++)
1970           PyList_SetItem(res,i,PyInt_FromLong(*iL));
1971         return res;
1972       }
1973       
1974       static PyObject *ComputeSpreadZoneGraduallyFromSeed(PyObject *seed, const DataArrayInt *arrIn, const DataArrayInt *arrIndxIn, int nbOfDepthPeeling=-1) throw(INTERP_KERNEL::Exception)
1975       {
1976         int szArr,sw,iTypppArr;
1977         std::vector<int> stdvecTyyppArr;
1978         const int *seedPtr=convertObjToPossibleCpp1_Safe(seed,sw,szArr,iTypppArr,stdvecTyyppArr);
1979         int nbOfDepthPeelingPerformed=0;
1980         DataArrayInt *ret0=MEDCouplingUMesh::ComputeSpreadZoneGraduallyFromSeed(seedPtr,seedPtr+szArr,arrIn,arrIndxIn,nbOfDepthPeeling,nbOfDepthPeelingPerformed);
1981         PyObject *res=PyTuple_New(2);
1982         PyTuple_SetItem(res,0,SWIG_NewPointerObj(SWIG_as_voidptr(ret0),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 ));
1983         PyTuple_SetItem(res,1,PyInt_FromLong(nbOfDepthPeelingPerformed));
1984         return res;
1985       }
1986
1987       static PyObject *FindCommonCellsAlg(int compType, int startCellId, const DataArrayInt *nodal, const DataArrayInt *nodalI, const DataArrayInt *revNodal, const DataArrayInt *revNodalI) throw(INTERP_KERNEL::Exception)
1988       {
1989         DataArrayInt *v0=0,*v1=0;
1990         MEDCouplingUMesh::FindCommonCellsAlg(compType,startCellId,nodal,nodalI,revNodal,revNodalI,v0,v1);
1991         PyObject *res = PyList_New(2);
1992         PyList_SetItem(res,0,SWIG_NewPointerObj(SWIG_as_voidptr(v0),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 ));
1993         PyList_SetItem(res,1,SWIG_NewPointerObj(SWIG_as_voidptr(v1),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 ));
1994         return res;
1995       }
1996       
1997       PyObject *distanceToPoint(PyObject *point) const throw(INTERP_KERNEL::Exception)
1998       {
1999         double val;
2000         DataArrayDouble *a;
2001         DataArrayDoubleTuple *aa;
2002         std::vector<double> bb;
2003         int sw;
2004         int nbOfCompo=self->getSpaceDimension();
2005         const double *pt=convertObjToPossibleCpp5_Safe(point,sw,val,a,aa,bb,"Python wrap of MEDCouplingUMesh::distanceToPoint",1,nbOfCompo,true);
2006         //
2007         int cellId=-1;
2008         double ret0=self->distanceToPoint(pt,pt+nbOfCompo,cellId);
2009         PyObject *ret=PyTuple_New(2);
2010         PyTuple_SetItem(ret,0,PyFloat_FromDouble(ret0));
2011         PyTuple_SetItem(ret,1,PyInt_FromLong(cellId));
2012         return ret;
2013       }
2014
2015       PyObject *distanceToPoints(const DataArrayDouble *pts) const throw(INTERP_KERNEL::Exception)
2016       {
2017         DataArrayInt *ret1=0;
2018         DataArrayDouble *ret0=self->distanceToPoints(pts,ret1);
2019         PyObject *ret=PyTuple_New(2);
2020         PyTuple_SetItem(ret,0,SWIG_NewPointerObj(SWIG_as_voidptr(ret0),SWIGTYPE_p_ParaMEDMEM__DataArrayDouble, SWIG_POINTER_OWN | 0 ));
2021         PyTuple_SetItem(ret,1,SWIG_NewPointerObj(SWIG_as_voidptr(ret1),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 ));
2022         return ret;
2023       }
2024
2025       PyObject *simplexize3D(int policy) throw(INTERP_KERNEL::Exception)
2026       {
2027         int ret1(-1);
2028         DataArrayInt *ret0(self->simplexize3D(policy,ret1));
2029         PyObject *ret=PyTuple_New(2);
2030         PyTuple_SetItem(ret,0,SWIG_NewPointerObj(SWIG_as_voidptr(ret0),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 ));
2031         PyTuple_SetItem(ret,1,PyInt_FromLong(ret1));
2032         return ret;
2033       }
2034       
2035       PyObject *checkButterflyCells(double eps=1e-12) throw(INTERP_KERNEL::Exception)
2036       {
2037         std::vector<int> cells;
2038         self->checkButterflyCells(cells,eps);
2039         DataArrayInt *ret=DataArrayInt::New();
2040         ret->alloc((int)cells.size(),1);
2041         std::copy(cells.begin(),cells.end(),ret->getPointer());
2042         return SWIG_NewPointerObj(SWIG_as_voidptr(ret),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 );
2043       }
2044
2045       PyObject *splitByType() const throw(INTERP_KERNEL::Exception)
2046       {
2047         std::vector<MEDCouplingUMesh *> ms=self->splitByType();
2048         int sz=ms.size();
2049         PyObject *ret = PyList_New(sz);
2050         for(int i=0;i<sz;i++)
2051           PyList_SetItem(ret,i,SWIG_NewPointerObj(SWIG_as_voidptr(ms[i]),SWIGTYPE_p_ParaMEDMEM__MEDCouplingUMesh, SWIG_POINTER_OWN | 0 ));
2052         return ret;
2053       }
2054
2055       PyObject *partitionBySpreadZone() const throw(INTERP_KERNEL::Exception)
2056       {
2057         std::vector<DataArrayInt *> retCpp=self->partitionBySpreadZone();
2058         int sz=retCpp.size();
2059         PyObject *ret=PyList_New(sz);
2060         for(int i=0;i<sz;i++)
2061           PyList_SetItem(ret,i,SWIG_NewPointerObj(SWIG_as_voidptr(retCpp[i]),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 ));
2062         return ret;
2063       }
2064
2065       PyObject *keepSpecifiedCells(INTERP_KERNEL::NormalizedCellType type, PyObject *ids) const throw(INTERP_KERNEL::Exception)
2066       {
2067         int size;
2068         INTERP_KERNEL::AutoPtr<int> tmp=convertPyToNewIntArr2(ids,&size);
2069         MEDCouplingUMesh *ret=self->keepSpecifiedCells(type,tmp,tmp+size);
2070         return SWIG_NewPointerObj(SWIG_as_voidptr(ret),SWIGTYPE_p_ParaMEDMEM__MEDCouplingUMesh, SWIG_POINTER_OWN | 0 );
2071       }
2072
2073       bool checkConsecutiveCellTypesAndOrder(PyObject *li) const throw(INTERP_KERNEL::Exception)
2074       {
2075         int sz;
2076         INTERP_KERNEL::AutoPtr<INTERP_KERNEL::NormalizedCellType> order=(INTERP_KERNEL::NormalizedCellType *)convertPyToNewIntArr2(li,&sz);
2077         bool ret=self->checkConsecutiveCellTypesAndOrder(order,order+sz);
2078         return ret;
2079       }
2080
2081       DataArrayInt *getRenumArrForConsecutiveCellTypesSpec(PyObject *li) const throw(INTERP_KERNEL::Exception)
2082       {
2083         int sz;
2084         INTERP_KERNEL::AutoPtr<INTERP_KERNEL::NormalizedCellType> order=(INTERP_KERNEL::NormalizedCellType *)convertPyToNewIntArr2(li,&sz);
2085         DataArrayInt *ret=self->getRenumArrForConsecutiveCellTypesSpec(order,(INTERP_KERNEL::NormalizedCellType *)order+sz);
2086         return ret;
2087       }
2088
2089       PyObject *findNodesToDuplicate(const MEDCouplingUMesh& otherDimM1OnSameCoords) const throw(INTERP_KERNEL::Exception)
2090       {
2091         DataArrayInt *tmp0=0,*tmp1=0,*tmp2=0;
2092         self->findNodesToDuplicate(otherDimM1OnSameCoords,tmp0,tmp1,tmp2);
2093         PyObject *ret=PyTuple_New(3);
2094         PyTuple_SetItem(ret,0,SWIG_NewPointerObj(SWIG_as_voidptr(tmp0),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 ));
2095         PyTuple_SetItem(ret,1,SWIG_NewPointerObj(SWIG_as_voidptr(tmp1),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 ));
2096         PyTuple_SetItem(ret,2,SWIG_NewPointerObj(SWIG_as_voidptr(tmp2),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 ));
2097         return ret;
2098       }
2099
2100       PyObject *findCellIdsLyingOn(const MEDCouplingUMesh& otherDimM1OnSameCoords) const throw(INTERP_KERNEL::Exception)
2101       {
2102         DataArrayInt *tmp0=0,*tmp1=0;
2103         self->findCellIdsLyingOn(otherDimM1OnSameCoords,tmp0,tmp1);
2104         PyObject *ret=PyTuple_New(2);
2105         PyTuple_SetItem(ret,0,SWIG_NewPointerObj(SWIG_as_voidptr(tmp0),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 ));
2106         PyTuple_SetItem(ret,1,SWIG_NewPointerObj(SWIG_as_voidptr(tmp1),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 ));
2107         return ret;
2108       }
2109
2110       void duplicateNodes(PyObject *li) throw(INTERP_KERNEL::Exception)
2111       {
2112         int sw;
2113         int singleVal;
2114         std::vector<int> multiVal;
2115         std::pair<int, std::pair<int,int> > slic;
2116         ParaMEDMEM::DataArrayInt *daIntTyypp=0;
2117         convertObjToPossibleCpp2(li,self->getNumberOfNodes(),sw,singleVal,multiVal,slic,daIntTyypp);
2118         switch(sw)
2119           {
2120           case 1:
2121             return self->duplicateNodes(&singleVal,&singleVal+1);
2122           case 2:
2123             return self->duplicateNodes(&multiVal[0],&multiVal[0]+multiVal.size());
2124           case 4:
2125             return self->duplicateNodes(daIntTyypp->begin(),daIntTyypp->end());
2126           default:
2127             throw INTERP_KERNEL::Exception("MEDCouplingUMesh::duplicateNodes : unrecognized type entered, expected list of int, tuple of int or DataArrayInt !");
2128           }
2129       }
2130
2131       void duplicateNodesInConn(PyObject *li, int offset) throw(INTERP_KERNEL::Exception)
2132       {
2133         int sw;
2134         int singleVal;
2135         std::vector<int> multiVal;
2136         std::pair<int, std::pair<int,int> > slic;
2137         ParaMEDMEM::DataArrayInt *daIntTyypp=0;
2138         convertObjToPossibleCpp2(li,self->getNumberOfNodes(),sw,singleVal,multiVal,slic,daIntTyypp);
2139         switch(sw)
2140           {
2141           case 1:
2142             return self->duplicateNodesInConn(&singleVal,&singleVal+1,offset);
2143           case 2:
2144             return self->duplicateNodesInConn(&multiVal[0],&multiVal[0]+multiVal.size(),offset);
2145           case 4:
2146             return self->duplicateNodesInConn(daIntTyypp->begin(),daIntTyypp->end(),offset);
2147           default:
2148             throw INTERP_KERNEL::Exception("MEDCouplingUMesh::duplicateNodesInConn : unrecognized type entered, expected list of int, tuple of int or DataArrayInt !");
2149           }
2150       }
2151
2152       PyObject *getLevArrPerCellTypes(PyObject *li) const throw(INTERP_KERNEL::Exception)
2153       {
2154         int sz;
2155         INTERP_KERNEL::AutoPtr<INTERP_KERNEL::NormalizedCellType> order=(INTERP_KERNEL::NormalizedCellType *)convertPyToNewIntArr2(li,&sz);
2156         DataArrayInt *tmp0,*tmp1=0;
2157         tmp0=self->getLevArrPerCellTypes(order,(INTERP_KERNEL::NormalizedCellType *)order+sz,tmp1);
2158         PyObject *ret=PyTuple_New(2);
2159         PyTuple_SetItem(ret,0,SWIG_NewPointerObj(SWIG_as_voidptr(tmp0),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 ));
2160         PyTuple_SetItem(ret,1,SWIG_NewPointerObj(SWIG_as_voidptr(tmp1),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 ));
2161         return ret;
2162       }
2163
2164       PyObject *convertNodalConnectivityToDynamicGeoTypeMesh() const throw(INTERP_KERNEL::Exception)
2165       {
2166         DataArrayInt *ret0=0,*ret1=0;
2167         self->convertNodalConnectivityToDynamicGeoTypeMesh(ret0,ret1);
2168         PyObject *ret=PyTuple_New(2);
2169         PyTuple_SetItem(ret,0,SWIG_NewPointerObj(SWIG_as_voidptr(ret0),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 ));
2170         PyTuple_SetItem(ret,1,SWIG_NewPointerObj(SWIG_as_voidptr(ret1),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 ));
2171         return ret;
2172       }
2173
2174       static PyObject *AggregateSortedByTypeMeshesOnSameCoords(PyObject *ms) throw(INTERP_KERNEL::Exception)
2175       {
2176         std::vector<const ParaMEDMEM::MEDCouplingUMesh *> meshes;
2177         convertFromPyObjVectorOfObj<const ParaMEDMEM::MEDCouplingUMesh *>(ms,SWIGTYPE_p_ParaMEDMEM__MEDCouplingUMesh,"MEDCouplingUMesh",meshes);
2178         DataArrayInt *ret1=0,*ret2=0;
2179         MEDCouplingUMesh *ret0=MEDCouplingUMesh::AggregateSortedByTypeMeshesOnSameCoords(meshes,ret1,ret2);
2180         PyObject *ret=PyTuple_New(3);
2181         PyTuple_SetItem(ret,0,SWIG_NewPointerObj(SWIG_as_voidptr(ret0),SWIGTYPE_p_ParaMEDMEM__MEDCouplingUMesh, SWIG_POINTER_OWN | 0 ));
2182         PyTuple_SetItem(ret,1,SWIG_NewPointerObj(SWIG_as_voidptr(ret1),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 ));
2183         PyTuple_SetItem(ret,2,SWIG_NewPointerObj(SWIG_as_voidptr(ret2),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 ));
2184         return ret;
2185       }
2186
2187       static PyObject *MergeUMeshesOnSameCoords(PyObject *ms) throw(INTERP_KERNEL::Exception)
2188       {
2189         std::vector<const ParaMEDMEM::MEDCouplingUMesh *> meshes;
2190         convertFromPyObjVectorOfObj<const ParaMEDMEM::MEDCouplingUMesh *>(ms,SWIGTYPE_p_ParaMEDMEM__MEDCouplingUMesh,"MEDCouplingUMesh",meshes);
2191         MEDCouplingUMesh *ret=MEDCouplingUMesh::MergeUMeshesOnSameCoords(meshes);
2192         return convertMesh(ret, SWIG_POINTER_OWN | 0 );
2193       }
2194
2195       static PyObject *FuseUMeshesOnSameCoords(PyObject *ms, int compType) throw(INTERP_KERNEL::Exception)
2196       {
2197         int sz;
2198         std::vector<const MEDCouplingUMesh *> meshes;
2199         convertFromPyObjVectorOfObj<const ParaMEDMEM::MEDCouplingUMesh *>(ms,SWIGTYPE_p_ParaMEDMEM__MEDCouplingUMesh,"MEDCouplingUMesh",meshes);
2200         std::vector<DataArrayInt *> corr;
2201         MEDCouplingUMesh *um=MEDCouplingUMesh::FuseUMeshesOnSameCoords(meshes,compType,corr);
2202         sz=corr.size();
2203         PyObject *ret1=PyList_New(sz);
2204         for(int i=0;i<sz;i++)
2205           PyList_SetItem(ret1,i,SWIG_NewPointerObj(SWIG_as_voidptr(corr[i]),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 ));
2206         PyObject *ret=PyList_New(2);
2207         PyList_SetItem(ret,0,SWIG_NewPointerObj(SWIG_as_voidptr(um),SWIGTYPE_p_ParaMEDMEM__MEDCouplingUMesh, SWIG_POINTER_OWN | 0 ));
2208         PyList_SetItem(ret,1,ret1);
2209         return ret;
2210       }
2211
2212       static void PutUMeshesOnSameAggregatedCoords(PyObject *ms) throw(INTERP_KERNEL::Exception)
2213       {
2214         std::vector<MEDCouplingUMesh *> meshes;
2215         convertFromPyObjVectorOfObj<ParaMEDMEM::MEDCouplingUMesh *>(ms,SWIGTYPE_p_ParaMEDMEM__MEDCouplingUMesh,"MEDCouplingUMesh",meshes);
2216         MEDCouplingUMesh::PutUMeshesOnSameAggregatedCoords(meshes);
2217       }
2218
2219       static void MergeNodesOnUMeshesSharingSameCoords(PyObject *ms, double eps) throw(INTERP_KERNEL::Exception)
2220       {
2221         std::vector<MEDCouplingUMesh *> meshes;
2222         convertFromPyObjVectorOfObj<ParaMEDMEM::MEDCouplingUMesh *>(ms,SWIGTYPE_p_ParaMEDMEM__MEDCouplingUMesh,"MEDCouplingUMesh",meshes);
2223         MEDCouplingUMesh::MergeNodesOnUMeshesSharingSameCoords(meshes,eps);
2224       }
2225
2226       static bool RemoveIdsFromIndexedArrays(PyObject *li, DataArrayInt *arr, DataArrayInt *arrIndx, int offsetForRemoval=0) throw(INTERP_KERNEL::Exception)
2227       {
2228         int sw;
2229         int singleVal;
2230         std::vector<int> multiVal;
2231         std::pair<int, std::pair<int,int> > slic;
2232         ParaMEDMEM::DataArrayInt *daIntTyypp=0;
2233         if(!arrIndx)
2234           throw INTERP_KERNEL::Exception("MEDCouplingUMesh::RemoveIdsFromIndexedArrays : null pointer as arrIndex !");
2235         convertObjToPossibleCpp2(li,arrIndx->getNumberOfTuples()-1,sw,singleVal,multiVal,slic,daIntTyypp);
2236         switch(sw)
2237           {
2238           case 1:
2239             return MEDCouplingUMesh::RemoveIdsFromIndexedArrays(&singleVal,&singleVal+1,arr,arrIndx,offsetForRemoval);
2240           case 2:
2241             return MEDCouplingUMesh::RemoveIdsFromIndexedArrays(&multiVal[0],&multiVal[0]+multiVal.size(),arr,arrIndx,offsetForRemoval);
2242           case 4:
2243             return MEDCouplingUMesh::RemoveIdsFromIndexedArrays(daIntTyypp->begin(),daIntTyypp->end(),arr,arrIndx,offsetForRemoval);
2244           default:
2245             throw INTERP_KERNEL::Exception("MEDCouplingUMesh::RemoveIdsFromIndexedArrays : unrecognized type entered, expected list of int, tuple of int or DataArrayInt !");
2246           }
2247       }
2248       
2249       static PyObject *ExtractFromIndexedArrays(PyObject *li, const DataArrayInt *arrIn, const DataArrayInt *arrIndxIn) throw(INTERP_KERNEL::Exception)
2250       {
2251         DataArrayInt *arrOut=0,*arrIndexOut=0;
2252         int sw;
2253         int singleVal;
2254         std::vector<int> multiVal;
2255         std::pair<int, std::pair<int,int> > slic;
2256         ParaMEDMEM::DataArrayInt *daIntTyypp=0;
2257         if(!arrIndxIn)
2258           throw INTERP_KERNEL::Exception("MEDCouplingUMesh::ExtractFromIndexedArrays : null pointer as arrIndxIn !");
2259         convertObjToPossibleCpp2(li,arrIndxIn->getNumberOfTuples()-1,sw,singleVal,multiVal,slic,daIntTyypp);
2260         switch(sw)
2261           {
2262           case 1:
2263             {
2264               MEDCouplingUMesh::ExtractFromIndexedArrays(&singleVal,&singleVal+1,arrIn,arrIndxIn,arrOut,arrIndexOut);
2265               break;
2266             }
2267           case 2:
2268             {
2269               MEDCouplingUMesh::ExtractFromIndexedArrays(&multiVal[0],&multiVal[0]+multiVal.size(),arrIn,arrIndxIn,arrOut,arrIndexOut);
2270               break;
2271             }
2272           case 4:
2273             {
2274               MEDCouplingUMesh::ExtractFromIndexedArrays(daIntTyypp->begin(),daIntTyypp->end(),arrIn,arrIndxIn,arrOut,arrIndexOut);
2275               break;
2276             }
2277           default:
2278             throw INTERP_KERNEL::Exception("MEDCouplingUMesh::ExtractFromIndexedArrays : unrecognized type entered, expected list of int, tuple of int or DataArrayInt !");
2279           }
2280         PyObject *ret=PyTuple_New(2);
2281         PyTuple_SetItem(ret,0,SWIG_NewPointerObj(SWIG_as_voidptr(arrOut),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 ));
2282         PyTuple_SetItem(ret,1,SWIG_NewPointerObj(SWIG_as_voidptr(arrIndexOut),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 ));
2283         return ret;
2284       }
2285
2286       static PyObject *ExtractFromIndexedArrays2(int strt, int stp, int step, const DataArrayInt *arrIn, const DataArrayInt *arrIndxIn) throw(INTERP_KERNEL::Exception)
2287       {
2288         DataArrayInt *arrOut=0,*arrIndexOut=0;
2289         MEDCouplingUMesh::ExtractFromIndexedArrays2(strt,stp,step,arrIn,arrIndxIn,arrOut,arrIndexOut);
2290         PyObject *ret=PyTuple_New(2);
2291         PyTuple_SetItem(ret,0,SWIG_NewPointerObj(SWIG_as_voidptr(arrOut),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 ));
2292         PyTuple_SetItem(ret,1,SWIG_NewPointerObj(SWIG_as_voidptr(arrIndexOut),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 ));
2293         return ret;
2294       }
2295
2296       static PyObject *ExtractFromIndexedArrays2(PyObject *slic, const DataArrayInt *arrIn, const DataArrayInt *arrIndxIn) throw(INTERP_KERNEL::Exception)
2297       {
2298         if(!PySlice_Check(slic))
2299           throw INTERP_KERNEL::Exception("ExtractFromIndexedArrays2 (wrap) : the first param is not a pyslice !");
2300         Py_ssize_t strt=2,stp=2,step=2;
2301         PySliceObject *sliC=reinterpret_cast<PySliceObject *>(slic);
2302         if(!arrIndxIn)
2303           throw INTERP_KERNEL::Exception("ExtractFromIndexedArrays2 (wrap) : last array is null !");
2304         arrIndxIn->checkAllocated();
2305         if(arrIndxIn->getNumberOfComponents()!=1)
2306           throw INTERP_KERNEL::Exception("ExtractFromIndexedArrays2 (wrap) : number of components of last argument must be equal to one !");
2307         if(PySlice_GetIndices(sliC,arrIndxIn->getNumberOfTuples(),&strt,&stp,&step)!=0)
2308           throw INTERP_KERNEL::Exception("ExtractFromIndexedArrays2 (wrap) : Invalid slice regarding nb of elements !");
2309         DataArrayInt *arrOut=0,*arrIndexOut=0;
2310         MEDCouplingUMesh::ExtractFromIndexedArrays2(strt,stp,step,arrIn,arrIndxIn,arrOut,arrIndexOut);
2311         PyObject *ret=PyTuple_New(2);
2312         PyTuple_SetItem(ret,0,SWIG_NewPointerObj(SWIG_as_voidptr(arrOut),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 ));
2313         PyTuple_SetItem(ret,1,SWIG_NewPointerObj(SWIG_as_voidptr(arrIndexOut),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 ));
2314         return ret;
2315       }
2316
2317       static PyObject *SetPartOfIndexedArrays(PyObject *li,
2318                                               const DataArrayInt *arrIn, const DataArrayInt *arrIndxIn,
2319                                               const DataArrayInt *srcArr, const DataArrayInt *srcArrIndex) throw(INTERP_KERNEL::Exception)
2320       {
2321         DataArrayInt *arrOut=0,*arrIndexOut=0;
2322         int sw;
2323         int singleVal;
2324         std::vector<int> multiVal;
2325         std::pair<int, std::pair<int,int> > slic;
2326         ParaMEDMEM::DataArrayInt *daIntTyypp=0;
2327         if(!arrIndxIn)
2328           throw INTERP_KERNEL::Exception("MEDCouplingUMesh::SetPartOfIndexedArrays : null pointer as arrIndex !");
2329         convertObjToPossibleCpp2(li,arrIndxIn->getNumberOfTuples()-1,sw,singleVal,multiVal,slic,daIntTyypp);
2330         switch(sw)
2331           {
2332           case 1:
2333             {
2334               MEDCouplingUMesh::SetPartOfIndexedArrays(&singleVal,&singleVal+1,arrIn,arrIndxIn,srcArr,srcArrIndex,arrOut,arrIndexOut);
2335               break;
2336             }
2337           case 2:
2338             {
2339               MEDCouplingUMesh::SetPartOfIndexedArrays(&multiVal[0],&multiVal[0]+multiVal.size(),arrIn,arrIndxIn,srcArr,srcArrIndex,arrOut,arrIndexOut);
2340               break;
2341             }
2342           case 4:
2343             {
2344               MEDCouplingUMesh::SetPartOfIndexedArrays(daIntTyypp->begin(),daIntTyypp->end(),arrIn,arrIndxIn,srcArr,srcArrIndex,arrOut,arrIndexOut);
2345               break;
2346             }
2347           default:
2348             throw INTERP_KERNEL::Exception("MEDCouplingUMesh::SetPartOfIndexedArrays : unrecognized type entered, expected list of int, tuple of int or DataArrayInt !");
2349           }
2350         PyObject *ret=PyTuple_New(2);
2351         PyTuple_SetItem(ret,0,SWIG_NewPointerObj(SWIG_as_voidptr(arrOut),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 ));
2352         PyTuple_SetItem(ret,1,SWIG_NewPointerObj(SWIG_as_voidptr(arrIndexOut),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 ));
2353         return ret;
2354       }
2355
2356       static void SetPartOfIndexedArraysSameIdx(PyObject *li, DataArrayInt *arrIn, const DataArrayInt *arrIndxIn,
2357                                                 const DataArrayInt *srcArr, const DataArrayInt *srcArrIndex) throw(INTERP_KERNEL::Exception)
2358       {
2359         int sw;
2360         int singleVal;
2361         std::vector<int> multiVal;
2362         std::pair<int, std::pair<int,int> > slic;
2363         ParaMEDMEM::DataArrayInt *daIntTyypp=0;
2364         if(!arrIndxIn)
2365           throw INTERP_KERNEL::Exception("MEDCouplingUMesh::SetPartOfIndexedArraysSameIdx : null pointer as arrIndex !");
2366         convertObjToPossibleCpp2(li,arrIndxIn->getNumberOfTuples()-1,sw,singleVal,multiVal,slic,daIntTyypp);
2367         switch(sw)
2368           {
2369           case 1:
2370             {
2371               MEDCouplingUMesh::SetPartOfIndexedArraysSameIdx(&singleVal,&singleVal+1,arrIn,arrIndxIn,srcArr,srcArrIndex);
2372               break;
2373             }
2374           case 2:
2375             {
2376               MEDCouplingUMesh::SetPartOfIndexedArraysSameIdx(&multiVal[0],&multiVal[0]+multiVal.size(),arrIn,arrIndxIn,srcArr,srcArrIndex);
2377               break;
2378             }
2379           case 4:
2380             {
2381               MEDCouplingUMesh::SetPartOfIndexedArraysSameIdx(daIntTyypp->begin(),daIntTyypp->end(),arrIn,arrIndxIn,srcArr,srcArrIndex);
2382               break;
2383             }
2384           default:
2385             throw INTERP_KERNEL::Exception("MEDCouplingUMesh::SetPartOfIndexedArraysSameIdx : unrecognized type entered, expected list of int, tuple of int or DataArrayInt !");
2386           }
2387       }
2388
2389       PyObject *are2DCellsNotCorrectlyOriented(PyObject *vec, bool polyOnly) const throw(INTERP_KERNEL::Exception)
2390       {
2391         double val;
2392         DataArrayDouble *a;
2393         DataArrayDoubleTuple *aa;
2394         std::vector<double> bb;
2395         int sw;
2396         int spaceDim=self->getSpaceDimension();
2397         const char msg[]="Python wrap of MEDCouplingUMesh::are2DCellsNotCorrectlyOriented : ";
2398         const double *v=convertObjToPossibleCpp5_Safe(vec,sw,val,a,aa,bb,msg,1,spaceDim,true);
2399         //
2400         std::vector<int> cells;
2401         self->are2DCellsNotCorrectlyOriented(v,polyOnly,cells);
2402         DataArrayInt *ret=DataArrayInt::New();
2403         ret->alloc((int)cells.size(),1);
2404         std::copy(cells.begin(),cells.end(),ret->getPointer());
2405         return SWIG_NewPointerObj(SWIG_as_voidptr(ret),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 );
2406       }
2407
2408       void orientCorrectly2DCells(PyObject *vec, bool polyOnly) throw(INTERP_KERNEL::Exception)
2409       {
2410         double val;
2411         DataArrayDouble *a;
2412         DataArrayDoubleTuple *aa;
2413         std::vector<double> bb;
2414         int sw;
2415         int spaceDim=self->getSpaceDimension();
2416         const char msg[]="Python wrap of MEDCouplingUMesh::orientCorrectly2DCells : ";
2417         const double *v=convertObjToPossibleCpp5_Safe(vec,sw,val,a,aa,bb,msg,1,spaceDim,true);
2418         self->orientCorrectly2DCells(v,polyOnly);
2419       }
2420       
2421       PyObject *arePolyhedronsNotCorrectlyOriented() const throw(INTERP_KERNEL::Exception)
2422       {
2423         std::vector<int> cells;
2424         self->arePolyhedronsNotCorrectlyOriented(cells);
2425         DataArrayInt *ret=DataArrayInt::New();
2426         ret->alloc((int)cells.size(),1);
2427         std::copy(cells.begin(),cells.end(),ret->getPointer());
2428         return SWIG_NewPointerObj(SWIG_as_voidptr(ret),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 );
2429       }
2430
2431       PyObject *getFastAveragePlaneOfThis() const throw(INTERP_KERNEL::Exception)
2432       {
2433         double vec[3];
2434         double pos[3];
2435         self->getFastAveragePlaneOfThis(vec,pos);
2436         double vals[6];
2437         std::copy(vec,vec+3,vals);
2438         std::copy(pos,pos+3,vals+3);
2439         return convertDblArrToPyListOfTuple(vals,3,2);
2440       }
2441       
2442       static MEDCouplingUMesh *MergeUMeshes(PyObject *li) throw(INTERP_KERNEL::Exception)
2443       {
2444         std::vector<const ParaMEDMEM::MEDCouplingUMesh *> tmp;
2445         convertFromPyObjVectorOfObj<const ParaMEDMEM::MEDCouplingUMesh *>(li,SWIGTYPE_p_ParaMEDMEM__MEDCouplingUMesh,"MEDCouplingUMesh",tmp);
2446         return MEDCouplingUMesh::MergeUMeshes(tmp);
2447       }
2448
2449       PyObject *areCellsIncludedIn(const MEDCouplingUMesh *other, int compType) const throw(INTERP_KERNEL::Exception)
2450       {
2451         DataArrayInt *ret1;
2452         bool ret0=self->areCellsIncludedIn(other,compType,ret1);
2453         PyObject *ret=PyTuple_New(2);
2454         PyObject *ret0Py=ret0?Py_True:Py_False;
2455         Py_XINCREF(ret0Py);
2456         PyTuple_SetItem(ret,0,ret0Py);
2457         PyTuple_SetItem(ret,1,SWIG_NewPointerObj(SWIG_as_voidptr(ret1),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 ));
2458         return ret;
2459       }
2460
2461       PyObject *areCellsIncludedIn2(const MEDCouplingUMesh *other) const throw(INTERP_KERNEL::Exception)
2462       {
2463         DataArrayInt *ret1;
2464         bool ret0=self->areCellsIncludedIn2(other,ret1);
2465         PyObject *ret=PyTuple_New(2);
2466         PyObject *ret0Py=ret0?Py_True:Py_False;
2467         Py_XINCREF(ret0Py);
2468         PyTuple_SetItem(ret,0,ret0Py);
2469         PyTuple_SetItem(ret,1,SWIG_NewPointerObj(SWIG_as_voidptr(ret1),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 ));
2470         return ret;
2471       }
2472
2473       PyObject *explode3DMeshTo1D() const throw(INTERP_KERNEL::Exception)
2474       {
2475         MEDCouplingAutoRefCountObjectPtr<DataArrayInt> d0=DataArrayInt::New();
2476         MEDCouplingAutoRefCountObjectPtr<DataArrayInt> d1=DataArrayInt::New();
2477         MEDCouplingAutoRefCountObjectPtr<DataArrayInt> d2=DataArrayInt::New();
2478         MEDCouplingAutoRefCountObjectPtr<DataArrayInt> d3=DataArrayInt::New();
2479         MEDCouplingUMesh *m=self->explode3DMeshTo1D(d0,d1,d2,d3);
2480         PyObject *ret=PyTuple_New(5);
2481         PyTuple_SetItem(ret,0,SWIG_NewPointerObj(SWIG_as_voidptr(m),SWIGTYPE_p_ParaMEDMEM__MEDCouplingUMesh, SWIG_POINTER_OWN | 0 ));
2482         PyTuple_SetItem(ret,1,SWIG_NewPointerObj(SWIG_as_voidptr(d0.retn()),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 ));
2483         PyTuple_SetItem(ret,2,SWIG_NewPointerObj(SWIG_as_voidptr(d1.retn()),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 ));
2484         PyTuple_SetItem(ret,3,SWIG_NewPointerObj(SWIG_as_voidptr(d2.retn()),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 ));
2485         PyTuple_SetItem(ret,4,SWIG_NewPointerObj(SWIG_as_voidptr(d3.retn()),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 ));
2486         return ret;
2487       }
2488
2489       PyObject *buildDescendingConnectivity() const throw(INTERP_KERNEL::Exception)
2490       {
2491         MEDCouplingAutoRefCountObjectPtr<DataArrayInt> d0=DataArrayInt::New();
2492         MEDCouplingAutoRefCountObjectPtr<DataArrayInt> d1=DataArrayInt::New();
2493         MEDCouplingAutoRefCountObjectPtr<DataArrayInt> d2=DataArrayInt::New();
2494         MEDCouplingAutoRefCountObjectPtr<DataArrayInt> d3=DataArrayInt::New();
2495         MEDCouplingUMesh *m=self->buildDescendingConnectivity(d0,d1,d2,d3);
2496         PyObject *ret=PyTuple_New(5);
2497         PyTuple_SetItem(ret,0,SWIG_NewPointerObj(SWIG_as_voidptr(m),SWIGTYPE_p_ParaMEDMEM__MEDCouplingUMesh, SWIG_POINTER_OWN | 0 ));
2498         PyTuple_SetItem(ret,1,SWIG_NewPointerObj(SWIG_as_voidptr(d0.retn()),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 ));
2499         PyTuple_SetItem(ret,2,SWIG_NewPointerObj(SWIG_as_voidptr(d1.retn()),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 ));
2500         PyTuple_SetItem(ret,3,SWIG_NewPointerObj(SWIG_as_voidptr(d2.retn()),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 ));
2501         PyTuple_SetItem(ret,4,SWIG_NewPointerObj(SWIG_as_voidptr(d3.retn()),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 ));
2502         return ret;
2503       }
2504
2505       PyObject *buildDescendingConnectivity2() const throw(INTERP_KERNEL::Exception)
2506       {
2507         MEDCouplingAutoRefCountObjectPtr<DataArrayInt> d0=DataArrayInt::New();
2508         MEDCouplingAutoRefCountObjectPtr<DataArrayInt> d1=DataArrayInt::New();
2509         MEDCouplingAutoRefCountObjectPtr<DataArrayInt> d2=DataArrayInt::New();
2510         MEDCouplingAutoRefCountObjectPtr<DataArrayInt> d3=DataArrayInt::New();
2511         MEDCouplingUMesh *m=self->buildDescendingConnectivity2(d0,d1,d2,d3);
2512         PyObject *ret=PyTuple_New(5);
2513         PyTuple_SetItem(ret,0,SWIG_NewPointerObj(SWIG_as_voidptr(m),SWIGTYPE_p_ParaMEDMEM__MEDCouplingUMesh, SWIG_POINTER_OWN | 0 ));
2514         PyTuple_SetItem(ret,1,SWIG_NewPointerObj(SWIG_as_voidptr(d0.retn()),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 ));
2515         PyTuple_SetItem(ret,2,SWIG_NewPointerObj(SWIG_as_voidptr(d1.retn()),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 ));
2516         PyTuple_SetItem(ret,3,SWIG_NewPointerObj(SWIG_as_voidptr(d2.retn()),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 ));
2517         PyTuple_SetItem(ret,4,SWIG_NewPointerObj(SWIG_as_voidptr(d3.retn()),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 ));
2518         return ret;
2519       }
2520       
2521       PyObject *computeNeighborsOfCells() const throw(INTERP_KERNEL::Exception)
2522       {
2523         DataArrayInt *neighbors=0,*neighborsIdx=0;
2524         self->computeNeighborsOfCells(neighbors,neighborsIdx);
2525         PyObject *ret=PyTuple_New(2);
2526         PyTuple_SetItem(ret,0,SWIG_NewPointerObj(SWIG_as_voidptr(neighbors),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 ));
2527         PyTuple_SetItem(ret,1,SWIG_NewPointerObj(SWIG_as_voidptr(neighborsIdx),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 ));
2528         return ret;
2529       }
2530
2531       static PyObject *ComputeNeighborsOfCellsAdv(const DataArrayInt *desc, const DataArrayInt *descI, const DataArrayInt *revDesc, const DataArrayInt *revDescI) throw(INTERP_KERNEL::Exception)
2532       {
2533         DataArrayInt *neighbors=0,*neighborsIdx=0;
2534         MEDCouplingUMesh::ComputeNeighborsOfCellsAdv(desc,descI,revDesc,revDescI,neighbors,neighborsIdx);
2535         PyObject *ret=PyTuple_New(2);
2536         PyTuple_SetItem(ret,0,SWIG_NewPointerObj(SWIG_as_voidptr(neighbors),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 ));
2537         PyTuple_SetItem(ret,1,SWIG_NewPointerObj(SWIG_as_voidptr(neighborsIdx),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 ));
2538         return ret;
2539       }
2540
2541       PyObject *emulateMEDMEMBDC(const MEDCouplingUMesh *nM1LevMesh)
2542       {
2543         MEDCouplingAutoRefCountObjectPtr<DataArrayInt> d0=DataArrayInt::New();
2544         MEDCouplingAutoRefCountObjectPtr<DataArrayInt> d1=DataArrayInt::New();
2545         DataArrayInt *d2,*d3,*d4,*dd5;
2546         MEDCouplingUMesh *mOut=self->emulateMEDMEMBDC(nM1LevMesh,d0,d1,d2,d3,d4,dd5);
2547         PyObject *ret=PyTuple_New(7);
2548         PyTuple_SetItem(ret,0,SWIG_NewPointerObj(SWIG_as_voidptr(mOut),SWIGTYPE_p_ParaMEDMEM__MEDCouplingUMesh, SWIG_POINTER_OWN | 0 ));
2549         PyTuple_SetItem(ret,1,SWIG_NewPointerObj(SWIG_as_voidptr(d0.retn()),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 ));
2550         PyTuple_SetItem(ret,2,SWIG_NewPointerObj(SWIG_as_voidptr(d1.retn()),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 ));
2551         PyTuple_SetItem(ret,3,SWIG_NewPointerObj(SWIG_as_voidptr(d2),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 ));
2552         PyTuple_SetItem(ret,4,SWIG_NewPointerObj(SWIG_as_voidptr(d3),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 ));
2553         PyTuple_SetItem(ret,5,SWIG_NewPointerObj(SWIG_as_voidptr(d4),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 ));
2554         PyTuple_SetItem(ret,6,SWIG_NewPointerObj(SWIG_as_voidptr(dd5),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 ));
2555         return ret;
2556       }
2557
2558       DataArrayDouble *getPartBarycenterAndOwner(DataArrayInt *da) const throw(INTERP_KERNEL::Exception)
2559       {
2560         if(!da)
2561           throw INTERP_KERNEL::Exception("Not null DataArrayInt instance expected !");
2562         da->checkAllocated();
2563         return self->getPartBarycenterAndOwner(da->getConstPointer(),da->getConstPointer()+da->getNbOfElems());
2564       }
2565
2566       DataArrayDouble *getPartMeasureField(bool isAbs, DataArrayInt *da) const throw(INTERP_KERNEL::Exception)
2567       {
2568         if(!da)
2569           throw INTERP_KERNEL::Exception("Not null DataArrayInt instance expected !");
2570         da->checkAllocated();
2571         return self->getPartMeasureField(isAbs,da->getConstPointer(),da->getConstPointer()+da->getNbOfElems());
2572       }
2573
2574       MEDCouplingFieldDouble *buildPartOrthogonalField(DataArrayInt *da) const throw(INTERP_KERNEL::Exception)
2575       {
2576         if(!da)
2577           throw INTERP_KERNEL::Exception("Not null DataArrayInt instance expected !");
2578         da->checkAllocated();
2579         return self->buildPartOrthogonalField(da->getConstPointer(),da->getConstPointer()+da->getNbOfElems());
2580       }
2581
2582       PyObject *getTypesOfPart(DataArrayInt *da) const throw(INTERP_KERNEL::Exception)
2583       {
2584         if(!da)
2585           throw INTERP_KERNEL::Exception("Not null DataArrayInt instance expected !");
2586         da->checkAllocated();
2587         std::set<INTERP_KERNEL::NormalizedCellType> result=self->getTypesOfPart(da->getConstPointer(),da->getConstPointer()+da->getNbOfElems());
2588         std::set<INTERP_KERNEL::NormalizedCellType>::const_iterator iL=result.begin();
2589         PyObject *res = PyList_New(result.size());
2590         for (int i=0;iL!=result.end(); i++, iL++)
2591           PyList_SetItem(res,i,PyInt_FromLong(*iL));
2592         return res;
2593       }
2594
2595       DataArrayInt *keepCellIdsByType(INTERP_KERNEL::NormalizedCellType type, DataArrayInt *da) const throw(INTERP_KERNEL::Exception)
2596       {
2597         if(!da)
2598           throw INTERP_KERNEL::Exception("Not null DataArrayInt instance expected !");
2599         da->checkAllocated();
2600         DataArrayInt *ret=self->keepCellIdsByType(type,da->getConstPointer(),da->getConstPointer()+da->getNbOfElems());
2601         ret->setName(da->getName().c_str());
2602         return ret;
2603       }
2604
2605       static PyObject *Intersect2DMeshes(const MEDCouplingUMesh *m1, const MEDCouplingUMesh *m2, double eps) throw(INTERP_KERNEL::Exception)
2606       {
2607         DataArrayInt *cellNb1=0,*cellNb2=0;
2608         MEDCouplingUMesh *mret=MEDCouplingUMesh::Intersect2DMeshes(m1,m2,eps,cellNb1,cellNb2);
2609         PyObject *ret=PyTuple_New(3);
2610         PyTuple_SetItem(ret,0,SWIG_NewPointerObj(SWIG_as_voidptr(mret),SWIGTYPE_p_ParaMEDMEM__MEDCouplingUMesh, SWIG_POINTER_OWN | 0 ));
2611         PyTuple_SetItem(ret,1,SWIG_NewPointerObj(SWIG_as_voidptr(cellNb1),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 ));
2612         PyTuple_SetItem(ret,2,SWIG_NewPointerObj(SWIG_as_voidptr(cellNb2),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 ));
2613         return ret;
2614       }
2615
2616       PyObject *buildSlice3D(PyObject *origin, PyObject *vec, double eps) const throw(INTERP_KERNEL::Exception)
2617       {
2618         int spaceDim=self->getSpaceDimension();
2619         if(spaceDim!=3)
2620           throw INTERP_KERNEL::Exception("Python wrap of MEDCouplingUMesh::buildSlice3D : works only for spaceDim 3 !");
2621         double val,val2;
2622         DataArrayDouble *a,*a2;
2623         DataArrayDoubleTuple *aa,*aa2;
2624         std::vector<double> bb,bb2;
2625         int sw;
2626         const char msg[]="Python wrap of MEDCouplingUMesh::buildSlice3D : 1st paramater for origin.";
2627         const char msg2[]="Python wrap of MEDCouplingUMesh::buildSlice3D : 2nd paramater for vector.";
2628         const double *orig=convertObjToPossibleCpp5_Safe(origin,sw,val,a,aa,bb,msg,1,spaceDim,true);
2629         const double *vect=convertObjToPossibleCpp5_Safe(vec,sw,val2,a2,aa2,bb2,msg2,1,spaceDim,true);
2630         //
2631         DataArrayInt *cellIds=0;
2632         MEDCouplingUMesh *ret0=self->buildSlice3D(orig,vect,eps,cellIds);
2633         PyObject *ret=PyTuple_New(2);
2634         PyTuple_SetItem(ret,0,SWIG_NewPointerObj(SWIG_as_voidptr(ret0),SWIGTYPE_p_ParaMEDMEM__MEDCouplingUMesh, SWIG_POINTER_OWN | 0 ));
2635         PyTuple_SetItem(ret,1,SWIG_NewPointerObj(SWIG_as_voidptr(cellIds),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 ));
2636         return ret;
2637       }
2638
2639       PyObject *buildSlice3DSurf(PyObject *origin, PyObject *vec, double eps) const throw(INTERP_KERNEL::Exception)
2640       {
2641         int spaceDim=self->getSpaceDimension();
2642         if(spaceDim!=3)
2643           throw INTERP_KERNEL::Exception("Python wrap of MEDCouplingUMesh::buildSlice3DSurf : works only for spaceDim 3 !");
2644         double val,val2;
2645         DataArrayDouble *a,*a2;
2646         DataArrayDoubleTuple *aa,*aa2;
2647         std::vector<double> bb,bb2;
2648         int sw;
2649         const char msg[]="Python wrap of MEDCouplingUMesh::buildSlice3DSurf : 1st paramater for origin.";
2650         const char msg2[]="Python wrap of MEDCouplingUMesh::buildSlice3DSurf : 2nd paramater for vector.";
2651         const double *orig=convertObjToPossibleCpp5_Safe(origin,sw,val,a,aa,bb,msg,1,spaceDim,true);
2652         const double *vect=convertObjToPossibleCpp5_Safe(vec,sw,val2,a2,aa2,bb2,msg2,1,spaceDim,true);
2653         //
2654         DataArrayInt *cellIds=0;
2655         MEDCouplingUMesh *ret0=self->buildSlice3DSurf(orig,vect,eps,cellIds);
2656         PyObject *ret=PyTuple_New(2);
2657         PyTuple_SetItem(ret,0,SWIG_NewPointerObj(SWIG_as_voidptr(ret0),SWIGTYPE_p_ParaMEDMEM__MEDCouplingUMesh, SWIG_POINTER_OWN | 0 ));
2658         PyTuple_SetItem(ret,1,SWIG_NewPointerObj(SWIG_as_voidptr(cellIds),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 ));
2659         return ret;
2660       }
2661
2662       DataArrayInt *getCellIdsCrossingPlane(PyObject *origin, PyObject *vec, double eps) const throw(INTERP_KERNEL::Exception)
2663       {
2664         int spaceDim=self->getSpaceDimension();
2665         if(spaceDim!=3)
2666           throw INTERP_KERNEL::Exception("Python wrap of MEDCouplingUMesh::getCellIdsCrossingPlane : works only for spaceDim 3 !");
2667         double val,val2;
2668         DataArrayDouble *a,*a2;
2669         DataArrayDoubleTuple *aa,*aa2;
2670         std::vector<double> bb,bb2;
2671         int sw;
2672         const char msg[]="Python wrap of MEDCouplingUMesh::getCellIdsCrossingPlane : 1st paramater for origin.";
2673         const char msg2[]="Python wrap of MEDCouplingUMesh::getCellIdsCrossingPlane : 2nd paramater for vector.";
2674         const double *orig=convertObjToPossibleCpp5_Safe(origin,sw,val,a,aa,bb,msg,1,spaceDim,true);
2675         const double *vect=convertObjToPossibleCpp5_Safe(vec,sw,val2,a2,aa2,bb2,msg2,1,spaceDim,true);
2676         return self->getCellIdsCrossingPlane(orig,vect,eps);
2677       }
2678
2679       void convertToPolyTypes(PyObject *li) throw(INTERP_KERNEL::Exception)
2680       {
2681         int sw;
2682         int pos1;
2683         std::vector<int> pos2;
2684         DataArrayInt *pos3=0;
2685         DataArrayIntTuple *pos4=0;
2686         convertObjToPossibleCpp1(li,sw,pos1,pos2,pos3,pos4);
2687         switch(sw)
2688           {
2689           case 1:
2690             {
2691               self->convertToPolyTypes(&pos1,&pos1+1);
2692               return;
2693             }
2694           case 2:
2695             {
2696               if(pos2.empty())
2697                 return;
2698               self->convertToPolyTypes(&pos2[0],&pos2[0]+pos2.size());
2699               return ;
2700             }
2701           case 3:
2702             {
2703               self->convertToPolyTypes(pos3->begin(),pos3->end());
2704               return ;
2705             }
2706           default:
2707             throw INTERP_KERNEL::Exception("MEDCouplingUMesh::convertToPolyTypes : unexpected input array type recognized !");
2708           }
2709       }
2710     }
2711     void convertAllToPoly();
2712     void convertExtrudedPolyhedra() throw(INTERP_KERNEL::Exception);
2713     bool unPolyze() throw(INTERP_KERNEL::Exception);
2714     void simplifyPolyhedra(double eps) throw(INTERP_KERNEL::Exception);
2715     MEDCouplingUMesh *buildSpreadZonesWithPoly() const throw(INTERP_KERNEL::Exception);
2716     MEDCouplingUMesh *buildExtrudedMesh(const MEDCouplingUMesh *mesh1D, int policy) throw(INTERP_KERNEL::Exception);
2717   };
2718
2719   //== MEDCouplingUMesh End
2720
2721   //== MEDCouplingExtrudedMesh
2722
2723   class MEDCouplingExtrudedMesh : public ParaMEDMEM::MEDCouplingMesh
2724   {
2725   public:
2726     static MEDCouplingExtrudedMesh *New(const MEDCouplingUMesh *mesh3D, const MEDCouplingUMesh *mesh2D, int cell2DId) throw(INTERP_KERNEL::Exception);
2727     MEDCouplingUMesh *build3DUnstructuredMesh() const throw(INTERP_KERNEL::Exception);
2728     %extend {
2729       MEDCouplingExtrudedMesh(const MEDCouplingUMesh *mesh3D, const MEDCouplingUMesh *mesh2D, int cell2DId) throw(INTERP_KERNEL::Exception)
2730       {
2731         return MEDCouplingExtrudedMesh::New(mesh3D,mesh2D,cell2DId);
2732       }
2733       
2734       std::string __str__() const throw(INTERP_KERNEL::Exception)
2735       {
2736         return self->simpleRepr();
2737       }
2738
2739       std::string __repr__() const throw(INTERP_KERNEL::Exception)
2740       {
2741         std::ostringstream oss;
2742         self->reprQuickOverview(oss);
2743         return oss.str();
2744       }
2745       
2746       PyObject *getMesh2D() const throw(INTERP_KERNEL::Exception)
2747       {
2748         MEDCouplingUMesh *ret=self->getMesh2D();
2749         if(ret)
2750           ret->incrRef();
2751         return convertMesh(ret, SWIG_POINTER_OWN | 0 );
2752       }
2753       PyObject *getMesh1D() const throw(INTERP_KERNEL::Exception)
2754       {
2755         MEDCouplingUMesh *ret=self->getMesh1D();
2756         if(ret)
2757           ret->incrRef();
2758         return convertMesh(ret, SWIG_POINTER_OWN | 0 );
2759       }
2760       PyObject *getMesh3DIds() const throw(INTERP_KERNEL::Exception)
2761       {
2762         DataArrayInt *ret=self->getMesh3DIds();
2763         if(ret)
2764           ret->incrRef();
2765         return SWIG_NewPointerObj(SWIG_as_voidptr(ret),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 );
2766       } 
2767     }
2768   };
2769
2770   //== MEDCouplingExtrudedMesh End
2771
2772   class MEDCoupling1GTUMesh : public ParaMEDMEM::MEDCouplingPointSet
2773   {
2774   public:
2775     static MEDCoupling1GTUMesh *New(const char *name, INTERP_KERNEL::NormalizedCellType type) throw(INTERP_KERNEL::Exception);
2776     static MEDCoupling1GTUMesh *New(const MEDCouplingUMesh *m) throw(INTERP_KERNEL::Exception);
2777     INTERP_KERNEL::NormalizedCellType getCellModelEnum() const throw(INTERP_KERNEL::Exception);
2778     int getNodalConnectivityLength() const throw(INTERP_KERNEL::Exception);
2779     virtual void allocateCells(int nbOfCells=0) throw(INTERP_KERNEL::Exception);
2780     virtual void checkCoherencyOfConnectivity() const throw(INTERP_KERNEL::Exception);
2781     %extend
2782     {
2783       virtual void insertNextCell(PyObject *li) throw(INTERP_KERNEL::Exception)
2784       {
2785         int szArr,sw,iTypppArr;
2786         std::vector<int> stdvecTyyppArr;
2787         const int *tmp=convertObjToPossibleCpp1_Safe(li,sw,szArr,iTypppArr,stdvecTyyppArr);
2788         self->insertNextCell(tmp,tmp+szArr);
2789       }
2790
2791       virtual DataArrayInt *getNodalConnectivity() const throw(INTERP_KERNEL::Exception)
2792       {
2793         DataArrayInt *ret=self->getNodalConnectivity();
2794         if(ret) ret->incrRef();
2795         return ret;
2796       }
2797       
2798       static MEDCouplingUMesh *AggregateOnSameCoordsToUMesh(PyObject *li) throw(INTERP_KERNEL::Exception)
2799       {
2800         std::vector< const MEDCoupling1GTUMesh *> parts;
2801         convertFromPyObjVectorOfObj<const ParaMEDMEM::MEDCoupling1GTUMesh *>(li,SWIGTYPE_p_ParaMEDMEM__MEDCoupling1GTUMesh,"MEDCoupling1GTUMesh",parts);
2802         return MEDCoupling1GTUMesh::AggregateOnSameCoordsToUMesh(parts);
2803       }
2804     }
2805   };
2806
2807   //== MEDCoupling1SGTUMesh
2808
2809   class MEDCoupling1SGTUMesh : public ParaMEDMEM::MEDCoupling1GTUMesh
2810   {
2811   public:
2812     static MEDCoupling1SGTUMesh *New(const char *name, INTERP_KERNEL::NormalizedCellType type) throw(INTERP_KERNEL::Exception);
2813     static MEDCoupling1SGTUMesh *New(const MEDCouplingUMesh *m) throw(INTERP_KERNEL::Exception);
2814     void setNodalConnectivity(DataArrayInt *nodalConn) throw(INTERP_KERNEL::Exception);
2815     int getNumberOfNodesPerCell() const throw(INTERP_KERNEL::Exception);
2816     static MEDCoupling1SGTUMesh *Merge1SGTUMeshes(const MEDCoupling1SGTUMesh *mesh1, const MEDCoupling1SGTUMesh *mesh2) throw(INTERP_KERNEL::Exception);
2817     MEDCoupling1SGTUMesh *buildSetInstanceFromThis(int spaceDim) const throw(INTERP_KERNEL::Exception);
2818     %extend
2819     {
2820       MEDCoupling1SGTUMesh(const char *name, INTERP_KERNEL::NormalizedCellType type) throw(INTERP_KERNEL::Exception)
2821       {
2822         return MEDCoupling1SGTUMesh::New(name,type);
2823       }
2824
2825       MEDCoupling1SGTUMesh(const MEDCouplingUMesh *m) throw(INTERP_KERNEL::Exception)
2826       {
2827         return MEDCoupling1SGTUMesh::New(m);
2828       }
2829
2830       std::string __str__() const throw(INTERP_KERNEL::Exception)
2831       {
2832         return self->simpleRepr();
2833       }
2834       
2835       std::string __repr__() const throw(INTERP_KERNEL::Exception)
2836       {
2837         std::ostringstream oss;
2838         self->reprQuickOverview(oss);
2839         return oss.str();
2840       }
2841
2842       static MEDCoupling1SGTUMesh *Merge1SGTUMeshes(PyObject *li) throw(INTERP_KERNEL::Exception)
2843       {
2844         std::vector<const ParaMEDMEM::MEDCoupling1SGTUMesh *> tmp;
2845         convertFromPyObjVectorOfObj<const ParaMEDMEM::MEDCoupling1SGTUMesh *>(li,SWIGTYPE_p_ParaMEDMEM__MEDCoupling1SGTUMesh,"MEDCoupling1SGTUMesh",tmp);
2846         return MEDCoupling1SGTUMesh::Merge1SGTUMeshes(tmp);
2847       }
2848       
2849       static MEDCoupling1SGTUMesh *Merge1SGTUMeshesOnSameCoords(PyObject *li) throw(INTERP_KERNEL::Exception)
2850       {
2851         std::vector<const ParaMEDMEM::MEDCoupling1SGTUMesh *> tmp;
2852         convertFromPyObjVectorOfObj<const ParaMEDMEM::MEDCoupling1SGTUMesh *>(li,SWIGTYPE_p_ParaMEDMEM__MEDCoupling1SGTUMesh,"MEDCoupling1SGTUMesh",tmp);
2853         return MEDCoupling1SGTUMesh::Merge1SGTUMeshesOnSameCoords(tmp);
2854       }
2855     }
2856   };
2857   
2858   //== MEDCoupling1SGTUMesh End
2859
2860   //== MEDCoupling1DGTUMesh
2861
2862   class MEDCoupling1DGTUMesh : public ParaMEDMEM::MEDCoupling1GTUMesh
2863   {
2864   public:
2865     static MEDCoupling1DGTUMesh *New(const char *name, INTERP_KERNEL::NormalizedCellType type) throw(INTERP_KERNEL::Exception);
2866     static MEDCoupling1DGTUMesh *New(const MEDCouplingUMesh *m) throw(INTERP_KERNEL::Exception);
2867     void setNodalConnectivity(DataArrayInt *nodalConn, DataArrayInt *nodalConnIndex) throw(INTERP_KERNEL::Exception);
2868     MEDCoupling1DGTUMesh *buildSetInstanceFromThis(int spaceDim) const throw(INTERP_KERNEL::Exception);
2869     bool isPacked() const throw(INTERP_KERNEL::Exception);
2870     %extend
2871     {
2872       MEDCoupling1DGTUMesh(const char *name, INTERP_KERNEL::NormalizedCellType type) throw(INTERP_KERNEL::Exception)
2873       {
2874         return MEDCoupling1DGTUMesh::New(name,type);
2875       }
2876
2877       MEDCoupling1DGTUMesh(const MEDCouplingUMesh *m) throw(INTERP_KERNEL::Exception)
2878       {
2879         return MEDCoupling1DGTUMesh::New(m);
2880       }
2881
2882       std::string __str__() const throw(INTERP_KERNEL::Exception)
2883       {
2884         return self->simpleRepr();
2885       }
2886       
2887       std::string __repr__() const throw(INTERP_KERNEL::Exception)
2888       {
2889         std::ostringstream oss;
2890         self->reprQuickOverview(oss);
2891         return oss.str();
2892       }
2893
2894       DataArrayInt *getNodalConnectivityIndex() const throw(INTERP_KERNEL::Exception)
2895       {
2896         DataArrayInt *ret=self->getNodalConnectivityIndex();
2897         if(ret) ret->incrRef();
2898         return ret;
2899       }
2900
2901       PyObject *retrievePackedNodalConnectivity() const throw(INTERP_KERNEL::Exception)
2902       {
2903         DataArrayInt *ret1=0,*ret2=0;
2904         bool ret0=self->retrievePackedNodalConnectivity(ret1,ret2);
2905         PyObject *ret0Py=ret0?Py_True:Py_False;
2906         Py_XINCREF(ret0Py);
2907         PyObject *ret=PyTuple_New(3);
2908         PyTuple_SetItem(ret,0,ret0Py);
2909         PyTuple_SetItem(ret,1,SWIG_NewPointerObj(SWIG_as_voidptr(ret1),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 ));
2910         PyTuple_SetItem(ret,2,SWIG_NewPointerObj(SWIG_as_voidptr(ret2),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 ));
2911         return ret;
2912       }
2913       
2914       PyObject *copyWithNodalConnectivityPacked() const throw(INTERP_KERNEL::Exception)
2915       {
2916         bool ret1;
2917         MEDCoupling1DGTUMesh *ret0=self->copyWithNodalConnectivityPacked(ret1);
2918         PyObject *ret=PyTuple_New(2);
2919         PyObject *ret1Py=ret1?Py_True:Py_False; Py_XINCREF(ret1Py);
2920         PyTuple_SetItem(ret,0,SWIG_NewPointerObj(SWIG_as_voidptr(ret0),SWIGTYPE_p_ParaMEDMEM__MEDCoupling1DGTUMesh, SWIG_POINTER_OWN | 0 ));
2921         PyTuple_SetItem(ret,1,ret1Py);
2922         return ret;
2923       }
2924
2925       static MEDCoupling1DGTUMesh *Merge1DGTUMeshes(PyObject *li) throw(INTERP_KERNEL::Exception)
2926       {
2927         std::vector<const ParaMEDMEM::MEDCoupling1DGTUMesh *> tmp;
2928         convertFromPyObjVectorOfObj<const ParaMEDMEM::MEDCoupling1DGTUMesh *>(li,SWIGTYPE_p_ParaMEDMEM__MEDCoupling1DGTUMesh,"MEDCoupling1DGTUMesh",tmp);
2929         return MEDCoupling1DGTUMesh::Merge1DGTUMeshes(tmp);
2930       }
2931       
2932       static MEDCoupling1DGTUMesh *Merge1DGTUMeshesOnSameCoords(PyObject *li) throw(INTERP_KERNEL::Exception)
2933       {
2934         std::vector<const ParaMEDMEM::MEDCoupling1DGTUMesh *> tmp;
2935         convertFromPyObjVectorOfObj<const ParaMEDMEM::MEDCoupling1DGTUMesh *>(li,SWIGTYPE_p_ParaMEDMEM__MEDCoupling1DGTUMesh,"MEDCoupling1DGTUMesh",tmp);
2936         return MEDCoupling1DGTUMesh::Merge1DGTUMeshesOnSameCoords(tmp);
2937       }
2938       
2939       static DataArrayInt *AggregateNodalConnAndShiftNodeIds(PyObject *li, const std::vector<int>& offsetInNodeIdsPerElt) throw(INTERP_KERNEL::Exception)
2940       {
2941         std::vector<const ParaMEDMEM::DataArrayInt *> tmp;
2942         convertFromPyObjVectorOfObj<const ParaMEDMEM::DataArrayInt *>(li,SWIGTYPE_p_ParaMEDMEM__DataArrayInt,"DataArrayInt",tmp);
2943         return MEDCoupling1DGTUMesh::AggregateNodalConnAndShiftNodeIds(tmp,offsetInNodeIdsPerElt);
2944       }
2945     }
2946   };
2947
2948   //== MEDCoupling1DGTUMeshEnd
2949
2950   class MEDCouplingStructuredMesh : public ParaMEDMEM::MEDCouplingMesh
2951   {
2952   public:
2953     int getCellIdFromPos(int i, int j, int k) const throw(INTERP_KERNEL::Exception);
2954     int getNodeIdFromPos(int i, int j, int k) const throw(INTERP_KERNEL::Exception);
2955     virtual std::vector<int> getNodeGridStructure() const throw(INTERP_KERNEL::Exception);
2956     std::vector<int> getCellGridStructure() const throw(INTERP_KERNEL::Exception);
2957     MEDCoupling1SGTUMesh *build1SGTUnstructured() const throw(INTERP_KERNEL::Exception);
2958     static INTERP_KERNEL::NormalizedCellType GetGeoTypeGivenMeshDimension(int meshDim) throw(INTERP_KERNEL::Exception);
2959     %extend
2960     {
2961       virtual MEDCouplingStructuredMesh *buildStructuredSubPart(PyObject *cellPart) const throw(INTERP_KERNEL::Exception)
2962       {
2963         int tmpp1=-1,tmpp2=-1;
2964         std::vector<int> tmp=fillArrayWithPyListInt2(cellPart,tmpp1,tmpp2);
2965         std::vector< std::pair<int,int> > inp;
2966         if(tmpp2==2)
2967           {
2968             inp.resize(tmpp1);
2969             for(int i=0;i<tmpp1;i++)
2970               { inp[i].first=tmp[2*i]; inp[i].second=tmp[2*i+1]; }
2971           }
2972         else if(tmpp2==1)
2973           {
2974             if(tmpp1%2!=0)
2975               throw INTERP_KERNEL::Exception("Wrap of MEDCouplingStructuredMesh.buildStructuredSubPart : invalid input size ! Must be even size !");
2976             inp.resize(tmpp1/2);
2977             for(int i=0;i<tmpp1/2;i++)
2978               { inp[i].first=tmp[2*i]; inp[i].second=tmp[2*i+1]; }
2979           }
2980         else
2981           throw INTERP_KERNEL::Exception("Wrap of MEDCouplingStructuredMesh.buildStructuredSubPart : invalid input size !");
2982         return self->buildStructuredSubPart(inp);
2983       }
2984
2985       static DataArrayInt *BuildExplicitIdsFrom(PyObject *st, PyObject *part) throw(INTERP_KERNEL::Exception)
2986       {
2987         int tmpp1=-1,tmpp2=-1;
2988         std::vector<int> tmp=fillArrayWithPyListInt2(part,tmpp1,tmpp2);
2989         std::vector< std::pair<int,int> > inp;
2990         if(tmpp2==2)
2991           {
2992             inp.resize(tmpp1);
2993             for(int i=0;i<tmpp1;i++)
2994               { inp[i].first=tmp[2*i]; inp[i].second=tmp[2*i+1]; }
2995           }
2996         else if(tmpp2==1)
2997           {
2998             if(tmpp1%2!=0)
2999               throw INTERP_KERNEL::Exception("Wrap of MEDCouplingStructuredMesh.BuildExplicitIdsFrom : invalid input size ! Must be even size !");
3000             inp.resize(tmpp1/2);
3001             for(int i=0;i<tmpp1/2;i++)
3002               { inp[i].first=tmp[2*i]; inp[i].second=tmp[2*i+1]; }
3003           }
3004         else
3005           throw INTERP_KERNEL::Exception("Wrap of MEDCouplingStructuredMesh.BuildExplicitIdsFrom : invalid input size !");
3006         //
3007         int szArr,sw,iTypppArr;
3008         std::vector<int> stdvecTyyppArr;
3009         const int *tmp4=convertObjToPossibleCpp1_Safe(st,sw,szArr,iTypppArr,stdvecTyyppArr);
3010         std::vector<int> tmp5(tmp4,tmp4+szArr);
3011         //
3012         return MEDCouplingStructuredMesh::BuildExplicitIdsFrom(tmp5,inp);
3013       }
3014
3015       static DataArrayInt *Build1GTNodalConnectivity(PyObject *li) throw(INTERP_KERNEL::Exception)
3016       {
3017         int szArr,sw,iTypppArr;
3018         std::vector<int> stdvecTyyppArr;
3019         const int *tmp=convertObjToPossibleCpp1_Safe(li,sw,szArr,iTypppArr,stdvecTyyppArr);
3020         return MEDCouplingStructuredMesh::Build1GTNodalConnectivity(tmp,tmp+szArr);
3021       }
3022
3023       static PyObject *IsPartStructured(PyObject *li, PyObject *st) throw(INTERP_KERNEL::Exception)
3024       {
3025         int szArr,sw,iTypppArr;
3026         std::vector<int> stdvecTyyppArr;
3027         const int *tmp=convertObjToPossibleCpp1_Safe(li,sw,szArr,iTypppArr,stdvecTyyppArr);
3028         int szArr2,sw2,iTypppArr2;
3029         std::vector<int> stdvecTyyppArr2;
3030         const int *tmp2=convertObjToPossibleCpp1_Safe(st,sw2,szArr2,iTypppArr2,stdvecTyyppArr2);
3031         std::vector<int> tmp3(tmp2,tmp2+szArr2);
3032         std::vector< std::pair<int,int> > partCompactFormat;
3033         bool ret0=MEDCouplingStructuredMesh::IsPartStructured(tmp,tmp+szArr,tmp3,partCompactFormat);
3034         PyObject *ret=PyTuple_New(2);
3035         PyObject *ret0Py=ret0?Py_True:Py_False; Py_XINCREF(ret0Py);
3036         PyTuple_SetItem(ret,0,ret0Py);
3037         PyObject *ret1Py=PyList_New(partCompactFormat.size());
3038         for(std::size_t i=0;i<partCompactFormat.size();i++)
3039           {
3040             PyObject *tmp4=PyTuple_New(2);
3041             PyTuple_SetItem(tmp4,0,PyInt_FromLong(partCompactFormat[i].first));
3042             PyTuple_SetItem(tmp4,1,PyInt_FromLong(partCompactFormat[i].second));
3043             PyList_SetItem(ret1Py,i,tmp4);
3044           }
3045         PyTuple_SetItem(ret,1,ret1Py);
3046         return ret;
3047       }
3048     }
3049   };
3050
3051   //== MEDCouplingCMesh
3052   
3053   class MEDCouplingCMesh : public ParaMEDMEM::MEDCouplingStructuredMesh
3054   {
3055   public:
3056     static MEDCouplingCMesh *New();
3057     static MEDCouplingCMesh *New(const char *meshName);
3058     MEDCouplingCMesh *clone(bool recDeepCpy) const;
3059     void setCoords(const DataArrayDouble *coordsX,
3060                    const DataArrayDouble *coordsY=0,
3061                    const DataArrayDouble *coordsZ=0) throw(INTERP_KERNEL::Exception);
3062     void setCoordsAt(int i, const DataArrayDouble *arr) throw(INTERP_KERNEL::Exception);
3063     %extend {
3064       MEDCouplingCMesh()
3065       {
3066         return MEDCouplingCMesh::New();
3067       }
3068       MEDCouplingCMesh(const char *meshName)
3069       {
3070         return MEDCouplingCMesh::New(meshName);
3071       }
3072       std::string __str__() const throw(INTERP_KERNEL::Exception)
3073       {
3074         return self->simpleRepr();
3075       }
3076       std::string __repr__() const throw(INTERP_KERNEL::Exception)
3077       {
3078         std::ostringstream oss;
3079         self->reprQuickOverview(oss);
3080         return oss.str();
3081       }
3082       DataArrayDouble *getCoordsAt(int i) throw(INTERP_KERNEL::Exception)
3083       {
3084         DataArrayDouble *ret=self->getCoordsAt(i);
3085         if(ret)
3086           ret->incrRef();
3087         return ret;
3088       }
3089     }
3090   };
3091
3092   //== MEDCouplingCMesh End
3093
3094   //== MEDCouplingCurveLinearMesh
3095
3096   class MEDCouplingCurveLinearMesh : public ParaMEDMEM::MEDCouplingStructuredMesh
3097   {
3098   public:
3099     static MEDCouplingCurveLinearMesh *New();
3100     static MEDCouplingCurveLinearMesh *New(const char *meshName);
3101     MEDCouplingCurveLinearMesh *clone(bool recDeepCpy) const;
3102     void setCoords(const DataArrayDouble *coords) throw(INTERP_KERNEL::Exception);
3103     %extend {
3104       MEDCouplingCurveLinearMesh()
3105       {
3106         return MEDCouplingCurveLinearMesh::New();
3107       }
3108       MEDCouplingCurveLinearMesh(const char *meshName)
3109       {
3110         return MEDCouplingCurveLinearMesh::New(meshName);
3111       }
3112       std::string __str__() const throw(INTERP_KERNEL::Exception) 
3113       {
3114         return self->simpleRepr();
3115       }
3116       std::string __repr__() const throw(INTERP_KERNEL::Exception)
3117       {
3118         std::ostringstream oss;
3119         self->reprQuickOverview(oss);
3120         return oss.str();
3121       }
3122       DataArrayDouble *getCoords() throw(INTERP_KERNEL::Exception)
3123       {
3124         DataArrayDouble *ret=self->getCoords();
3125         if(ret)
3126           ret->incrRef();
3127         return ret;
3128       }
3129       void setNodeGridStructure(PyObject *gridStruct) throw(INTERP_KERNEL::Exception)
3130       {
3131         int szArr,sw,iTypppArr;
3132         std::vector<int> stdvecTyyppArr;
3133         const int *tmp=convertObjToPossibleCpp1_Safe(gridStruct,sw,szArr,iTypppArr,stdvecTyyppArr);
3134         self->setNodeGridStructure(tmp,tmp+szArr);
3135       }
3136     }
3137   };
3138
3139   //== MEDCouplingCurveLinearMesh End
3140 }
3141
3142 %extend ParaMEDMEM::MEDCouplingFieldDiscretization
3143 {
3144   MEDCouplingFieldDiscretization *clonePart(PyObject *li)
3145   {
3146     int sz=0,sw=-1,val1=-1;
3147     std::vector<int> val2;
3148     const int *inp=convertObjToPossibleCpp1_Safe(li,sw,sz,val1,val2);
3149     return self->clonePart(inp,inp+sz);
3150   }
3151
3152   PyObject *buildSubMeshDataRange(const MEDCouplingMesh *mesh, int beginCellIds, int endCellIds, int stepCellIds, int& beginOut, int& endOut, int& stepOut, DataArrayInt *&di) const throw(INTERP_KERNEL::Exception)
3153   {
3154     DataArrayInt *ret1=0;
3155     int bb,ee,ss;
3156     MEDCouplingMesh *ret0=self->buildSubMeshDataRange(mesh,begin,end,step,bb,ee,ss,ret1);
3157     PyObject *res=PyTuple_New(2);
3158     PyTuple_SetItem(res,0,convertMesh(ret0, SWIG_POINTER_OWN | 0 ));
3159     if(ret1)
3160       PyTuple_SetItem(res,1,SWIG_NewPointerObj((void*)ret1,SWIGTYPE_p_ParaMEDMEM__DataArrayInt,SWIG_POINTER_OWN | 0));
3161     else
3162       {
3163         PyObject *res1=PySlice_New(PyInt_FromLong(bb),PyInt_FromLong(ee),PyInt_FromLong(ss));
3164         PyTuple_SetItem(res,1,res1);
3165       }
3166     return res;
3167   }
3168   
3169   PyObject *computeMeshRestrictionFromTupleIds(const MEDCouplingMesh *mesh, PyObject *tupleIds) const throw(INTERP_KERNEL::Exception)
3170   {
3171     std::vector<int> vVal; int iVal=-1;
3172     int sz=-1,sw=0;
3173     const int *tupleIdsBg=convertObjToPossibleCpp1_Safe(tupleIds,sw,sz,iVal,vVal);
3174     if(sw==0)
3175       throw INTERP_KERNEL::Exception("MEDCouplingFieldDiscretization::computeMeshRestrictionFromTupleIds : none parameter in input !");
3176     DataArrayInt *ret0=0,*ret1=0;
3177     self->computeMeshRestrictionFromTupleIds(mesh,tupleIdsBg,tupleIdsBg+sz,ret0,ret1);
3178     PyObject *pyRet=PyTuple_New(2);
3179     PyTuple_SetItem(pyRet,0,SWIG_NewPointerObj(SWIG_as_voidptr(ret0),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 ));
3180     PyTuple_SetItem(pyRet,1,SWIG_NewPointerObj(SWIG_as_voidptr(ret1),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 ));
3181     return pyRet;
3182   }
3183
3184   int getNumberOfTuplesExpectedRegardingCode(const MEDCouplingMesh *mesh, PyObject *code, PyObject *idsPerType) const throw(INTERP_KERNEL::Exception)
3185   {
3186     std::vector<int> inp0;
3187     convertPyToNewIntArr4(code,1,3,inp0);
3188     std::vector<const DataArrayInt *> inp1;
3189     convertFromPyObjVectorOfObj<const ParaMEDMEM::DataArrayInt *>(idsPerType,SWIGTYPE_p_ParaMEDMEM__DataArrayInt,"DataArrayInt",inp1);
3190     return self->getNumberOfTuplesExpectedRegardingCode(mesh,inp0,inp1);
3191   }
3192 }
3193
3194 %extend ParaMEDMEM::MEDCouplingFieldDiscretizationP0
3195 {
3196   PyObject *computeMeshRestrictionFromTupleIds(const MEDCouplingMesh *mesh, PyObject *tupleIds) const throw(INTERP_KERNEL::Exception)
3197   { return ParaMEDMEM_MEDCouplingFieldDiscretization_computeMeshRestrictionFromTupleIds__SWIG_1(self,mesh,tupleIds); }
3198 }
3199
3200 %extend ParaMEDMEM::MEDCouplingFieldDiscretizationOnNodes
3201 {
3202   PyObject *computeMeshRestrictionFromTupleIds(const MEDCouplingMesh *mesh, PyObject *tupleIds) const throw(INTERP_KERNEL::Exception)
3203   { return ParaMEDMEM_MEDCouplingFieldDiscretization_computeMeshRestrictionFromTupleIds__SWIG_1(self,mesh,tupleIds); }
3204 }
3205
3206 %extend ParaMEDMEM::MEDCouplingFieldDiscretizationGauss
3207 {
3208   PyObject *computeMeshRestrictionFromTupleIds(const MEDCouplingMesh *mesh, PyObject *tupleIds) const throw(INTERP_KERNEL::Exception)
3209   { return ParaMEDMEM_MEDCouplingFieldDiscretization_computeMeshRestrictionFromTupleIds__SWIG_1(self,mesh,tupleIds); }
3210 }
3211
3212 %extend ParaMEDMEM::MEDCouplingFieldDiscretizationGaussNE
3213 {
3214   PyObject *computeMeshRestrictionFromTupleIds(const MEDCouplingMesh *mesh, PyObject *tupleIds) const throw(INTERP_KERNEL::Exception)
3215   { return ParaMEDMEM_MEDCouplingFieldDiscretization_computeMeshRestrictionFromTupleIds__SWIG_1(self,mesh,tupleIds); }
3216 }
3217
3218 %extend ParaMEDMEM::MEDCouplingFieldDiscretizationPerCell
3219 {
3220   PyObject *getArrayOfDiscIds() const
3221   {
3222     DataArrayInt *ret=const_cast<DataArrayInt *>(self->getArrayOfDiscIds());
3223     if(ret)
3224       ret->incrRef();
3225     return SWIG_NewPointerObj(SWIG_as_voidptr(ret),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 );
3226   }
3227
3228   PyObject *splitIntoSingleGaussDicrPerCellType() const throw(INTERP_KERNEL::Exception)
3229   {
3230     std::vector<int> ret1;
3231     std::vector<DataArrayInt *> ret0=self->splitIntoSingleGaussDicrPerCellType(ret1);
3232     std::size_t sz=ret0.size();
3233     PyObject *pyRet=PyTuple_New(2);
3234     PyObject *pyRet0=PyList_New((int)sz);
3235     PyObject *pyRet1=PyList_New((int)sz);
3236     for(std::size_t i=0;i<sz;i++)
3237       {
3238         PyList_SetItem(pyRet0,i,SWIG_NewPointerObj(SWIG_as_voidptr(ret0[i]),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 ));
3239         PyList_SetItem(pyRet1,i,PyInt_FromLong(ret1[i]));
3240       }
3241     PyTuple_SetItem(pyRet,0,pyRet0);
3242     PyTuple_SetItem(pyRet,1,pyRet1);
3243     return pyRet;
3244   }
3245 }
3246
3247 %extend ParaMEDMEM::MEDCouplingFieldDiscretizationKriging
3248 {
3249   PyObject *computeVectorOfCoefficients(const MEDCouplingMesh *mesh, const DataArrayDouble *arr) const
3250   {
3251     int ret1;
3252     DataArrayDouble *ret0=self->computeVectorOfCoefficients(mesh,arr,ret1);
3253     PyObject *ret=PyTuple_New(2);
3254     PyTuple_SetItem(ret,0,SWIG_NewPointerObj(SWIG_as_voidptr(ret0),SWIGTYPE_p_ParaMEDMEM__DataArrayDouble, SWIG_POINTER_OWN | 0 ));
3255     PyTuple_SetItem(ret,1,PyInt_FromLong(ret1));
3256     return ret;
3257   }
3258 }
3259
3260 namespace ParaMEDMEM
3261 {
3262   class MEDCouplingField : public ParaMEDMEM::RefCountObject, public ParaMEDMEM::TimeLabel
3263   {
3264   public:
3265     virtual void checkCoherency() const throw(INTERP_KERNEL::Exception);
3266     virtual bool areCompatibleForMerge(const MEDCouplingField *other) const throw(INTERP_KERNEL::Exception);
3267     virtual bool isEqual(const MEDCouplingField *other, double meshPrec, double valsPrec) const throw(INTERP_KERNEL::Exception);
3268     virtual bool isEqualWithoutConsideringStr(const MEDCouplingField *other, double meshPrec, double valsPrec) const throw(INTERP_KERNEL::Exception);
3269     virtual void copyTinyStringsFrom(const MEDCouplingField *other) throw(INTERP_KERNEL::Exception);
3270     void setMesh(const ParaMEDMEM::MEDCouplingMesh *mesh) throw(INTERP_KERNEL::Exception);
3271     void setName(const char *name) throw(INTERP_KERNEL::Exception);
3272     std::string getDescription() const throw(INTERP_KERNEL::Exception);
3273     void setDescription(const char *desc) throw(INTERP_KERNEL::Exception);
3274     std::string getName() const throw(INTERP_KERNEL::Exception);
3275     TypeOfField getTypeOfField() const throw(INTERP_KERNEL::Exception);
3276     NatureOfField getNature() const throw(INTERP_KERNEL::Exception);
3277     virtual void setNature(NatureOfField nat) throw(INTERP_KERNEL::Exception);
3278     DataArrayDouble *getLocalizationOfDiscr() const throw(INTERP_KERNEL::Exception);
3279     MEDCouplingFieldDouble *buildMeasureField(bool isAbs) const throw(INTERP_KERNEL::Exception);
3280     int getNumberOfTuplesExpected() const throw(INTERP_KERNEL::Exception);
3281     int getNumberOfMeshPlacesExpected() const throw(INTERP_KERNEL::Exception);
3282     void setGaussLocalizationOnType(INTERP_KERNEL::NormalizedCellType type, const std::vector<double>& refCoo,
3283                                     const std::vector<double>& gsCoo, const std::vector<double>& wg) throw(INTERP_KERNEL::Exception);
3284     void clearGaussLocalizations() throw(INTERP_KERNEL::Exception);
3285     MEDCouplingGaussLocalization& getGaussLocalization(int locId) throw(INTERP_KERNEL::Exception);
3286     int getNbOfGaussLocalization() const throw(INTERP_KERNEL::Exception);
3287     int getGaussLocalizationIdOfOneCell(int cellId) const throw(INTERP_KERNEL::Exception);
3288     const MEDCouplingGaussLocalization& getGaussLocalization(int locId) const throw(INTERP_KERNEL::Exception);
3289     int getGaussLocalizationIdOfOneType(INTERP_KERNEL::NormalizedCellType type) const throw(INTERP_KERNEL::Exception);
3290     void setDiscretization(MEDCouplingFieldDiscretization *newDisc);
3291     %extend {
3292       PyObject *getMesh() const throw(INTERP_KERNEL::Exception)
3293       {
3294         MEDCouplingMesh *ret1=const_cast<MEDCouplingMesh *>(self->getMesh());
3295         if(ret1)
3296           ret1->incrRef();
3297         return convertMesh(ret1,SWIG_POINTER_OWN | 0 );
3298       }
3299
3300       PyObject *getDiscretization() throw(INTERP_KERNEL::Exception)
3301       {
3302         MEDCouplingFieldDiscretization *ret=self->getDiscretization();
3303         if(ret)
3304           ret->incrRef();
3305         return convertFieldDiscretization(ret,SWIG_POINTER_OWN | 0 );
3306       }
3307
3308       PyObject *getGaussLocalizationIdsOfOneType(INTERP_KERNEL::NormalizedCellType type) const throw(INTERP_KERNEL::Exception)
3309       {
3310         std::set<int> ret=self->getGaussLocalizationIdsOfOneType(type);
3311         return convertIntArrToPyList3(ret);
3312       }
3313
3314       PyObject *isEqualIfNotWhy(const MEDCouplingField *other, double meshPrec, double valsPrec) const throw(INTERP_KERNEL::Exception)
3315       {
3316         std::string ret1;
3317         bool ret0=self->isEqualIfNotWhy(other,meshPrec,valsPrec,ret1);
3318         PyObject *ret=PyTuple_New(2);
3319         PyObject *ret0Py=ret0?Py_True:Py_False;
3320         Py_XINCREF(ret0Py);
3321         PyTuple_SetItem(ret,0,ret0Py);
3322         PyTuple_SetItem(ret,1,PyString_FromString(ret1.c_str()));
3323         return ret;
3324       }
3325
3326       PyObject *buildSubMeshData(PyObject *li) const throw(INTERP_KERNEL::Exception)
3327       {
3328         DataArrayInt *ret1=0;
3329         MEDCouplingMesh *ret0=0;
3330         void *da=0;
3331         int res1=SWIG_ConvertPtr(li,&da,SWIGTYPE_p_ParaMEDMEM__DataArrayInt, 0 |  0 );
3332         if (!SWIG_IsOK(res1))
3333           {
3334             int size;
3335             INTERP_KERNEL::AutoPtr<int> tmp=convertPyToNewIntArr2(li,&size);
3336             ret0=self->buildSubMeshData(tmp,tmp+size,ret1);
3337           }
3338         else
3339           {
3340             DataArrayInt *da2=reinterpret_cast< DataArrayInt * >(da);
3341             if(!da2)
3342               throw INTERP_KERNEL::Exception("Not null DataArrayInt instance expected !");
3343             da2->checkAllocated();
3344             ret0=self->buildSubMeshData(da2->getConstPointer(),da2->getConstPointer()+da2->getNbOfElems(),ret1);
3345           }
3346         PyObject *res = PyList_New(2);
3347         PyList_SetItem(res,0,convertMesh(ret0, SWIG_POINTER_OWN | 0 ));
3348         PyList_SetItem(res,1,SWIG_NewPointerObj((void*)ret1,SWIGTYPE_p_ParaMEDMEM__DataArrayInt,SWIG_POINTER_OWN | 0));
3349         return res;
3350       }
3351
3352       PyObject *buildSubMeshDataRange(int begin, int end, int step) const throw(INTERP_KERNEL::Exception)
3353       {
3354         DataArrayInt *ret1=0;
3355         int bb,ee,ss;
3356         MEDCouplingMesh *ret0=self->buildSubMeshDataRange(begin,end,step,bb,ee,ss,ret1);
3357         PyObject *res=PyTuple_New(2);
3358         PyTuple_SetItem(res,0,convertMesh(ret0, SWIG_POINTER_OWN | 0 ));
3359         if(ret1)
3360           PyTuple_SetItem(res,1,SWIG_NewPointerObj((void*)ret1,SWIGTYPE_p_ParaMEDMEM__DataArrayInt,SWIG_POINTER_OWN | 0));
3361         else
3362           {
3363             PyObject *res1=PySlice_New(PyInt_FromLong(bb),PyInt_FromLong(ee),PyInt_FromLong(ss));
3364             PyTuple_SetItem(res,1,res1);
3365           }
3366         return res;
3367       }
3368
3369       DataArrayInt *computeTupleIdsToSelectFromCellIds(PyObject *li) const
3370       {
3371         int sw;
3372         int pos1;
3373         std::vector<int> pos2;
3374         DataArrayInt *pos3=0;
3375         DataArrayIntTuple *pos4=0;
3376         convertObjToPossibleCpp1(li,sw,pos1,pos2,pos3,pos4);
3377         switch(sw)
3378           {
3379           case 1:
3380             {
3381               return self->computeTupleIdsToSelectFromCellIds(&pos1,&pos1+1);
3382             }
3383           case 2:
3384             {
3385               return self->computeTupleIdsToSelectFromCellIds(&pos2[0],&pos2[0]+pos2.size());
3386             }
3387           case 3:
3388             {
3389               return self->computeTupleIdsToSelectFromCellIds(pos3->begin(),pos3->end());
3390             }
3391           default:
3392             throw INTERP_KERNEL::Exception("MEDCouplingField::computeTupleIdsToSelectFromCellIds : unexpected input array type recognized !");
3393           }
3394       }
3395
3396       void setGaussLocalizationOnCells(PyObject *li, const std::vector<double>& refCoo,
3397                                        const std::vector<double>& gsCoo, const std::vector<double>& wg) throw(INTERP_KERNEL::Exception)
3398       {
3399         void *da=0;
3400         int res1=SWIG_ConvertPtr(li,&da,SWIGTYPE_p_ParaMEDMEM__DataArrayInt, 0 |  0 );
3401         if (!SWIG_IsOK(res1))
3402           {
3403             int size;
3404             INTERP_KERNEL::AutoPtr<int> tmp=convertPyToNewIntArr2(li,&size);
3405             self->setGaussLocalizationOnCells(tmp,((int *)tmp)+size,refCoo,gsCoo,wg);
3406           }
3407         else
3408           {
3409             DataArrayInt *da2=reinterpret_cast< DataArrayInt * >(da);
3410             if(!da2)
3411               throw INTERP_KERNEL::Exception("Not null DataArrayInt instance expected !");
3412             da2->checkAllocated();
3413             self->setGaussLocalizationOnCells(da2->getConstPointer(),da2->getConstPointer()+da2->getNbOfElems(),refCoo,gsCoo,wg);
3414           }
3415       }
3416
3417       PyObject *getCellIdsHavingGaussLocalization(int locId) const throw(INTERP_KERNEL::Exception)
3418       {
3419         std::vector<int> tmp;
3420         self->getCellIdsHavingGaussLocalization(locId,tmp);
3421         DataArrayInt *ret=DataArrayInt::New();
3422         ret->alloc((int)tmp.size(),1);
3423         std::copy(tmp.begin(),tmp.end(),ret->getPointer());
3424         return SWIG_NewPointerObj(SWIG_as_voidptr(ret),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 );
3425       }
3426       
3427       int getNumberOfTuplesExpectedRegardingCode(PyObject *code, PyObject *idsPerType) const throw(INTERP_KERNEL::Exception)
3428       {
3429         std::vector<int> inp0;
3430         convertPyToNewIntArr4(code,1,3,inp0);
3431         std::vector<const DataArrayInt *> inp1;
3432         convertFromPyObjVectorOfObj<const ParaMEDMEM::DataArrayInt *>(idsPerType,SWIGTYPE_p_ParaMEDMEM__DataArrayInt,"DataArrayInt",inp1);
3433         return self->getNumberOfTuplesExpectedRegardingCode(inp0,inp1);
3434       }
3435     }
3436   };
3437   
3438   class MEDCouplingFieldTemplate : public ParaMEDMEM::MEDCouplingField
3439   {
3440   public:
3441     static MEDCouplingFieldTemplate *New(const MEDCouplingFieldDouble& f) throw(INTERP_KERNEL::Exception);
3442     static MEDCouplingFieldTemplate *New(TypeOfField type);
3443     std::string simpleRepr() const throw(INTERP_KERNEL::Exception);
3444     std::string advancedRepr() const throw(INTERP_KERNEL::Exception);
3445     %extend
3446        {
3447          MEDCouplingFieldTemplate(const MEDCouplingFieldDouble& f) throw(INTERP_KERNEL::Exception)
3448          {
3449            return MEDCouplingFieldTemplate::New(f);
3450          }
3451          
3452          MEDCouplingFieldTemplate(TypeOfField type) throw(INTERP_KERNEL::Exception)
3453          {
3454            return MEDCouplingFieldTemplate::New(type);
3455          }
3456          
3457          std::string __str__() const throw(INTERP_KERNEL::Exception)
3458          {
3459            return self->simpleRepr();
3460          }
3461          
3462          std::string __repr__() const throw(INTERP_KERNEL::Exception)
3463          {
3464            std::ostringstream oss;
3465            self->reprQuickOverview(oss);
3466            return oss.str();
3467          }
3468        }
3469   };
3470   
3471   class MEDCouplingFieldDouble : public ParaMEDMEM::MEDCouplingField
3472   {
3473   public:
3474     static MEDCouplingFieldDouble *New(TypeOfField type, TypeOfTimeDiscretization td=ONE_TIME);
3475     static MEDCouplingFieldDouble *New(const MEDCouplingFieldTemplate& ft, TypeOfTimeDiscretization td=ONE_TIME);
3476     void setTimeUnit(const char *unit);
3477     const char *getTimeUnit() const;
3478     void synchronizeTimeWithSupport() throw(INTERP_KERNEL::Exception);
3479     void copyTinyAttrFrom(const MEDCouplingFieldDouble *other) throw(INTERP_KERNEL::Exception);
3480     void copyAllTinyAttrFrom(const MEDCouplingFieldDouble *other) throw(INTERP_KERNEL::Exception);
3481     std::string simpleRepr() const throw(INTERP_KERNEL::Exception);
3482     std::string advancedRepr() const throw(INTERP_KERNEL::Exception);
3483     void writeVTK(const char *fileName) const throw(INTERP_KERNEL::Exception);
3484     MEDCouplingFieldDouble *clone(bool recDeepCpy) const;
3485     MEDCouplingFieldDouble *cloneWithMesh(bool recDeepCpy) const;
3486     MEDCouplingFieldDouble *deepCpy() const;
3487     MEDCouplingFieldDouble *buildNewTimeReprFromThis(TypeOfTimeDiscretization td, bool deepCpy) const throw(INTERP_KERNEL::Exception);
3488     TypeOfTimeDiscretization getTimeDiscretization() const throw(INTERP_KERNEL::Exception);
3489     double getIJ(int tupleId, int compoId) const throw(INTERP_KERNEL::Exception);
3490     double getIJK(int cellId, int nodeIdInCell, int compoId) const throw(INTERP_KERNEL::Exception);
3491     void synchronizeTimeWithMesh() throw(INTERP_KERNEL::Exception);
3492     void setArray(DataArrayDouble *array) throw(INTERP_KERNEL::Exception);
3493     void setEndArray(DataArrayDouble *array) throw(INTERP_KERNEL::Exception);
3494     void setTime(double val, int iteration, int order) throw(INTERP_KERNEL::Exception);
3495     void setStartTime(double val, int iteration, int order) throw(INTERP_KERNEL::Exception);
3496     void setEndTime(double val, int iteration, int order) throw(INTERP_KERNEL::Exception);
3497     void applyLin(double a, double b, int compoId) throw(INTERP_KERNEL::Exception);
3498     int getNumberOfComponents() const throw(INTERP_KERNEL::Exception);
3499     int getNumberOfTuples() const throw(INTERP_KERNEL::Exception);
3500     int getNumberOfValues() const throw(INTERP_KERNEL::Exception);
3501     void setTimeTolerance(double val) throw(INTERP_KERNEL::Exception);
3502     double getTimeTolerance() const throw(INTERP_KERNEL::Exception);
3503     void setIteration(int it) throw(INTERP_KERNEL::Exception);
3504     void setEndIteration(int it) throw(INTERP_KERNEL::Exception);
3505     void setOrder(int order) throw(INTERP_KERNEL::Exception);
3506     void setEndOrder(int order) throw(INTERP_KERNEL::Exception);
3507     void setTimeValue(double val) throw(INTERP_KERNEL::Exception);
3508     void setEndTimeValue(double val) throw(INTERP_KERNEL::Exception);
3509     void changeUnderlyingMesh(const MEDCouplingMesh *other, int levOfCheck, double precOnMesh, double eps=1e-15) throw(INTERP_KERNEL::Exception);
3510     void substractInPlaceDM(const MEDCouplingFieldDouble *f, int levOfCheck, double precOnMesh, double eps=1e-15) throw(INTERP_KERNEL::Exception);
3511     bool mergeNodes(double eps, double epsOnVals=1e-15) throw(INTERP_KERNEL::Exception);
3512     bool mergeNodes2(double eps, double epsOnVals=1e-15) throw(INTERP_KERNEL::Exception);
3513     bool zipCoords(double epsOnVals=1e-15) throw(INTERP_KERNEL::Exception);
3514     bool zipConnectivity(int compType,double epsOnVals=1e-15) throw(INTERP_KERNEL::Exception);
3515     bool simplexize(int policy) throw(INTERP_KERNEL::Exception);
3516     MEDCouplingFieldDouble *doublyContractedProduct() const throw(INTERP_KERNEL::Exception);
3517     MEDCouplingFieldDouble *determinant() const throw(INTERP_KERNEL::Exception);
3518     MEDCouplingFieldDouble *eigenValues() const throw(INTERP_KERNEL::Exception);
3519     MEDCouplingFieldDouble *eigenVectors() const throw(INTERP_KERNEL::Exception);
3520     MEDCouplingFieldDouble *inverse() const throw(INTERP_KERNEL::Exception);
3521     MEDCouplingFieldDouble *trace() const throw(INTERP_KERNEL::Exception);
3522     MEDCouplingFieldDouble *deviator() const throw(INTERP_KERNEL::Exception);
3523     MEDCouplingFieldDouble *magnitude() const throw(INTERP_KERNEL::Exception);
3524     MEDCouplingFieldDouble *maxPerTuple() const throw(INTERP_KERNEL::Exception);
3525     void changeNbOfComponents(int newNbOfComp, double dftValue=0.) throw(INTERP_KERNEL::Exception);
3526     void sortPerTuple(bool asc) throw(INTERP_KERNEL::Exception);
3527     MEDCouplingFieldDouble &operator=(double value) throw(INTERP_KERNEL::Exception);
3528     void fillFromAnalytic(int nbOfComp, const char *func) throw(INTERP_KERNEL::Exception);
3529     void fillFromAnalytic2(int nbOfComp, const char *func) throw(INTERP_KERNEL::Exception);
3530     void fillFromAnalytic3(int nbOfComp, const std::vector<std::string>& varsOrder, const char *func) throw(INTERP_KERNEL::Exception);
3531     void applyFunc(int nbOfComp, const char *func) throw(INTERP_KERNEL::Exception);
3532     void applyFunc2(int nbOfComp, const char *func) throw(INTERP_KERNEL::Exception);
3533     void applyFunc3(int nbOfComp, const std::vector<std::string>& varsOrder, const char *func) throw(INTERP_KERNEL::Exception);
3534     void applyFunc(int nbOfComp, double val) throw(INTERP_KERNEL::Exception);
3535     void applyFunc(const char *func) throw(INTERP_KERNEL::Exception);
3536     void applyFuncFast32(const char *func) throw(INTERP_KERNEL::Exception);
3537     void applyFuncFast64(const char *func) throw(INTERP_KERNEL::Exception);
3538     double accumulate(int compId) const throw(INTERP_KERNEL::Exception);
3539     double getMaxValue() const throw(INTERP_KERNEL::Exception);
3540     double getMinValue() const throw(INTERP_KERNEL::Exception);
3541     double getAverageValue() const throw(INTERP_KERNEL::Exception);
3542     double norm2() const throw(INTERP_KERNEL::Exception);
3543     double normMax() const throw(INTERP_KERNEL::Exception);
3544     //do not put a default value to isWAbs because confusion in python with overloaded getWeightedAverageValue method
3545     double getWeightedAverageValue(int compId, bool isWAbs) const throw(INTERP_KERNEL::Exception);
3546     double integral(int compId, bool isWAbs) const throw(INTERP_KERNEL::Exception);
3547     double normL1(int compId) const throw(INTERP_KERNEL::Exception);
3548     double normL2(int compId) const throw(INTERP_KERNEL::Exception);
3549     DataArrayInt *getIdsInRange(double vmin, double vmax) const throw(INTERP_KERNEL::Exception);
3550     MEDCouplingFieldDouble *buildSubPartRange(int begin, int end, int step) const throw(INTERP_KERNEL::Exception);
3551     static MEDCouplingFieldDouble *MergeFields(const MEDCouplingFieldDouble *f1, const MEDCouplingFieldDouble *f2) throw(INTERP_KERNEL::Exception);
3552     static MEDCouplingFieldDouble *MeldFields(const MEDCouplingFieldDouble *f1, const MEDCouplingFieldDouble *f2) throw(INTERP_KERNEL::Exception);
3553     static MEDCouplingFieldDouble *DotFields(const MEDCouplingFieldDouble *f1, const MEDCouplingFieldDouble *f2) throw(INTERP_KERNEL::Exception);
3554     MEDCouplingFieldDouble *dot(const MEDCouplingFieldDouble& other) const throw(INTERP_KERNEL::Exception);
3555     static MEDCouplingFieldDouble *CrossProductFields(const MEDCouplingFieldDouble *f1, const MEDCouplingFieldDouble *f2) throw(INTERP_KERNEL::Exception);
3556     MEDCouplingFieldDouble *crossProduct(const MEDCouplingFieldDouble& other) const throw(INTERP_KERNEL::Exception);
3557     static MEDCouplingFieldDouble *MaxFields(const MEDCouplingFieldDouble *f1, const MEDCouplingFieldDouble *f2) throw(INTERP_KERNEL::Exception);
3558     MEDCouplingFieldDouble *max(const MEDCouplingFieldDouble& other) const throw(INTERP_KERNEL::Exception);
3559     static MEDCouplingFieldDouble *MinFields(const MEDCouplingFieldDouble *f1, const MEDCouplingFieldDouble *f2) throw(INTERP_KERNEL::Exception);
3560     static MEDCouplingFieldDouble *AddFields(const MEDCouplingFieldDouble *f1, const MEDCouplingFieldDouble *f2) throw(INTERP_KERNEL::Exception);
3561     static MEDCouplingFieldDouble *SubstractFields(const MEDCouplingFieldDouble *f1, const MEDCouplingFieldDouble *f2) throw(INTERP_KERNEL::Exception);
3562     static MEDCouplingFieldDouble *MultiplyFields(const MEDCouplingFieldDouble *f1, const MEDCouplingFieldDouble *f2) throw(INTERP_KERNEL::Exception);
3563     static MEDCouplingFieldDouble *DivideFields(const MEDCouplingFieldDouble *f1, const MEDCouplingFieldDouble *f2) throw(INTERP_KERNEL::Exception);
3564     MEDCouplingFieldDouble *min(const MEDCouplingFieldDouble& other) const throw(INTERP_KERNEL::Exception);
3565     MEDCouplingFieldDouble *negate() const throw(INTERP_KERNEL::Exception);
3566     %extend {
3567       MEDCouplingFieldDouble(TypeOfField type, TypeOfTimeDiscretization td=ONE_TIME)
3568       {
3569         return MEDCouplingFieldDouble::New(type,td);
3570       }
3571
3572       MEDCouplingFieldDouble(const MEDCouplingFieldTemplate& ft, TypeOfTimeDiscretization td=ONE_TIME)
3573       {
3574         return MEDCouplingFieldDouble::New(ft,td);
3575       }
3576
3577       std::string __str__() const throw(INTERP_KERNEL::Exception)
3578       {
3579         return self->simpleRepr();
3580       }
3581
3582       std::string __repr__() const throw(INTERP_KERNEL::Exception)
3583       {
3584         std::ostringstream oss;
3585         self->reprQuickOverview(oss);
3586         return oss.str();
3587       }
3588
3589       DataArrayDouble *getArray() throw(INTERP_KERNEL::Exception)
3590       {
3591         DataArrayDouble *ret=self->getArray();
3592         if(ret)
3593           ret->incrRef();
3594         return ret;
3595       }
3596
3597       PyObject *getArrays() const throw(INTERP_KERNEL::Exception)
3598       {
3599         std::vector<DataArrayDouble *> arrs=self->getArrays();
3600         for(std::vector<DataArrayDouble *>::iterator it=arrs.begin();it!=arrs.end();it++)
3601           if(*it)
3602             (*it)->incrRef();
3603         int sz=arrs.size();
3604         PyObject *ret=PyTuple_New(sz);
3605         for(int i=0;i<sz;i++)
3606           {
3607             if(arrs[i])
3608               PyTuple_SetItem(ret,i,SWIG_NewPointerObj(SWIG_as_voidptr(arrs[i]),SWIGTYPE_p_ParaMEDMEM__DataArrayDouble, SWIG_POINTER_OWN | 0 ));
3609             else
3610               PyTuple_SetItem(ret,i,SWIG_NewPointerObj(SWIG_as_voidptr(0),SWIGTYPE_p_ParaMEDMEM__DataArrayDouble, 0 | 0 ));
3611           }
3612         return ret;
3613       }
3614
3615       void setArrays(PyObject *ls) throw(INTERP_KERNEL::Exception)
3616       {
3617         std::vector<const DataArrayDouble *> tmp;
3618         convertFromPyObjVectorOfObj<const DataArrayDouble *>(ls,SWIGTYPE_p_ParaMEDMEM__DataArrayDouble,"DataArrayDouble",tmp);
3619         int sz=tmp.size();
3620         std::vector<DataArrayDouble *> arrs(sz);
3621         for(int i=0;i<sz;i++)
3622           arrs[i]=const_cast<DataArrayDouble *>(tmp[i]);
3623         self->setArrays(arrs);
3624       }
3625
3626       DataArrayDouble *getEndArray() throw(INTERP_KERNEL::Exception)
3627       {
3628         DataArrayDouble *ret=self->getEndArray();
3629         if(ret)
3630           ret->incrRef();
3631         return ret;
3632       }
3633
3634       PyObject *getValueOn(PyObject *sl) const throw(INTERP_KERNEL::Exception)
3635       {
3636         double val;
3637         DataArrayDouble *a;
3638         DataArrayDoubleTuple *aa;
3639         std::vector<double> bb;
3640         int sw;
3641         const MEDCouplingMesh *mesh=self->getMesh();
3642         if(!mesh)
3643           throw INTERP_KERNEL::Exception("Python wrap of MEDCouplingFieldDouble::getValueOn : no underlying mesh !");
3644         int spaceDim=mesh->getSpaceDimension();
3645         const char msg[]="Python wrap of MEDCouplingFieldDouble::getValueOn : ";
3646         const double *spaceLoc=convertObjToPossibleCpp5_Safe(sl,sw,val,a,aa,bb,msg,1,spaceDim,true);
3647         //
3648         int sz=self->getNumberOfComponents();
3649         INTERP_KERNEL::AutoPtr<double> res=new double[sz];
3650         self->getValueOn(spaceLoc,res);
3651         return convertDblArrToPyList(res,sz);
3652       }
3653
3654        PyObject *getValueOnPos(int i, int j, int k) const throw(INTERP_KERNEL::Exception)
3655        {
3656          int sz=self->getNumberOfComponents();
3657          INTERP_KERNEL::AutoPtr<double> res=new double[sz];
3658          self->getValueOnPos(i,j,k,res);
3659          return convertDblArrToPyList(res,sz);
3660        }
3661
3662       DataArrayDouble *getValueOnMulti(PyObject *li) const throw(INTERP_KERNEL::Exception)
3663       {
3664         void *da=0;
3665         int res1=SWIG_ConvertPtr(li,&da,SWIGTYPE_p_ParaMEDMEM__DataArrayDouble, 0 |  0 );
3666         if (!SWIG_IsOK(res1))
3667           {
3668             int size;
3669             INTERP_KERNEL::AutoCPtr<double> tmp=convertPyToNewDblArr2(li,&size);
3670             const MEDCouplingMesh *mesh=self->getMesh();
3671             if(!mesh)
3672               throw INTERP_KERNEL::Exception("Python wrap MEDCouplingFieldDouble::getValueOnMulti : lying on a null mesh !");
3673             int spaceDim=mesh->getSpaceDimension();
3674             int nbOfPoints=size/spaceDim;
3675             if(size%spaceDim!=0)
3676               {
3677                 throw INTERP_KERNEL::Exception("Invalid list length ! Must be a multiple of self.getMesh().getSpaceDimension() !");
3678               }
3679             return self->getValueOnMulti(tmp,nbOfPoints);
3680           }
3681         else
3682           {
3683             DataArrayDouble *da2=reinterpret_cast< DataArrayDouble * >(da);
3684             if(!da2)
3685               throw INTERP_KERNEL::Exception("Not null DataArrayDouble instance expected !");
3686             da2->checkAllocated();
3687             int size=da2->getNumberOfTuples();
3688             int nbOfCompo=da2->getNumberOfComponents();
3689             const MEDCouplingMesh *mesh=self->getMesh();
3690             if(!mesh)
3691               throw INTERP_KERNEL::Exception("Python wrap MEDCouplingFieldDouble::getValueOnMulti : lying on a null mesh !");
3692             if(nbOfCompo!=mesh->getSpaceDimension())
3693               {
3694                 throw INTERP_KERNEL::Exception("Invalid DataArrayDouble nb of components ! Expected same as self.getMesh().getSpaceDimension() !");
3695               }
3696             return self->getValueOnMulti(da2->getConstPointer(),size);
3697           }
3698       }
3699
3700       PyObject *getValueOn(PyObject *sl, double time) const throw(INTERP_KERNEL::Exception)
3701       {
3702         double val;
3703         DataArrayDouble *a;
3704         DataArrayDoubleTuple *aa;
3705         std::vector<double> bb;
3706         int sw;
3707         const MEDCouplingMesh *mesh=self->getMesh();
3708         if(!mesh)
3709           throw INTERP_KERNEL::Exception("Python wrap of MEDCouplingFieldDouble::getValueOn : no underlying mesh !");
3710         int spaceDim=mesh->getSpaceDimension();
3711         const char msg[]="Python wrap of MEDCouplingFieldDouble::getValueOn : ";
3712         const double *spaceLoc=convertObjToPossibleCpp5_Safe(sl,sw,val,a,aa,bb,msg,1,spaceDim,true);
3713         //
3714         //
3715         int sz=self->getNumberOfComponents();
3716         INTERP_KERNEL::AutoPtr<double> res=new double[sz];
3717         self->getValueOn(spaceLoc,time,res);
3718         return convertDblArrToPyList(res,sz);
3719       }
3720
3721       void setValues(PyObject *li, PyObject *nbOfTuples=0, PyObject *nbOfComp=0) throw(INTERP_KERNEL::Exception)
3722       {
3723         if(self->getArray()!=0)
3724           ParaMEDMEM_DataArrayDouble_setValues__SWIG_0(self->getArray(),li,nbOfTuples,nbOfComp);
3725         else
3726           {
3727             MEDCouplingAutoRefCountObjectPtr<DataArrayDouble> arr=DataArrayDouble::New();
3728             ParaMEDMEM_DataArrayDouble_setValues__SWIG_0(arr,li,nbOfTuples,nbOfComp);
3729             self->setArray(arr);
3730           }
3731       }
3732       
3733       PyObject *getTime() throw(INTERP_KERNEL::Exception)
3734       {
3735         int tmp1,tmp2;
3736         double tmp0=self->getTime(tmp1,tmp2);
3737         PyObject *res = PyList_New(3);
3738         PyList_SetItem(res,0,SWIG_From_double(tmp0));
3739         PyList_SetItem(res,1,SWIG_From_int(tmp1));
3740         PyList_SetItem(res,2,SWIG_From_int(tmp2));
3741         return res;
3742       }
3743
3744       PyObject *getStartTime() throw(INTERP_KERNEL::Exception)
3745       {
3746         int tmp1,tmp2;
3747         double tmp0=self->getStartTime(tmp1,tmp2);
3748         PyObject *res = PyList_New(3);
3749         PyList_SetItem(res,0,SWIG_From_double(tmp0));
3750         PyList_SetItem(res,1,SWIG_From_int(tmp1));
3751         PyList_SetItem(res,2,SWIG_From_int(tmp2));
3752         return res;
3753       }
3754
3755       PyObject *getEndTime() throw(INTERP_KERNEL::Exception)
3756       {
3757         int tmp1,tmp2;
3758         double tmp0=self->getEndTime(tmp1,tmp2);
3759         PyObject *res = PyList_New(3);
3760         PyList_SetItem(res,0,SWIG_From_double(tmp0));
3761         PyList_SetItem(res,1,SWIG_From_int(tmp1));
3762         PyList_SetItem(res,2,SWIG_From_int(tmp2));
3763         return res;
3764       }
3765       PyObject *accumulate() const throw(INTERP_KERNEL::Exception)
3766       {
3767         int sz=self->getNumberOfComponents();
3768         INTERP_KERNEL::AutoPtr<double> tmp=new double[sz];
3769         self->accumulate(tmp);
3770         return convertDblArrToPyList(tmp,sz);
3771       }
3772       PyObject *integral(bool isWAbs) const throw(INTERP_KERNEL::Exception)
3773       {
3774         int sz=self->getNumberOfComponents();
3775         INTERP_KERNEL::AutoPtr<double> tmp=new double[sz];
3776         self->integral(isWAbs,tmp);
3777         return convertDblArrToPyList(tmp,sz);
3778       }
3779       PyObject *getWeightedAverageValue(bool isWAbs=true) const throw(INTERP_KERNEL::Exception)
3780       {
3781         int sz=self->getNumberOfComponents();
3782         INTERP_KERNEL::AutoPtr<double> tmp=new double[sz];
3783         self->getWeightedAverageValue(tmp,isWAbs);
3784         return convertDblArrToPyList(tmp,sz);
3785       }
3786       PyObject *normL1() const throw(INTERP_KERNEL::Exception)
3787       {
3788         int sz=self->getNumberOfComponents();
3789         INTERP_KERNEL::AutoPtr<double> tmp=new double[sz];
3790         self->normL1(tmp);
3791         return convertDblArrToPyList(tmp,sz);
3792       }
3793       PyObject *normL2() const throw(INTERP_KERNEL::Exception)
3794       {
3795         int sz=self->getNumberOfComponents();
3796         INTERP_KERNEL::AutoPtr<double> tmp=new double[sz];
3797         self->normL2(tmp);
3798         return convertDblArrToPyList(tmp,sz);
3799       }
3800       void renumberCells(PyObject *li, bool check=true) throw(INTERP_KERNEL::Exception)
3801       {
3802         int szArr,sw,iTypppArr;
3803         std::vector<int> stdvecTyyppArr;
3804         const int *tmp=convertObjToPossibleCpp1_Safe(li,sw,szArr,iTypppArr,stdvecTyyppArr);
3805         self->renumberCells(tmp,check);
3806       }
3807       
3808       void renumberCellsWithoutMesh(PyObject *li, bool check=true) throw(INTERP_KERNEL::Exception)
3809       {
3810         int szArr,sw,iTypppArr;
3811         std::vector<int> stdvecTyyppArr;
3812         const int *tmp=convertObjToPossibleCpp1_Safe(li,sw,szArr,iTypppArr,stdvecTyyppArr);
3813         self->renumberCellsWithoutMesh(tmp,check);
3814       }
3815       
3816       void renumberNodes(PyObject *li, double eps=1e-15) throw(INTERP_KERNEL::Exception)
3817       {
3818         int szArr,sw,iTypppArr;
3819         std::vector<int> stdvecTyyppArr;
3820         const int *tmp=convertObjToPossibleCpp1_Safe(li,sw,szArr,iTypppArr,stdvecTyyppArr);
3821         self->renumberNodes(tmp,eps);
3822       }
3823
3824       void renumberNodesWithoutMesh(PyObject *li, int newNbOfNodes, double eps=1e-15) throw(INTERP_KERNEL::Exception)
3825       {
3826         int szArr,sw,iTypppArr;
3827         std::vector<int> stdvecTyyppArr;
3828         const int *tmp=convertObjToPossibleCpp1_Safe(li,sw,szArr,iTypppArr,stdvecTyyppArr);
3829         self->renumberNodesWithoutMesh(tmp,newNbOfNodes,eps);
3830       }
3831
3832       MEDCouplingFieldDouble *buildSubPart(PyObject *li) const throw(INTERP_KERNEL::Exception)
3833       {
3834         int sw;
3835         int singleVal;
3836         std::vector<int> multiVal;
3837         std::pair<int, std::pair<int,int> > slic;
3838         ParaMEDMEM::DataArrayInt *daIntTyypp=0;
3839         const MEDCouplingMesh *mesh=self->getMesh();
3840         if(!mesh)
3841           throw INTERP_KERNEL::Exception("MEDCouplingFieldDouble::buildSubPart : field lies on a null mesh !");
3842         int nbc=mesh->getNumberOfCells();
3843         convertObjToPossibleCpp2(li,nbc,sw,singleVal,multiVal,slic,daIntTyypp);
3844         switch(sw)
3845           {
3846           case 1:
3847             {
3848               if(singleVal>=nbc)
3849                 {
3850                   std::ostringstream oss;
3851                   oss << "Requesting for cell id " << singleVal << " having only " << nbc << " cells !";
3852                   throw INTERP_KERNEL::Exception(oss.str().c_str());
3853                 }
3854               if(singleVal>=0)
3855                 return self->buildSubPart(&singleVal,&singleVal+1);
3856               else
3857                 {
3858                   if(nbc+singleVal>0)
3859                     {
3860                       int tmp=nbc+singleVal;
3861                       return self->buildSubPart(&tmp,&tmp+1);
3862                     }
3863                   else
3864                     {
3865                       std::ostringstream oss;
3866                       oss << "Requesting for cell id " << singleVal << " having only " << nbc << " cells !";
3867                       throw INTERP_KERNEL::Exception(oss.str().c_str());
3868                     }
3869                 }
3870             }
3871           case 2:
3872             {
3873               return self->buildSubPart(&multiVal[0],&multiVal[0]+multiVal.size());
3874             }
3875           case 3:
3876             {
3877               return self->buildSubPartRange(slic.first,slic.second.first,slic.second.second);
3878             }
3879           case 4:
3880             {
3881               if(!daIntTyypp)
3882                 throw INTERP_KERNEL::Exception("MEDCouplingFieldDouble::buildSubPart : null instance has been given in input !");
3883               daIntTyypp->checkAllocated();
3884               return self->buildSubPart(daIntTyypp->begin(),daIntTyypp->end());
3885             }
3886           default:
3887             throw INTERP_KERNEL::Exception("MEDCouplingFieldDouble::buildSubPart : unrecognized type in input ! Possibilities are : int, list or tuple of int DataArrayInt instance !");
3888           }
3889       }
3890
3891       MEDCouplingFieldDouble *__getitem__(PyObject *li) const throw(INTERP_KERNEL::Exception)
3892       {
3893         const char msg[]="MEDCouplingFieldDouble::__getitem__ : invalid call  Available API are : \n-myField[dataArrayInt]\n-myField[slice]\n-myField[pythonListOfCellIds]\n-myField[integer]\n-myField[dataArrayInt,1]\n-myField[slice,1]\n-myField[pythonListOfCellIds,1]\n-myField[integer,1]\n";
3894         if(PyTuple_Check(li))
3895           {
3896             Py_ssize_t sz=PyTuple_Size(li);
3897             if(sz!=2)
3898               throw INTERP_KERNEL::Exception(msg);
3899             PyObject *elt0=PyTuple_GetItem(li,0),*elt1=PyTuple_GetItem(li,1);
3900             int sw;
3901             int singleVal;
3902             std::vector<int> multiVal;
3903             std::pair<int, std::pair<int,int> > slic;
3904             ParaMEDMEM::DataArrayInt *daIntTyypp=0;
3905             if(!self->getArray())
3906               throw INTERP_KERNEL::Exception("MEDCouplingFieldDouble::__getitem__ : no array set on field to deduce number of components !");
3907             try
3908               { convertObjToPossibleCpp2(elt1,self->getArray()->getNumberOfComponents(),sw,singleVal,multiVal,slic,daIntTyypp); }
3909             catch(INTERP_KERNEL::Exception& e)
3910               { std::ostringstream oss; oss << "MEDCouplingFieldDouble::__getitem__ : invalid type in 2nd parameter (compo) !" << e.what(); throw INTERP_KERNEL::Exception(oss.str().c_str()); }
3911             MEDCouplingAutoRefCountObjectPtr<MEDCouplingFieldDouble> ret0=ParaMEDMEM_MEDCouplingFieldDouble_buildSubPart(self,elt0);
3912             DataArrayDouble *ret0Arr=ret0->getArray();
3913             if(!ret0Arr)
3914               throw INTERP_KERNEL::Exception("MEDCouplingFieldDouble::__getitem__ : no array exists to apply restriction on component on it !");
3915             switch(sw)
3916               {
3917               case 1:
3918                 {
3919                   std::vector<int> v2(1,singleVal);
3920                   MEDCouplingAutoRefCountObjectPtr<DataArrayDouble> aarr=static_cast<DataArrayDouble *>(ret0Arr->keepSelectedComponents(v2));
3921                   ret0->setArray(aarr);
3922                   return ret0.retn();
3923                 }
3924               case 2:
3925                 {
3926                   MEDCouplingAutoRefCountObjectPtr<DataArrayDouble> aarr=static_cast<DataArrayDouble *>(ret0Arr->keepSelectedComponents(multiVal));
3927                   ret0->setArray(aarr);
3928                   return ret0.retn();
3929                 }
3930               case 3:
3931                 {
3932                   int nbOfComp=DataArray::GetNumberOfItemGivenBESRelative(slic.first,slic.second.first,slic.second.second,"MEDCouplingFieldDouble::__getitem__ : invalid range in 2nd parameter (components) !");
3933                   std::vector<int> v2(nbOfComp);
3934                   for(int i=0;i<nbOfComp;i++)
3935                     v2[i]=slic.first+i*slic.second.second;
3936                   MEDCouplingAutoRefCountObjectPtr<DataArrayDouble> aarr=static_cast<DataArrayDouble *>(ret0Arr->keepSelectedComponents(v2));
3937                   ret0->setArray(aarr);
3938                   return ret0.retn();
3939                 }
3940               default:
3941                 throw INTERP_KERNEL::Exception(msg);
3942               }
3943             
3944           }
3945         else
3946           return ParaMEDMEM_MEDCouplingFieldDouble_buildSubPart(self,li);
3947       }
3948
3949       PyObject *getMaxValue2() const throw(INTERP_KERNEL::Exception)
3950       {
3951         DataArrayInt *tmp;
3952         double r1=self->getMaxValue2(tmp);
3953         PyObject *ret=PyTuple_New(2);
3954         PyTuple_SetItem(ret,0,PyFloat_FromDouble(r1));
3955         PyTuple_SetItem(ret,1,SWIG_NewPointerObj(SWIG_as_voidptr(tmp),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 ));
3956         return ret;
3957       }
3958       
3959       PyObject *getMinValue2() const throw(INTERP_KERNEL::Exception)
3960       {
3961         DataArrayInt *tmp;
3962         double r1=self->getMinValue2(tmp);
3963         PyObject *ret=PyTuple_New(2);
3964         PyTuple_SetItem(ret,0,PyFloat_FromDouble(r1));
3965         PyTuple_SetItem(ret,1,SWIG_NewPointerObj(SWIG_as_voidptr(tmp),SWIGTYPE_p_ParaMEDMEM__DataArrayInt, SWIG_POINTER_OWN | 0 ));
3966         return ret;
3967       }
3968       
3969       MEDCouplingFieldDouble *keepSelectedComponents(PyObject *li) const throw(INTERP_KERNEL::Exception)
3970       {
3971         std::vector<int> tmp;
3972         convertPyToNewIntArr3(li,tmp);
3973         return self->keepSelectedComponents(tmp);
3974       }
3975
3976       void setSelectedComponents(const MEDCouplingFieldDouble *f, PyObject *li) throw(INTERP_KERNEL::Exception)
3977       {
3978         std::vector<int> tmp;
3979         convertPyToNewIntArr3(li,tmp);
3980         self->setSelectedComponents(f,tmp);
3981       }
3982
3983       MEDCouplingFieldDouble *extractSlice3D(PyObject *origin, PyObject *vec, double eps) const throw(INTERP_KERNEL::Exception)
3984       {
3985         double val,val2;
3986         DataArrayDouble *a,*a2;
3987         DataArrayDoubleTuple *aa,*aa2;
3988         std::vector<double> bb,bb2;
3989         int sw;
3990         int spaceDim=3;
3991         const char msg[]="Python wrap of MEDCouplingFieldDouble::extractSlice3D : 1st paramater for origin.";
3992         const char msg2[]="Python wrap of MEDCouplingFieldDouble::extractSlice3D : 2nd paramater for vector.";
3993         const double *orig=convertObjToPossibleCpp5_Safe(origin,sw,val,a,aa,bb,msg,1,spaceDim,true);
3994         const double *vect=convertObjToPossibleCpp5_Safe(vec,sw,val2,a2,aa2,bb2,msg2,1,spaceDim,true);
3995         //
3996         return self->extractSlice3D(orig,vect,eps);
3997       }
3998
3999       MEDCouplingFieldDouble *__add__(PyObject *obj) throw(INTERP_KERNEL::Exception)
4000       {
4001         return ParaMEDMEM_MEDCouplingFieldDouble___add__Impl(self,obj);
4002       }
4003
4004       MEDCouplingFieldDouble *__radd__(PyObject *obj) throw(INTERP_KERNEL::Exception)
4005       {
4006         return ParaMEDMEM_MEDCouplingFieldDouble___radd__Impl(self,obj);
4007       }
4008
4009       MEDCouplingFieldDouble *__sub__(PyObject *obj) throw(INTERP_KERNEL::Exception)
4010       {
4011         const char msg[]="Unexpected situation in MEDCouplingFieldDouble.__sub__ ! Expecting a not null MEDCouplingFieldDouble or DataArrayDouble or DataArrayDoubleTuple instance, or a list of double, or a double.";
4012         const char msg2[]="in MEDCouplingFieldDouble.__sub__ : self field has no Array of values set !";
4013         void *argp;
4014         //
4015         if(SWIG_IsOK(SWIG_ConvertPtr(obj,&argp,SWIGTYPE_p_ParaMEDMEM__MEDCouplingFieldDouble,0|0)))
4016           {
4017             MEDCouplingFieldDouble *other=reinterpret_cast< ParaMEDMEM::MEDCouplingFieldDouble * >(argp);
4018             if(other)
4019               return (*self)-(*other);
4020             else
4021               throw INTERP_KERNEL::Exception(msg);
4022           }
4023         //
4024         double val;
4025         DataArrayDouble *a;
4026         DataArrayDoubleTuple *aa;
4027         std::vector<double> bb;
4028         int sw;
4029         convertObjToPossibleCpp5(obj,sw,val,a,aa,bb);
4030         switch(sw)
4031           {
4032           case 1:
4033             {
4034               if(!self->getArray())
4035                 throw INTERP_KERNEL::Exception(msg2);
4036               MEDCouplingAutoRefCountObjectPtr<DataArrayDouble> ret=self->getArray()->deepCpy();
4037               ret->applyLin(1.,-val);
4038               MEDCouplingAutoRefCountObjectPtr<MEDCouplingFieldDouble> ret2=self->clone(false);
4039               ret2->setArray(ret);
4040               return ret2.retn();
4041             }
4042           case 2:
4043             {
4044               if(!self->getArray())
4045                 throw INTERP_KERNEL::Exception(msg2);
4046               MEDCouplingAutoRefCountObjectPtr<DataArrayDouble> ret=DataArrayDouble::Substract(self->getArray(),a);
4047               MEDCouplingAutoRefCountObjectPtr<MEDCouplingFieldDouble> ret2=self->clone(false);
4048               ret2->setArray(ret);
4049               return ret2.retn();
4050             }
4051           case 3:
4052             {
4053               if(!self->getArray())
4054                 throw INTERP_KERNEL::Exception(msg2);
4055               MEDCouplingAutoRefCountObjectPtr<DataArrayDouble> aaa=aa->buildDADouble(1,self->getNumberOfComponents());
4056               MEDCouplingAutoRefCountObjectPtr<DataArrayDouble> ret=DataArrayDouble::Substract(self->getArray(),aaa);
4057               MEDCouplingAutoRefCountObjectPtr<MEDCouplingFieldDouble> ret2=self->clone(false);
4058               ret2->setArray(ret);
4059               return ret2.retn();
4060             }
4061           case 4:
4062             {
4063               if(!self->getArray())
4064                 throw INTERP_KERNEL::Exception(msg2);
4065               MEDCouplingAutoRefCountObjectPtr<DataArrayDouble> aaa=DataArrayDouble::New(); aaa->useArray(&bb[0],false,CPP_DEALLOC,1,(int)bb.size());
4066               MEDCouplingAutoRefCountObjectPtr<DataArrayDouble> ret=DataArrayDouble::Substract(self->getArray(),aaa);
4067               MEDCouplingAutoRefCountObjectPtr<MEDCouplingFieldDouble> ret2=self->clone(false);
4068               ret2->setArray(ret);
4069               return ret2.retn();
4070             }
4071           default:
4072             { throw INTERP_KERNEL::Exception(msg); }
4073           }
4074       }
4075
4076       MEDCouplingFieldDouble *__rsub__(PyObject *obj) throw(INTERP_KERNEL::Exception)
4077       {
4078         return ParaMEDMEM_MEDCouplingFieldDouble___rsub__Impl(self,obj);
4079       }
4080
4081       MEDCouplingFieldDouble *__mul__(PyObject *obj) throw(INTERP_KERNEL::Exception)
4082       {
4083         return ParaMEDMEM_MEDCouplingFieldDouble___mul__Impl(self,obj);
4084       }
4085
4086       MEDCouplingFieldDouble *__rmul__(PyObject *obj) throw(INTERP_KERNEL::Exception)
4087       {
4088         return ParaMEDMEM_MEDCouplingFieldDouble___rmul__Impl(self,obj);
4089       }
4090
4091       MEDCouplingFieldDouble *__div__(PyObject *obj) throw(INTERP_KERNEL::Exception)
4092       {
4093         const char msg[]="Unexpected situation in MEDCouplingFieldDouble.__div__ ! Expecting a not null MEDCouplingFieldDouble or DataArrayDouble or DataArrayDoubleTuple instance, or a list of double, or a double.";
4094         const char msg2[]="in MEDCouplingFieldDouble.__div__ : self field has no Array of values set !";
4095         void *argp;
4096         //
4097         if(SWIG_IsOK(SWIG_ConvertPtr(obj,&argp,SWIGTYPE_p_ParaMEDMEM__MEDCouplingFieldDouble,0|0)))
4098           {
4099             MEDCouplingFieldDouble *other=reinterpret_cast< ParaMEDMEM::MEDCouplingFieldDouble * >(argp);
4100             if(other)
4101               return (*self)/(*other);
4102             else
4103               throw INTERP_KERNEL::Exception(msg);
4104           }
4105         //
4106         double val;
4107         DataArrayDouble *a;
4108         DataArrayDoubleTuple *aa;
4109         std::vector<double> bb;
4110         int sw;
4111         convertObjToPossibleCpp5(obj,sw,val,a,aa,bb);
4112         switch(sw)
4113           {
4114           case 1:
4115             {
4116               if(val==0.)
4117                 throw INTERP_KERNEL::Exception("MEDCouplingFieldDouble.__div__ : trying to divide by zero !");
4118               if(!self->getArray())
4119                 throw INTERP_KERNEL::Exception(msg2);
4120               MEDCouplingAutoRefCountObjectPtr<DataArrayDouble> ret=self->getArray()->deepCpy();
4121               ret->applyLin(1./val,0);
4122               MEDCouplingAutoRefCountObjectPtr<MEDCouplingFieldDouble> ret2=self->clone(false);
4123               ret2->setArray(ret);
4124               return ret2.retn();
4125             }
4126           case 2:
4127             {
4128               if(!self->getArray())
4129                 throw INTERP_KERNEL::Exception(msg2);
4130               MEDCouplingAutoRefCountObjectPtr<DataArrayDouble> ret=DataArrayDouble::Divide(self->getArray(),a);
4131               MEDCouplingAutoRefCountObjectPtr<MEDCouplingFieldDouble> ret2=self->clone(false);
4132               ret2->setArray(ret);
4133               return ret2.retn();
4134             }
4135           case 3:
4136             {
4137               if(!self->getArray())
4138                 throw INTERP_KERNEL::Exception(msg2);
4139               MEDCouplingAutoRefCountObjectPtr<DataArrayDouble> aaa=aa->buildDADouble(1,self->getNumberOfComponents());
4140               MEDCouplingAutoRefCountObjectPtr<DataArrayDouble> ret=DataArrayDouble::Divide(self->getArray(),aaa);
4141               MEDCouplingAutoRefCountObjectPtr<MEDCouplingFieldDouble> ret2=self->clone(false);
4142               ret2->setArray(ret);
4143               return ret2.retn();
4144             }
4145           case 4:
4146             {
4147               if(!self->getArray())
4148                 throw INTERP_KERNEL::Exception(msg2);
4149               MEDCouplingAutoRefCountObjectPtr<DataArrayDouble> aaa=DataArrayDouble::New(); aaa->useArray(&bb[0],false,CPP_DEALLOC,1,(int)bb.size());
4150               MEDCouplingAutoRefCountObjectPtr<DataArrayDouble> ret=DataArrayDouble::Divide(self->getArray(),aaa);
4151               MEDCouplingAutoRefCountObjectPtr<MEDCouplingFieldDouble> ret2=self->clone(false);
4152               ret2->setArray(ret);
4153               return ret2.retn();
4154             }
4155           default:
4156             { throw INTERP_KERNEL::Exception(msg); }
4157           }
4158       }
4159
4160       MEDCouplingFieldDouble *__rdiv__(PyObject *obj) throw(INTERP_KERNEL::Exception)
4161       {
4162         return ParaMEDMEM_MEDCouplingFieldDouble___rdiv__Impl(self,obj);
4163       }
4164
4165       MEDCouplingFieldDouble *__pow__(PyObject *obj) throw(INTERP_KERNEL::Exception)
4166       {
4167         const char msg[]="Unexpected situation in MEDCouplingFieldDouble.__pow__ ! Expecting a not null MEDCouplingFieldDouble or DataArrayDouble or DataArrayDoubleTuple instance, or a list of double, or a double.";
4168         const char msg2[]="in MEDCouplingFieldDouble.__pow__ : self field has no Array of values set !";
4169         void *argp;
4170         //
4171         if(SWIG_IsOK(SWIG_ConvertPtr(obj,&argp,SWIGTYPE_p_ParaMEDMEM__MEDCouplingFieldDouble,0|0)))
4172           {
4173             MEDCouplingFieldDouble *other=reinterpret_cast< ParaMEDMEM::MEDCouplingFieldDouble * >(argp);
4174             if(other)
4175               return (*self)^(*other);
4176             else
4177               throw INTERP_KERNEL::Exception(msg);
4178           }
4179         //
4180         double val;
4181         DataArrayDouble *a;
4182         DataArrayDoubleTuple *aa;
4183         std::vector<double> bb;
4184         int sw;
4185         convertObjToPossibleCpp5(obj,sw,val,a,aa,bb);
4186         switch(sw)
4187           {
4188           case 1:
4189             {
4190               if(!self->getArray())
4191                 throw INTERP_KERNEL::Exception(msg2);
4192               MEDCouplingAutoRefCountObjectPtr<DataArrayDouble> ret=self->getArray()->deepCpy();
4193               ret->applyPow(val);
4194               MEDCouplingAutoRefCountObjectPtr<MEDCouplingFieldDouble> ret2=self->clone(false);
4195               ret2->setArray(ret);
4196               return ret2.retn();
4197             }
4198           case 2:
4199             {
4200               if(!self->getArray())
4201                 throw INTERP_KERNEL::Exception(msg2);
4202               MEDCouplingAutoRefCountObjectPtr<DataArrayDouble> ret=DataArrayDouble::Pow(self->getArray(),a);
4203               MEDCouplingAutoRefCountObjectPtr<MEDCouplingFieldDouble> ret2=self->clone(false);
4204               ret2->setArray(ret);
4205               return ret2.retn();
4206             }
4207           case 3:
4208             {
4209               if(!self->getArray())
4210                 throw INTERP_KERNEL::Exception(msg2);
4211               MEDCouplingAutoRefCountObjectPtr<DataArrayDouble> aaa=aa->buildDADouble(1,self->getNumberOfComponents());
4212               MEDCouplingAutoRefCountObjectPtr<DataArrayDouble> ret=DataArrayDouble::Pow(self->getArray(),aaa);
4213               MEDCouplingAutoRefCountObjectPtr<MEDCouplingFieldDouble> ret2=self->clone(false);
4214               ret2->setArray(ret);
4215               return ret2.retn();
4216             }
4217           case 4:
4218             {
4219               if(!self->getArray())
4220                 throw INTERP_KERNEL::Exception(msg2);
4221               MEDCouplingAutoRefCountObjectPtr<DataArrayDouble> aaa=DataArrayDouble::New(); aaa->useArray(&bb[0],false,CPP_DEALLOC,1,(int)bb.size());
4222               MEDCouplingAutoRefCountObjectPtr<DataArrayDouble> ret=DataArrayDouble::Pow(self->getArray(),aaa);
4223               MEDCouplingAutoRefCountObjectPtr<MEDCouplingFieldDouble> ret2=self->clone(false);
4224               ret2->setArray(ret);
4225               return ret2.retn();
4226             }
4227           default:
4228             { throw INTERP_KERNEL::Exception(msg); }
4229           }
4230       }
4231
4232       MEDCouplingFieldDouble *__neg__() const throw(INTERP_KERNEL::Exception)
4233       {
4234         return self->negate();
4235       }
4236
4237       PyObject *___iadd___(PyObject *trueSelf, PyObject *obj) throw(INTERP_KERNEL::Exception)
4238       {
4239         const char msg[]="Unexpected situation in MEDCouplingFieldDouble.__iadd__ ! Expecting a not null MEDCouplingFieldDouble or DataArrayDouble or DataArrayDoubleTuple instance, or a list of double, or a double.";
4240         const char msg2[]="in MEDCouplingFieldDouble.__iadd__ : self field has no Array of values set !";
4241         void *argp;
4242         //
4243         if(SWIG_IsOK(SWIG_ConvertPtr(obj,&argp,SWIGTYPE_p_ParaMEDMEM__MEDCouplingFieldDouble,0|0)))
4244           {
4245             MEDCouplingFieldDouble *other=reinterpret_cast< ParaMEDMEM::MEDCouplingFieldDouble * >(argp);
4246             if(other)
4247               {
4248                 *self+=*other;
4249                 Py_XINCREF(trueSelf);
4250                 return trueSelf;
4251               }
4252             else
4253               throw INTERP_KERNEL::Exception(msg);
4254           }
4255         //
4256         double val;
4257         DataArrayDouble *a;
4258         DataArrayDoubleTuple *aa;
4259         std::vector<double> bb;
4260         int sw;
4261         convertObjToPossibleCpp5(obj,sw,val,a,aa,bb);
4262         switch(sw)
4263           {
4264           case 1:
4265             {
4266               if(!self->getArray())
4267                 throw INTERP_KERNEL::Exception(msg2);
4268               self->getArray()->applyLin(1.,val);
4269               Py_XINCREF(trueSelf);
4270               return trueSelf;
4271             }
4272           case 2:
4273             {
4274               MEDCouplingAutoRefCountObjectPtr<MEDCouplingFieldDouble> ret2=self->clone(false);
4275               ret2->setArray(a);
4276               *self+=*ret2;
4277               Py_XINCREF(trueSelf);
4278               return trueSelf;
4279             }
4280           case 3:
4281             {
4282               MEDCouplingAutoRefCountObjectPtr<DataArrayDouble> aaa=aa->buildDADouble(1,self->getNumberOfComponents());
4283               MEDCouplingAutoRefCountObjectPtr<MEDCouplingFieldDouble> ret2=self->clone(false);
4284               ret2->setArray(aaa);
4285               *self+=*ret2;
4286               Py_XINCREF(trueSelf);
4287               return trueSelf;
4288             }
4289           case 4:
4290             {
4291               if(!self->getArray())
4292                 throw INTERP_KERNEL::Exception(msg2);
4293               MEDCouplingAutoRefCountObjectPtr<DataArrayDouble> aaa=DataArrayDouble::New(); aaa->useArray(&bb[0],false,CPP_DEALLOC,1,(int)bb.size());
4294               self->getArray()->addEqual(aaa);
4295               Py_XINCREF(trueSelf);
4296               return trueSelf;
4297             }
4298           default:
4299             { throw INTERP_KERNEL::Exception(msg); }
4300           }
4301       }
4302
4303       PyObject *___isub___(PyObject *trueSelf, PyObject *obj) throw(INTERP_KERNEL::Exception)
4304       {
4305         const char msg[]="Unexpected situation in MEDCouplingFieldDouble.__isub__ ! Expecting a not null MEDCouplingFieldDouble or DataArrayDouble or DataArrayDoubleTuple instance, or a list of double, or a double.";
4306         const char msg2[]="in MEDCouplingFieldDouble.__isub__ : self field has no Array of values set !";
4307         void *argp;
4308         //
4309         if(SWIG_IsOK(SWIG_ConvertPtr(obj,&argp,SWIGTYPE_p_ParaMEDMEM__MEDCouplingFieldDouble,0|0)))
4310           {
4311             MEDCouplingFieldDouble *other=reinterpret_cast< ParaMEDMEM::MEDCouplingFieldDouble * >(argp);
4312             if(other)
4313               {
4314                 *self-=*other;
4315                 Py_XINCREF(trueSelf);
4316                 return trueSelf;
4317               }
4318             else
4319               throw INTERP_KERNEL::Exception(msg);
4320           }
4321         //
4322         double val;
4323         DataArrayDouble *a;
4324         DataArrayDoubleTuple *aa;
4325         std::vector<double> bb;
4326         int sw;
4327         convertObjToPossibleCpp5(obj,sw,val,a,aa,bb);
4328         switch(sw)
4329           {
4330           case 1:
4331             {
4332               if(!self->getArray())
4333                 throw INTERP_KERNEL::Exception(msg2);
4334               self->getArray()->applyLin(1.,-val);
4335               Py_XINCREF(trueSelf);
4336               return trueSelf;
4337             }
4338           case 2:
4339             {
4340               MEDCouplingAutoRefCountObjectPtr<MEDCouplingFieldDouble> ret2=self->clone(false);
4341               ret2->setArray(a);
4342               *self-=*ret2;
4343               Py_XINCREF(trueSelf);
4344               return trueSelf;
4345             }
4346           case 3:
4347             {
4348               MEDCouplingAutoRefCountObjectPtr<DataArrayDouble> aaa=aa->buildDADouble(1,self->getNumberOfComponents());
4349               MEDCouplingAutoRefCountObjectPtr<MEDCouplingFieldDouble> ret2=self->clone(false);
4350               ret2->setArray(aaa);
4351               *self-=*ret2;
4352               Py_XINCREF(trueSelf);
4353               return trueSelf;
4354             }
4355           case 4:
4356             {
4357               if(!self->getArray())
4358                 throw INTERP_KERNEL::Exception(msg2);
4359               MEDCouplingAutoRefCountObjectPtr<DataArrayDouble> aaa=DataArrayDouble::New(); aaa->useArray(&bb[0],false,CPP_DEALLOC,1,(int)bb.size());
4360               self->getArray()->substractEqual(aaa);
4361               Py_XINCREF(trueSelf);
4362               return trueSelf;
4363             }
4364           default:
4365             { throw INTERP_KERNEL::Exception(msg); }
4366           }
4367       }
4368
4369       PyObject *___imul___(PyObject *trueSelf, PyObject *obj) throw(INTERP_KERNEL::Exception)
4370       {
4371         const char msg[]="Unexpected situation in MEDCouplingFieldDouble.__imul__ ! Expecting a not null MEDCouplingFieldDouble or DataArrayDouble or DataArrayDoubleTuple instance, or a list of double, or a double.";
4372         const char msg2[]="in MEDCouplingFieldDouble.__imul__ : self field has no Array of values set !";
4373         void *argp;
4374         //
4375         if(SWIG_IsOK(SWIG_ConvertPtr(obj,&argp,SWIGTYPE_p_ParaMEDMEM__MEDCouplingFieldDouble,0|0)))
4376           {
4377             MEDCouplingFieldDouble *other=reinterpret_cast< ParaMEDMEM::MEDCouplingFieldDouble * >(argp);
4378             if(other)
4379               {
4380                 *self*=*other;
4381                 Py_XINCREF(trueSelf);
4382                 return trueSelf;
4383               }
4384             else
4385               throw INTERP_KERNEL::Exception(msg);
4386           }
4387         //
4388         double val;
4389         DataArrayDouble *a;
4390         DataArrayDoubleTuple *aa;
4391         std::vector<double> bb;
4392         int sw;
4393         convertObjToPossibleCpp5(obj,sw,val,a,aa,bb);
4394         switch(sw)
4395           {
4396           case 1:
4397             {
4398               if(!self->getArray())
4399                 throw INTERP_KERNEL::Exception(msg2);
4400               self->getArray()->applyLin(val,0);
4401               Py_XINCREF(trueSelf);
4402               return trueSelf;
4403             }
4404           case 2:
4405             {
4406               MEDCouplingAutoRefCountObjectPtr<MEDCouplingFieldDouble> ret2=self->clone(false);
4407               ret2->setArray(a);
4408               *self*=*ret2;
4409               Py_XINCREF(trueSelf);
4410               return trueSelf;
4411             }
4412           case 3:
4413             {
4414               MEDCouplingAutoRefCountObjectPtr<DataArrayDouble> aaa=aa->buildDADouble(1,self->getNumberOfComponents());
4415               MEDCouplingAutoRefCountObjectPtr<MEDCouplingFieldDouble> ret2=self->clone(false);
4416               ret2->setArray(aaa);
4417               *self*=*ret2;
4418               Py_XINCREF(trueSelf);
4419               return trueSelf;
4420             }
4421           case 4:
4422             {
4423               if(!self->getArray())
4424                 throw INTERP_KERNEL::Exception(msg2);
4425               MEDCouplingAutoRefCountObjectPtr<DataArrayDouble> aaa=DataArrayDouble::New(); aaa->useArray(&bb[0],false,CPP_DEALLOC,1,(int)bb.size());
4426               self->getArray()->multiplyEqual(aaa);
4427               Py_XINCREF(trueSelf);
4428               return trueSelf;
4429             }
4430           default:
4431             { throw INTERP_KERNEL::Exception(msg); }
4432           }
4433       }
4434
4435       PyObject *___idiv___(PyObject *trueSelf, PyObject *obj) throw(INTERP_KERNEL::Exception)
4436       {
4437         const char msg[]="Unexpected situation in MEDCouplingFieldDouble.__idiv__ ! Expecting a not null MEDCouplingFieldDouble or DataArrayDouble or DataArrayDoubleTuple instance, or a list of double, or a double.";
4438         const char msg2[]="in MEDCouplingFieldDouble.__idiv__ : self field has no Array of values set !";
4439         void *argp;
4440         //
4441         if(SWIG_IsOK(SWIG_ConvertPtr(obj,&argp,SWIGTYPE_p_ParaMEDMEM__MEDCouplingFieldDouble,0|0)))
4442           {
4443             MEDCouplingFieldDouble *other=reinterpret_cast< ParaMEDMEM::MEDCouplingFieldDouble * >(argp);
4444             if(other)
4445               {
4446                 *self/=*other;
4447                 Py_XINCREF(trueSelf);
4448                 return trueSelf;
4449               }
4450             else
4451               throw INTERP_KERNEL::Exception(msg);
4452           }
4453         //
4454         double val;
4455         DataArrayDouble *a;
4456         DataArrayDoubleTuple *aa;
4457         std::vector<double> bb;
4458         int sw;
4459         convertObjToPossibleCpp5(obj,sw,val,a,aa,bb);
4460         switch(sw)
4461           {
4462           case 1:
4463             {
4464               if(val==0.)
4465                 throw INTERP_KERNEL::Exception("MEDCouplingFieldDouble.__idiv__ : trying to divide by zero !");
4466               if(!self->getArray())
4467                 throw INTERP_KERNEL::Exception(msg2);
4468               self->getArray()->applyLin(1./val,0);
4469               Py_XINCREF(trueSelf);
4470               return trueSelf;
4471             }
4472           case 2:
4473             {
4474               MEDCouplingAutoRefCountObjectPtr<MEDCouplingFieldDouble> ret2=self->clone(false);
4475               ret2->setArray(a);
4476               *self/=*ret2;
4477               Py_XINCREF(trueSelf);
4478               return trueSelf;
4479             }
4480           case 3:
4481             {
4482               MEDCouplingAutoRefCountObjectPtr<DataArrayDouble> aaa=aa->buildDADouble(1,self->getNumberOfComponents());
4483               MEDCouplingAutoRefCountObjectPtr<MEDCouplingFieldDouble> ret2=self->clone(false);
4484               ret2->setArray(aaa);
4485               *self/=*ret2;
4486               Py_XINCREF(trueSelf);
4487               return trueSelf;
4488             }
4489           case 4:
4490             {
4491               if(!self->getArray())
4492                 throw INTERP_KERNEL::Exception(msg2);
4493               MEDCouplingAutoRefCountObjectPtr<DataArrayDouble> aaa=DataArrayDouble::New(); aaa->useArray(&bb[0],false,CPP_DEALLOC,1,(int)bb.size());
4494               self->getArray()->divideEqual(aaa);
4495               Py_XINCREF(trueSelf);
4496               return trueSelf;
4497             }
4498           default:
4499             { throw INTERP_KERNEL::Exception(msg); }
4500           }
4501       }
4502
4503       PyObject *___ipow___(PyObject *trueSelf, PyObject *obj) throw(INTERP_KERNEL::Exception)
4504       {
4505         const char msg[]="Unexpected situation in MEDCouplingFieldDouble.__ipow__ ! Expecting a not null MEDCouplingFieldDouble or DataArrayDouble or DataArrayDoubleTuple instance, or a list of double, or a double.";
4506         const char msg2[]="in MEDCouplingFieldDouble.__ipow__ : self field has no Array of values set !";
4507         void *argp;
4508         //
4509         if(SWIG_IsOK(SWIG_ConvertPtr(obj,&argp,SWIGTYPE_p_ParaMEDMEM__MEDCouplingFieldDouble,0|0)))
4510           {
4511             MEDCouplingFieldDouble *other=reinterpret_cast< ParaMEDMEM::MEDCouplingFieldDouble * >(argp);
4512             if(other)
4513               {
4514                 *self^=*other;
4515                 Py_XINCREF(trueSelf);
4516                 return trueSelf;
4517               }
4518             else
4519               throw INTERP_KERNEL::Exception(msg);
4520           }
4521         //
4522         double val;
4523         DataArrayDouble *a;
4524         DataArrayDoubleTuple *aa;
4525         std::vector<double> bb;
4526         int sw;
4527         convertObjToPossibleCpp5(obj,sw,val,a,aa,bb);
4528         switch(sw)
4529           {
4530           case 1:
4531             {
4532               if(!self->getArray())
4533                 throw INTERP_KERNEL::Exception(msg2);
4534               self->getArray()->applyPow(val);
4535               Py_XINCREF(trueSelf);
4536               return trueSelf;
4537             }
4538           case 2:
4539             {
4540               MEDCouplingAutoRefCountObjectPtr<MEDCouplingFieldDouble> ret2=self->clone(false);
4541               ret2->setArray(a);
4542               *self^=*ret2;
4543               Py_XINCREF(trueSelf);
4544               return trueSelf;
4545             }
4546           case 3:
4547             {
4548               MEDCouplingAutoRefCountObjectPtr<DataArrayDouble> aaa=aa->buildDADouble(1,self->getNumberOfComponents());
4549               MEDCouplingAutoRefCountObjectPtr<MEDCouplingFieldDouble> ret2=self->clone(false);
4550               ret2->setArray(aaa);
4551               *self^=*ret2;
4552               Py_XINCREF(trueSelf);
4553               return trueSelf;
4554             }
4555           case 4:
4556             {
4557               if(!self->getArray())
4558                 throw INTERP_KERNEL::Exception(msg2);
4559               MEDCouplingAutoRefCountObjectPtr<DataArrayDouble> aaa=DataArrayDouble::New(); aaa->useArray(&bb[0],false,CPP_DEALLOC,1,(int)bb.size());
4560               self->getArray()->powEqual(aaa);
4561               Py_XINCREF(trueSelf);
4562               return trueSelf;
4563             }
4564           default:
4565             { throw INTERP_KERNEL::Exception(msg); }
4566           }
4567       }
4568
4569       static MEDCouplingFieldDouble *MergeFields(PyObject *li) throw(INTERP_KERNEL::Exception)
4570       {
4571         std::vector<const MEDCouplingFieldDouble *> tmp;
4572         convertFromPyObjVectorOfObj<const ParaMEDMEM::MEDCouplingFieldDouble *>(li,SWIGTYPE_p_ParaMEDMEM__MEDCouplingFieldDouble,"MEDCouplingFieldDouble",tmp);
4573         return MEDCouplingFieldDouble::MergeFields(tmp);
4574       }
4575
4576       static void WriteVTK(const char *fileName, PyObject *li) throw(INTERP_KERNEL::Exception)
4577       {
4578         std::vector<const MEDCouplingFieldDouble *> tmp;
4579         convertFromPyObjVectorOfObj<const ParaMEDMEM::MEDCouplingFieldDouble *>(li,SWIGTYPE_p_ParaMEDMEM__MEDCouplingFieldDouble,"MEDCouplingFieldDouble",tmp);
4580         MEDCouplingFieldDouble::WriteVTK(fileName,tmp);
4581       }
4582     }
4583   };
4584
4585   class MEDCouplingMultiFields : public RefCountObject, public TimeLabel
4586   {
4587   public:
4588     int getNumberOfFields() const;
4589     MEDCouplingMultiFields *deepCpy() const;
4590     virtual std::string simpleRepr() const throw(INTERP_KERNEL::Exception);
4591     virtual std::string advancedRepr() const throw(INTERP_KERNEL::Exception);
4592     virtual bool isEqual(const MEDCouplingMultiFields *other, double meshPrec, double valsPrec) const;
4593     virtual bool isEqualWithoutConsideringStr(const MEDCouplingMultiFields *other, double meshPrec, double valsPrec) const;
4594     virtual void checkCoherency() const throw(INTERP_KERNEL::Exception);
4595     %extend
4596        {
4597          std::string __str__() const throw(INTERP_KERNEL::Exception)
4598          {
4599            return self->simpleRepr();
4600          }
4601          static MEDCouplingMultiFields *New(PyObject *li) throw(INTERP_KERNEL::Exception)
4602          {
4603            std::vector<const ParaMEDMEM::MEDCouplingFieldDouble *> tmp;
4604            convertFromPyObjVectorOfObj<const ParaMEDMEM::MEDCouplingFieldDouble *>(li,SWIGTYPE_p_ParaMEDMEM__MEDCouplingFieldDouble,"MEDCouplingFieldDouble",tmp);
4605            int sz=tmp.size();
4606            std::vector<MEDCouplingFieldDouble *> fs(sz);
4607            for(int i=0;i<sz;i++)
4608              fs[i]=const_cast<MEDCouplingFieldDouble *>(tmp[i]);
4609            return MEDCouplingMultiFields::New(fs);
4610          }
4611          MEDCouplingMultiFields(PyObject *li) throw(INTERP_KERNEL::Exception)
4612          {
4613            std::vector<const ParaMEDMEM::MEDCouplingFieldDouble *> tmp;
4614            convertFromPyObjVectorOfObj<const ParaMEDMEM::MEDCouplingFieldDouble *>(li,SWIGTYPE_p_ParaMEDMEM__MEDCouplingFieldDouble,"MEDCouplingFieldDouble",tmp);
4615            int sz=tmp.size();
4616            std::vector<MEDCouplingFieldDouble *> fs(sz);
4617            for(int i=0;i<sz;i++)
4618              fs[i]=const_cast<MEDCouplingFieldDouble *>(tmp[i]);
4619            return MEDCouplingMultiFields::New(fs);
4620          }
4621          PyObject *getFields() const
4622          {
4623            std::vector<const MEDCouplingFieldDouble *> fields=self->getFields();
4624            int sz=fields.size();
4625            PyObject *res = PyList_New(sz);
4626            for(int i=0;i<sz;i++)
4627              {
4628                if(fields[i])
4629                  {
4630                    fields[i]->incrRef();
4631                    PyList_SetItem(res,i,SWIG_NewPointerObj(SWIG_as_voidptr(fields[i]),SWIGTYPE_p_ParaMEDMEM__MEDCouplingFieldDouble, SWIG_POINTER_OWN | 0 ));
4632                  }
4633                else
4634                  {
4635                    PyList_SetItem(res,i,SWIG_NewPointerObj(SWIG_as_voidptr(0),SWIGTYPE_p_ParaMEDMEM__MEDCouplingFieldDouble, 0 ));
4636                  }
4637              }
4638            return res;
4639          }
4640          PyObject *getFieldAtPos(int id) const throw(INTERP_KERNEL::Exception)
4641          {
4642            const MEDCouplingFieldDouble *ret=self->getFieldAtPos(id);
4643            if(ret)
4644              {
4645                ret->incrRef();
4646                return SWIG_NewPointerObj(SWIG_as_voidptr(ret),SWIGTYPE_p_ParaMEDMEM__MEDCouplingFieldDouble, SWIG_POINTER_OWN | 0 );
4647              }
4648            else
4649              return SWIG_NewPointerObj(SWIG_as_voidptr(0),SWIGTYPE_p_ParaMEDMEM__MEDCouplingFieldDouble, 0 );
4650          }
4651          PyObject *getMeshes() const throw(INTERP_KERNEL::Exception)
4652          {
4653            std::vector<MEDCouplingMesh *> ms=self->getMeshes();
4654            int sz=ms.size();
4655            PyObject *res = PyList_New(sz);
4656            for(int i=0;i<sz;i++)
4657              {
4658                if(ms[i])
4659                  {
4660                    ms[i]->incrRef();
4661                    PyList_SetItem(res,i,convertMesh(ms[i], SWIG_POINTER_OWN | 0 ));
4662                  }
4663                else
4664                  {
4665                    PyList_SetItem(res,i,SWIG_NewPointerObj(SWIG_as_voidptr(0),SWIGTYPE_p_ParaMEDMEM__MEDCouplingUMesh, 0 ));
4666                  }
4667              }
4668            return res;
4669          }
4670          PyObject *getDifferentMeshes() const throw(INTERP_KERNEL::Exception)
4671          {
4672            std::vector<int> refs;
4673            std::vector<MEDCouplingMesh *> ms=self->getDifferentMeshes(refs);
4674            int sz=ms.size();
4675            PyObject *res = PyList_New(sz);
4676            for(int i=0;i<sz;i++)
4677              {
4678                if(ms[i])
4679                  {
4680                    ms[i]->incrRef();
4681                    PyList_SetItem(res,i,convertMesh(ms[i], SWIG_POINTER_OWN | 0 ));
4682                  }
4683                else
4684                  {
4685                    PyList_SetItem(res,i,SWIG_NewPointerObj(SWIG_as_voidptr(0),SWIGTYPE_p_ParaMEDMEM__MEDCouplingUMesh, 0 ));
4686                  }
4687              }
4688            //
4689            PyObject *ret=PyTuple_New(2);
4690            PyTuple_SetItem(ret,0,res);
4691            PyTuple_SetItem(ret,1,convertIntArrToPyList2(refs));
4692            return ret;
4693          }
4694          PyObject *getArrays() const throw(INTERP_KERNEL::Exception)
4695          {
4696            std::vector<DataArrayDouble *> ms=self->getArrays();
4697            int sz=ms.size();
4698            PyObject *res = PyList_New(sz);
4699            for(int i=0;i<sz;i++)
4700              {
4701                if(ms[i])
4702                  {
4703                    ms[i]->incrRef();
4704                    PyList_SetItem(res,i,SWIG_NewPointerObj(SWIG_as_voidptr(ms[i]),SWIGTYPE_p_ParaMEDMEM__DataArrayDouble, SWIG_POINTER_OWN | 0 ));
4705                  }
4706                else
4707                  {
4708                    PyList_SetItem(res,i,SWIG_NewPointerObj(SWIG_as_voidptr(0),SWIGTYPE_p_ParaMEDMEM__DataArrayDouble, 0 ));
4709                  }
4710              }
4711            return res;
4712          }
4713          PyObject *getDifferentArrays() const throw(INTERP_KERNEL::Exception)
4714          {
4715            std::vector< std::vector<int> > refs;
4716            std::vector<DataArrayDouble *> ms=self->getDifferentArrays(refs);
4717            int sz=ms.size();
4718            PyObject *res = PyList_New(sz);
4719            PyObject *res2 = PyList_New(sz);
4720            for(int i=0;i<sz;i++)
4721              {
4722                if(ms[i])
4723                  {
4724                    ms[i]->incrRef();
4725                    PyList_SetItem(res,i,SWIG_NewPointerObj(SWIG_as_voidptr(ms[i]),SWIGTYPE_p_ParaMEDMEM__DataArrayDouble, SWIG_POINTER_OWN | 0 ));
4726                  }
4727                else
4728                  {
4729                    PyList_SetItem(res,i,SWIG_NewPointerObj(SWIG_as_voidptr(0),SWIGTYPE_p_ParaMEDMEM__DataArrayDouble, 0 ));
4730                  }
4731                PyList_SetItem(res2,i,convertIntArrToPyList2(refs[i]));
4732              }
4733            //
4734            PyObject *ret=PyTuple_New(2);
4735            PyTuple_SetItem(ret,0,res);
4736            PyTuple_SetItem(ret,1,res2);
4737            return ret;
4738          }
4739        }
4740   };
4741   
4742   class MEDCouplingDefinitionTime
4743   {
4744   public:
4745     MEDCouplingDefinitionTime();
4746     void assign(const MEDCouplingDefinitionTime& other);
4747     bool isEqual(const MEDCouplingDefinitionTime& other) const;
4748     double getTimeResolution() const;
4749     std::vector<double> getHotSpotsTime() const;
4750     %extend
4751       {
4752         std::string __str__() const throw(INTERP_KERNEL::Exception)
4753           {
4754             std::ostringstream oss;
4755             self->appendRepr(oss);
4756             return oss.str();
4757           }
4758
4759         PyObject *getIdsOnTimeRight(double tm) const throw(INTERP_KERNEL::Exception)
4760         {
4761           int meshId,arrId,arrIdInField,fieldId;
4762           self->getIdsOnTimeRight(tm,meshId,arrId,arrIdInField,fieldId);
4763           PyObject *res=PyList_New(4);
4764           PyList_SetItem(res,0,PyInt_FromLong(meshId));
4765           PyList_SetItem(res,1,PyInt_FromLong(arrId));
4766           PyList_SetItem(res,2,PyInt_FromLong(arrIdInField));
4767           PyList_SetItem(res,3,PyInt_FromLong(fieldId));
4768           return res;
4769         }
4770
4771         PyObject *getIdsOnTimeLeft(double tm) const throw(INTERP_KERNEL::Exception)
4772         {
4773           int meshId,arrId,arrIdInField,fieldId;
4774           self->getIdsOnTimeLeft(tm,meshId,arrId,arrIdInField,fieldId);
4775           PyObject *res=PyList_New(4);
4776           PyList_SetItem(res,0,PyInt_FromLong(meshId));
4777           PyList_SetItem(res,1,PyInt_FromLong(arrId));
4778           PyList_SetItem(res,2,PyInt_FromLong(arrIdInField));
4779           PyList_SetItem(res,3,PyInt_FromLong(fieldId));
4780           return res;
4781         }
4782       }
4783   };
4784
4785   class MEDCouplingFieldOverTime : public MEDCouplingMultiFields
4786   {
4787   public:
4788     double getTimeTolerance() const throw(INTERP_KERNEL::Exception);
4789     MEDCouplingDefinitionTime getDefinitionTimeZone() const;
4790     
4791     %extend
4792       {
4793         MEDCouplingFieldOverTime(PyObject *li) throw(INTERP_KERNEL::Exception)
4794           {
4795             std::vector<const ParaMEDMEM::MEDCouplingFieldDouble *> tmp;
4796             convertFromPyObjVectorOfObj<const ParaMEDMEM::MEDCouplingFieldDouble *>(li,SWIGTYPE_p_ParaMEDMEM__MEDCouplingFieldDouble,"MEDCouplingFieldDouble",tmp);
4797             int sz=tmp.size();
4798             std::vector<MEDCouplingFieldDouble *> fs(sz);
4799             for(int i=0;i<sz;i++)
4800               fs[i]=const_cast<MEDCouplingFieldDouble *>(tmp[i]);
4801             return MEDCouplingFieldOverTime::New(fs);
4802           }
4803         std::string __str__() const throw(INTERP_KERNEL::Exception)
4804           {
4805             return self->simpleRepr();
4806           }
4807         static MEDCouplingFieldOverTime *New(PyObject *li) throw(INTERP_KERNEL::Exception)
4808         {
4809           std::vector<const ParaMEDMEM::MEDCouplingFieldDouble *> tmp;
4810           convertFromPyObjVectorOfObj<const ParaMEDMEM::MEDCouplingFieldDouble *>(li,SWIGTYPE_p_ParaMEDMEM__MEDCouplingFieldDouble,"MEDCouplingFieldDouble",tmp);
4811            int sz=tmp.size();
4812            std::vector<MEDCouplingFieldDouble *> fs(sz);
4813            for(int i=0;i<sz;i++)
4814              fs[i]=const_cast<MEDCouplingFieldDouble *>(tmp[i]);
4815            return MEDCouplingFieldOverTime::New(fs);
4816          }
4817       }
4818   };
4819 }
4820
4821 %pythoncode %{
4822 import os
4823 __filename=os.environ.get('PYTHONSTARTUP')
4824 if __filename and os.path.isfile(__filename):
4825   execfile(__filename)
4826   pass
4827 %}