Salome HOME
Merge branch 'V9_2_2_BR'
authorvsr <vsr@opencascade.com>
Tue, 5 Mar 2019 06:34:31 +0000 (09:34 +0300)
committervsr <vsr@opencascade.com>
Tue, 5 Mar 2019 06:34:31 +0000 (09:34 +0300)
760 files changed:
CMakeLists.txt
MEDCouplingConfig.cmake.in
MEDCoupling_version.h.in
adm_local/CMakeLists.txt
adm_local/unix/CMakeLists.txt
adm_local/unix/config_files/CMakeLists.txt
adm_local/unix/config_files/check_MEDCOUPLING.m4
adm_local/unix/config_files/check_parmetis.m4
adm_local/unix/config_files/check_scotch.m4
doc/CMakeLists.txt
doc/developer/CMakeLists.txt
doc/developer/doxygen/BuildPyExamplesFromCPP.py
doc/developer/doxygen/CMakeLists.txt
doc/developer/doxygen/Doxyfile_med_dev.in
doc/developer/doxygen/doxfiles/reference/interpolation/interptheory.dox
doc/developer/doxygen/doxy2swig/doxy2swig.cmake
doc/developer/doxygen/fakesources/MEDCouplingField.C
doc/developer/doxygen/fakesources/MEDCouplingFieldDouble.C
doc/developer/doxygen/fakesources/MEDCouplingMemArray.C
doc/developer/doxygen/fakesources/MEDCouplingMesh.C
doc/developer/doxygen/fakesources/MEDCouplingPointSet.C
doc/developer/doxygen/fakesources/MEDCouplingUMesh.C
doc/developer/doxygen/fakesources/MEDFileField.C
doc/developer/doxygen/fakesources/MEDFileMesh.C
doc/developer/doxygen/fakesources/namespaces.C
doc/developer/doxygen/figures/NonCoincident.png [changed mode: 0755->0644]
doc/developer/doxygen/figures/connectivity_arrays.png [changed mode: 0755->0644]
doc/developer/doxygen/figures/connectivity_example.png [changed mode: 0755->0644]
doc/developer/doxygen/figures/grid_example.png [changed mode: 0755->0644]
doc/developer/doxygen/figures/polygon_connectivity.png [changed mode: 0755->0644]
doc/developer/doxygen/figures/polyhedron_connectivity.png [changed mode: 0755->0644]
doc/developer/doxygen/figures/projectionHQ.png [changed mode: 0755->0644]
doc/developer/doxygen/figures/source_field.png [changed mode: 0755->0644]
doc/developer/doxygen/figures/source_mesh.png [changed mode: 0755->0644]
doc/developer/doxygen/figures/target_field.png [changed mode: 0755->0644]
doc/developer/doxygen/figures/target_mesh.png [changed mode: 0755->0644]
doc/developer/doxygen/images/head.png [changed mode: 0755->0644]
doc/developer/doxygen/static/footer.html [changed mode: 0755->0644]
doc/developer/doxygen/static/header.html.in [changed mode: 0755->0644]
doc/tutorial/CMakeLists.txt
doc/user/CMakeLists.txt
doc/user/templates/layout.html
resources/CMakeLists.txt
resources/castem17_result_ascii.sauv [new file with mode: 0644]
resources/castem17_result_xdr.sauv [new file with mode: 0644]
resources/dev/mc_suppr_valgrind [new file with mode: 0644]
src/CMakeLists.txt
src/CTestTestfileInstall.cmake
src/ICoCo/ICoCoField.cxx
src/ICoCo/ICoCoField.hxx
src/ICoCo/ICoCoMEDField.cxx
src/ICoCo/ICoCoMEDField.hxx
src/INTERP_KERNEL/BBTree.txx
src/INTERP_KERNEL/BBTreeDst.txx
src/INTERP_KERNEL/BBTreePts.txx
src/INTERP_KERNEL/Barycentric3DIntersectorP1P1.hxx
src/INTERP_KERNEL/Barycentric3DIntersectorP1P1.txx
src/INTERP_KERNEL/Bases/InterpKernelAssert.hxx
src/INTERP_KERNEL/Bases/InterpKernelAutoPtr.hxx
src/INTERP_KERNEL/Bases/InterpKernelException.cxx
src/INTERP_KERNEL/Bases/InterpKernelException.hxx
src/INTERP_KERNEL/Bases/InterpKernelHashFun.hxx
src/INTERP_KERNEL/Bases/InterpKernelHashMap.hxx
src/INTERP_KERNEL/Bases/InterpKernelHashTable.hxx
src/INTERP_KERNEL/Bases/InterpKernelStlExt.hxx
src/INTERP_KERNEL/Bases/NormalizedGeometricTypes
src/INTERP_KERNEL/Bases/NormalizedUnstructuredMesh.hxx
src/INTERP_KERNEL/BoundingBox.cxx
src/INTERP_KERNEL/BoundingBox.hxx
src/INTERP_KERNEL/BoxSplittingOptions.cxx
src/INTERP_KERNEL/BoxSplittingOptions.hxx
src/INTERP_KERNEL/CMakeLists.txt
src/INTERP_KERNEL/CellModel.cxx
src/INTERP_KERNEL/CellModel.hxx
src/INTERP_KERNEL/ConvexIntersector.hxx
src/INTERP_KERNEL/ConvexIntersector.txx
src/INTERP_KERNEL/CurveIntersector.hxx
src/INTERP_KERNEL/CurveIntersector.txx
src/INTERP_KERNEL/CurveIntersectorP0P0.hxx
src/INTERP_KERNEL/CurveIntersectorP0P0.txx
src/INTERP_KERNEL/CurveIntersectorP0P1.hxx
src/INTERP_KERNEL/CurveIntersectorP0P1.txx
src/INTERP_KERNEL/CurveIntersectorP1P0.hxx
src/INTERP_KERNEL/CurveIntersectorP1P0.txx
src/INTERP_KERNEL/CurveIntersectorP1P1.hxx
src/INTERP_KERNEL/CurveIntersectorP1P1.txx
src/INTERP_KERNEL/CurveIntersectorP1P1PL.hxx
src/INTERP_KERNEL/CurveIntersectorP1P1PL.txx
src/INTERP_KERNEL/DiameterCalculator.cxx
src/INTERP_KERNEL/DiameterCalculator.hxx
src/INTERP_KERNEL/DirectedBoundingBox.cxx
src/INTERP_KERNEL/DirectedBoundingBox.hxx
src/INTERP_KERNEL/ExprEval/InterpKernelAsmX86.cxx
src/INTERP_KERNEL/ExprEval/InterpKernelAsmX86.hxx
src/INTERP_KERNEL/ExprEval/InterpKernelExprParser.cxx
src/INTERP_KERNEL/ExprEval/InterpKernelExprParser.hxx
src/INTERP_KERNEL/ExprEval/InterpKernelFunction.cxx
src/INTERP_KERNEL/ExprEval/InterpKernelFunction.hxx
src/INTERP_KERNEL/ExprEval/InterpKernelUnit.cxx
src/INTERP_KERNEL/ExprEval/InterpKernelUnit.hxx
src/INTERP_KERNEL/ExprEval/InterpKernelValue.cxx
src/INTERP_KERNEL/ExprEval/InterpKernelValue.hxx
src/INTERP_KERNEL/GaussPoints/CleanUpGauss.py
src/INTERP_KERNEL/GaussPoints/InterpKernelGaussCoords.cxx
src/INTERP_KERNEL/GaussPoints/InterpKernelGaussCoords.hxx
src/INTERP_KERNEL/GenMathFormulae.hxx
src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DAbstractEdge.cxx
src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DAbstractEdge.hxx
src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DBounds.cxx
src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DBounds.hxx
src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DComposedEdge.cxx
src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DComposedEdge.hxx
src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DEdge.cxx
src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DEdge.hxx
src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DEdge.txx
src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DEdgeArcCircle.cxx
src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DEdgeArcCircle.hxx
src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DEdgeInfLin.cxx
src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DEdgeInfLin.hxx
src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DEdgeLin.cxx
src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DEdgeLin.hxx
src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DElementaryEdge.cxx
src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DElementaryEdge.hxx
src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DNode.cxx
src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DNode.hxx
src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DPrecision.cxx
src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DPrecision.hxx
src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DQuadraticPolygon.cxx
src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DQuadraticPolygon.hxx
src/INTERP_KERNEL/Geometric2DIntersector.hxx
src/INTERP_KERNEL/Geometric2DIntersector.txx
src/INTERP_KERNEL/INTERPKERNELDefines.hxx
src/INTERP_KERNEL/IntegralUniformIntersector.hxx
src/INTERP_KERNEL/IntegralUniformIntersector.txx
src/INTERP_KERNEL/InterpKernelCellSimplify.cxx
src/INTERP_KERNEL/InterpKernelCellSimplify.hxx
src/INTERP_KERNEL/InterpKernelMatrix.hxx
src/INTERP_KERNEL/InterpKernelMatrixTools.cxx
src/INTERP_KERNEL/InterpKernelMatrixTools.hxx
src/INTERP_KERNEL/InterpKernelMeshQuality.cxx
src/INTERP_KERNEL/InterpKernelMeshQuality.hxx
src/INTERP_KERNEL/InterpKernelUtilities.hxx
src/INTERP_KERNEL/Interpolation.hxx
src/INTERP_KERNEL/Interpolation.txx
src/INTERP_KERNEL/Interpolation1D.hxx
src/INTERP_KERNEL/Interpolation1D.txx
src/INTERP_KERNEL/Interpolation1D0D.cxx
src/INTERP_KERNEL/Interpolation1D0D.hxx
src/INTERP_KERNEL/Interpolation1D0D.txx
src/INTERP_KERNEL/Interpolation2D.hxx
src/INTERP_KERNEL/Interpolation2D.txx
src/INTERP_KERNEL/Interpolation2D1D.hxx
src/INTERP_KERNEL/Interpolation2D1D.txx
src/INTERP_KERNEL/Interpolation2D3D.cxx
src/INTERP_KERNEL/Interpolation2D3D.hxx
src/INTERP_KERNEL/Interpolation2D3D.txx
src/INTERP_KERNEL/Interpolation2DCurve.cxx
src/INTERP_KERNEL/Interpolation2DCurve.hxx
src/INTERP_KERNEL/Interpolation3D.cxx
src/INTERP_KERNEL/Interpolation3D.hxx
src/INTERP_KERNEL/Interpolation3D.txx
src/INTERP_KERNEL/Interpolation3D1D.cxx
src/INTERP_KERNEL/Interpolation3D1D.hxx
src/INTERP_KERNEL/Interpolation3D1D.txx
src/INTERP_KERNEL/Interpolation3DSurf.cxx
src/INTERP_KERNEL/Interpolation3DSurf.hxx
src/INTERP_KERNEL/InterpolationCC.hxx
src/INTERP_KERNEL/InterpolationCC.txx
src/INTERP_KERNEL/InterpolationCU.hxx
src/INTERP_KERNEL/InterpolationCU.txx
src/INTERP_KERNEL/InterpolationCurve.hxx
src/INTERP_KERNEL/InterpolationCurve.txx
src/INTERP_KERNEL/InterpolationOptions.cxx
src/INTERP_KERNEL/InterpolationOptions.hxx
src/INTERP_KERNEL/InterpolationPlanar.hxx
src/INTERP_KERNEL/InterpolationPlanar.txx
src/INTERP_KERNEL/InterpolationUtils.hxx
src/INTERP_KERNEL/Intersector3D.hxx
src/INTERP_KERNEL/Intersector3D.txx
src/INTERP_KERNEL/Intersector3DP0P0.hxx
src/INTERP_KERNEL/Intersector3DP0P0.txx
src/INTERP_KERNEL/Intersector3DP0P1.hxx
src/INTERP_KERNEL/Intersector3DP0P1.txx
src/INTERP_KERNEL/Intersector3DP1P0.hxx
src/INTERP_KERNEL/Intersector3DP1P0.txx
src/INTERP_KERNEL/Intersector3DP1P0Bary.hxx
src/INTERP_KERNEL/Intersector3DP1P0Bary.txx
src/INTERP_KERNEL/Intersector3DP1P1.hxx
src/INTERP_KERNEL/Intersector3DP1P1.txx
src/INTERP_KERNEL/IntersectorCU.hxx
src/INTERP_KERNEL/IntersectorCU.txx
src/INTERP_KERNEL/IntersectorCU1D.hxx
src/INTERP_KERNEL/IntersectorCU1D.txx
src/INTERP_KERNEL/IntersectorCU2D.hxx
src/INTERP_KERNEL/IntersectorCU2D.txx
src/INTERP_KERNEL/IntersectorCU3D.hxx
src/INTERP_KERNEL/IntersectorCU3D.txx
src/INTERP_KERNEL/Log.hxx
src/INTERP_KERNEL/MappedBarycentric2DIntersectorP1P1.hxx
src/INTERP_KERNEL/MappedBarycentric2DIntersectorP1P1.txx
src/INTERP_KERNEL/MappedBarycentric3DIntersectorP1P1.hxx
src/INTERP_KERNEL/MappedBarycentric3DIntersectorP1P1.txx
src/INTERP_KERNEL/MeshElement.cxx
src/INTERP_KERNEL/MeshElement.hxx
src/INTERP_KERNEL/MeshElement.txx
src/INTERP_KERNEL/MeshRegion.hxx
src/INTERP_KERNEL/MeshRegion.txx
src/INTERP_KERNEL/MeshUtils.hxx
src/INTERP_KERNEL/OrientationInverter.cxx
src/INTERP_KERNEL/OrientationInverter.hxx
src/INTERP_KERNEL/Planar2D1DIntersectorP0P0.hxx
src/INTERP_KERNEL/Planar2D1DIntersectorP0P0.txx
src/INTERP_KERNEL/PlanarIntersector.hxx
src/INTERP_KERNEL/PlanarIntersector.txx
src/INTERP_KERNEL/PlanarIntersectorP0P0.hxx
src/INTERP_KERNEL/PlanarIntersectorP0P0.txx
src/INTERP_KERNEL/PlanarIntersectorP0P1.hxx
src/INTERP_KERNEL/PlanarIntersectorP0P1.txx
src/INTERP_KERNEL/PlanarIntersectorP0P1Bary.hxx
src/INTERP_KERNEL/PlanarIntersectorP0P1Bary.txx
src/INTERP_KERNEL/PlanarIntersectorP0P1PL.hxx
src/INTERP_KERNEL/PlanarIntersectorP0P1PL.txx
src/INTERP_KERNEL/PlanarIntersectorP1P0.hxx
src/INTERP_KERNEL/PlanarIntersectorP1P0.txx
src/INTERP_KERNEL/PlanarIntersectorP1P0Bary.hxx
src/INTERP_KERNEL/PlanarIntersectorP1P0Bary.txx
src/INTERP_KERNEL/PlanarIntersectorP1P0PL.hxx
src/INTERP_KERNEL/PlanarIntersectorP1P0PL.txx
src/INTERP_KERNEL/PlanarIntersectorP1P1.hxx
src/INTERP_KERNEL/PlanarIntersectorP1P1.txx
src/INTERP_KERNEL/PlanarIntersectorP1P1PL.hxx
src/INTERP_KERNEL/PlanarIntersectorP1P1PL.txx
src/INTERP_KERNEL/PointLocator2DIntersector.hxx
src/INTERP_KERNEL/PointLocator2DIntersector.txx
src/INTERP_KERNEL/PointLocator3DIntersectorP0P0.hxx
src/INTERP_KERNEL/PointLocator3DIntersectorP0P0.txx
src/INTERP_KERNEL/PointLocator3DIntersectorP0P1.hxx
src/INTERP_KERNEL/PointLocator3DIntersectorP0P1.txx
src/INTERP_KERNEL/PointLocator3DIntersectorP1P0.hxx
src/INTERP_KERNEL/PointLocator3DIntersectorP1P0.txx
src/INTERP_KERNEL/PointLocator3DIntersectorP1P1.hxx
src/INTERP_KERNEL/PointLocator3DIntersectorP1P1.txx
src/INTERP_KERNEL/PointLocatorAlgos.txx
src/INTERP_KERNEL/PolygonAlgorithms.hxx
src/INTERP_KERNEL/PolygonAlgorithms.txx
src/INTERP_KERNEL/Polyhedron3D2DIntersectorP0P0.hxx
src/INTERP_KERNEL/Polyhedron3D2DIntersectorP0P0.txx
src/INTERP_KERNEL/PolyhedronIntersectorP0P0.hxx
src/INTERP_KERNEL/PolyhedronIntersectorP0P0.txx
src/INTERP_KERNEL/PolyhedronIntersectorP0P1.hxx
src/INTERP_KERNEL/PolyhedronIntersectorP0P1.txx
src/INTERP_KERNEL/PolyhedronIntersectorP1P0.hxx
src/INTERP_KERNEL/PolyhedronIntersectorP1P0.txx
src/INTERP_KERNEL/PolyhedronIntersectorP1P0Bary.hxx
src/INTERP_KERNEL/PolyhedronIntersectorP1P0Bary.txx
src/INTERP_KERNEL/PolyhedronIntersectorP1P1.hxx
src/INTERP_KERNEL/PolyhedronIntersectorP1P1.txx
src/INTERP_KERNEL/RegionNode.hxx
src/INTERP_KERNEL/SplitterTetra.cxx
src/INTERP_KERNEL/SplitterTetra.hxx
src/INTERP_KERNEL/SplitterTetra.txx
src/INTERP_KERNEL/TargetIntersector.hxx
src/INTERP_KERNEL/TetraAffineTransform.cxx
src/INTERP_KERNEL/TetraAffineTransform.hxx
src/INTERP_KERNEL/TransformedTriangle.cxx
src/INTERP_KERNEL/TransformedTriangle.hxx
src/INTERP_KERNEL/TransformedTriangleInline.hxx
src/INTERP_KERNEL/TransformedTriangleIntersect.cxx
src/INTERP_KERNEL/TransformedTriangleMath.cxx
src/INTERP_KERNEL/TranslationRotationMatrix.cxx
src/INTERP_KERNEL/TranslationRotationMatrix.hxx
src/INTERP_KERNEL/TriangulationIntersector.hxx
src/INTERP_KERNEL/TriangulationIntersector.txx
src/INTERP_KERNEL/UnitTetraIntersectionBary.cxx
src/INTERP_KERNEL/UnitTetraIntersectionBary.hxx
src/INTERP_KERNEL/VTKNormalizedUnstructuredMesh.hxx
src/INTERP_KERNEL/VTKNormalizedUnstructuredMesh.txx
src/INTERP_KERNEL/VectorUtils.hxx
src/INTERP_KERNEL/VolSurfFormulae.hxx
src/INTERP_KERNEL/VolSurfUser.cxx
src/INTERP_KERNEL/VolSurfUser.hxx
src/INTERP_KERNEL/VolSurfUser.txx
src/INTERP_KERNELTest/BBTreeTest.cxx
src/INTERP_KERNELTest/BBTreeTest.hxx
src/INTERP_KERNELTest/BasicMainTest.hxx
src/INTERP_KERNELTest/CMakeLists.txt
src/INTERP_KERNELTest/CTestTestfileInstall.cmake
src/INTERP_KERNELTest/CppUnitTest.cxx
src/INTERP_KERNELTest/CppUnitTest.hxx
src/INTERP_KERNELTest/ExprEvalInterpTest.cxx
src/INTERP_KERNELTest/ExprEvalInterpTest.hxx
src/INTERP_KERNELTest/HexaTests.hxx
src/INTERP_KERNELTest/InterpKernelTestExport.hxx
src/INTERP_KERNELTest/Interpolation3DTest.cxx
src/INTERP_KERNELTest/Interpolation3DTest.hxx
src/INTERP_KERNELTest/InterpolationOptionsTest.cxx
src/INTERP_KERNELTest/InterpolationOptionsTest.hxx
src/INTERP_KERNELTest/InterpolationPlanarTestSuite.hxx
src/INTERP_KERNELTest/InterpolationTestSuite.hxx
src/INTERP_KERNELTest/MEDMeshMaker.cxx
src/INTERP_KERNELTest/MEDMeshMaker.hxx
src/INTERP_KERNELTest/MeshTestToolkit.hxx
src/INTERP_KERNELTest/MeshTestToolkit.txx
src/INTERP_KERNELTest/MultiElement2DTests.hxx
src/INTERP_KERNELTest/MultiElement3DSurfTests.hxx
src/INTERP_KERNELTest/MultiElementTetraTests.hxx
src/INTERP_KERNELTest/PerfTest.cxx
src/INTERP_KERNELTest/QuadraticPlanarInterpTest.cxx
src/INTERP_KERNELTest/QuadraticPlanarInterpTest.hxx
src/INTERP_KERNELTest/QuadraticPlanarInterpTest2.cxx
src/INTERP_KERNELTest/QuadraticPlanarInterpTest3.cxx
src/INTERP_KERNELTest/QuadraticPlanarInterpTest4.cxx
src/INTERP_KERNELTest/QuadraticPlanarInterpTest5.cxx
src/INTERP_KERNELTest/SingleElementPlanarTests.cxx
src/INTERP_KERNELTest/SingleElementPlanarTests.hxx
src/INTERP_KERNELTest/SingleElementTetraTests.hxx
src/INTERP_KERNELTest/TestInterpKernel.cxx
src/INTERP_KERNELTest/TestInterpKernelUtils.cxx
src/INTERP_KERNELTest/TestInterpKernelUtils.hxx
src/INTERP_KERNELTest/ThreeDSurfProjectionTest.cxx
src/INTERP_KERNELTest/ThreeDSurfProjectionTest.hxx
src/INTERP_KERNELTest/TransformedTriangleIntersectTest.cxx
src/INTERP_KERNELTest/TransformedTriangleIntersectTest.hxx
src/INTERP_KERNELTest/TransformedTriangleTest.cxx
src/INTERP_KERNELTest/TransformedTriangleTest.hxx
src/INTERP_KERNELTest/UnitTetra3D2DIntersectionTest.cxx
src/INTERP_KERNELTest/UnitTetra3D2DIntersectionTest.hxx
src/INTERP_KERNELTest/UnitTetraIntersectionBaryTest.cxx
src/INTERP_KERNELTest/UnitTetraIntersectionBaryTest.hxx
src/INTERP_KERNELTest/perf_test.py
src/INTERP_KERNELTest/perf_test.sh
src/MEDCoupling/CMakeLists.txt
src/MEDCoupling/MCAuto.hxx
src/MEDCoupling/MCAuto.txx
src/MEDCoupling/MCType.hxx
src/MEDCoupling/MEDCoupling.hxx
src/MEDCoupling/MEDCoupling1GTUMesh.cxx
src/MEDCoupling/MEDCoupling1GTUMesh.hxx
src/MEDCoupling/MEDCoupling1GTUMesh.txx
src/MEDCoupling/MEDCouplingAMRAttribute.cxx
src/MEDCoupling/MEDCouplingAMRAttribute.hxx
src/MEDCoupling/MEDCouplingCMesh.cxx
src/MEDCoupling/MEDCouplingCMesh.hxx
src/MEDCoupling/MEDCouplingCartesianAMRMesh.cxx
src/MEDCoupling/MEDCouplingCartesianAMRMesh.hxx
src/MEDCoupling/MEDCouplingCurveLinearMesh.cxx
src/MEDCoupling/MEDCouplingCurveLinearMesh.hxx
src/MEDCoupling/MEDCouplingDefinitionTime.cxx
src/MEDCoupling/MEDCouplingDefinitionTime.hxx
src/MEDCoupling/MEDCouplingField.cxx
src/MEDCoupling/MEDCouplingField.hxx
src/MEDCoupling/MEDCouplingFieldDiscretization.cxx
src/MEDCoupling/MEDCouplingFieldDiscretization.hxx
src/MEDCoupling/MEDCouplingFieldDouble.cxx
src/MEDCoupling/MEDCouplingFieldDouble.hxx
src/MEDCoupling/MEDCouplingFieldFloat.cxx
src/MEDCoupling/MEDCouplingFieldFloat.hxx
src/MEDCoupling/MEDCouplingFieldInt.cxx
src/MEDCoupling/MEDCouplingFieldInt.hxx
src/MEDCoupling/MEDCouplingFieldOverTime.cxx
src/MEDCoupling/MEDCouplingFieldOverTime.hxx
src/MEDCoupling/MEDCouplingFieldT.hxx
src/MEDCoupling/MEDCouplingFieldT.txx
src/MEDCoupling/MEDCouplingFieldTemplate.cxx
src/MEDCoupling/MEDCouplingFieldTemplate.hxx
src/MEDCoupling/MEDCouplingGaussLocalization.cxx
src/MEDCoupling/MEDCouplingGaussLocalization.hxx
src/MEDCoupling/MEDCouplingIMesh.cxx
src/MEDCoupling/MEDCouplingIMesh.hxx
src/MEDCoupling/MEDCouplingMap.cxx
src/MEDCoupling/MEDCouplingMap.hxx
src/MEDCoupling/MEDCouplingMap.txx
src/MEDCoupling/MEDCouplingMappedExtrudedMesh.cxx
src/MEDCoupling/MEDCouplingMappedExtrudedMesh.hxx
src/MEDCoupling/MEDCouplingMatrix.cxx
src/MEDCoupling/MEDCouplingMatrix.hxx
src/MEDCoupling/MEDCouplingMemArray.cxx
src/MEDCoupling/MEDCouplingMemArray.hxx
src/MEDCoupling/MEDCouplingMemArray.txx
src/MEDCoupling/MEDCouplingMemArrayChar.cxx
src/MEDCoupling/MEDCouplingMemArrayFloat.cxx
src/MEDCoupling/MEDCouplingMesh.cxx
src/MEDCoupling/MEDCouplingMesh.hxx
src/MEDCoupling/MEDCouplingMultiFields.cxx
src/MEDCoupling/MEDCouplingMultiFields.hxx
src/MEDCoupling/MEDCouplingNatureOfField.cxx
src/MEDCoupling/MEDCouplingNatureOfField.hxx
src/MEDCoupling/MEDCouplingNatureOfFieldEnum
src/MEDCoupling/MEDCouplingNormalizedCartesianMesh.hxx
src/MEDCoupling/MEDCouplingNormalizedCartesianMesh.txx
src/MEDCoupling/MEDCouplingNormalizedUnstructuredMesh.hxx
src/MEDCoupling/MEDCouplingNormalizedUnstructuredMesh.txx
src/MEDCoupling/MEDCouplingPartDefinition.cxx
src/MEDCoupling/MEDCouplingPartDefinition.hxx
src/MEDCoupling/MEDCouplingPointSet.cxx
src/MEDCoupling/MEDCouplingPointSet.hxx
src/MEDCoupling/MEDCouplingRefCountObject.cxx
src/MEDCoupling/MEDCouplingRefCountObject.hxx
src/MEDCoupling/MEDCouplingRemapper.cxx
src/MEDCoupling/MEDCouplingRemapper.hxx
src/MEDCoupling/MEDCouplingSkyLineArray.cxx
src/MEDCoupling/MEDCouplingSkyLineArray.hxx
src/MEDCoupling/MEDCouplingStructuredMesh.cxx
src/MEDCoupling/MEDCouplingStructuredMesh.hxx
src/MEDCoupling/MEDCouplingTimeDiscretization.cxx
src/MEDCoupling/MEDCouplingTimeDiscretization.hxx
src/MEDCoupling/MEDCouplingTimeDiscretization.txx
src/MEDCoupling/MEDCouplingTimeLabel.cxx
src/MEDCoupling/MEDCouplingTimeLabel.hxx
src/MEDCoupling/MEDCouplingTraits.cxx
src/MEDCoupling/MEDCouplingTraits.hxx
src/MEDCoupling/MEDCouplingUMesh.cxx
src/MEDCoupling/MEDCouplingUMesh.hxx
src/MEDCoupling/MEDCouplingUMesh.txx
src/MEDCoupling/MEDCouplingUMesh_internal.cxx
src/MEDCoupling/MEDCouplingUMesh_internal.hxx
src/MEDCoupling/MEDCouplingUMesh_intersection.cxx
src/MEDCoupling/MEDCouplingVoronoi.cxx
src/MEDCoupling/MEDCouplingVoronoi.hxx
src/MEDCoupling/Test/CMakeLists.txt
src/MEDCoupling/Test/CTestTestfileInstall.cmake
src/MEDCoupling/Test/MEDCouplingBasicsTest.hxx
src/MEDCoupling/Test/MEDCouplingBasicsTest0.cxx
src/MEDCoupling/Test/MEDCouplingBasicsTest1.cxx
src/MEDCoupling/Test/MEDCouplingBasicsTest1.hxx
src/MEDCoupling/Test/MEDCouplingBasicsTest2.cxx
src/MEDCoupling/Test/MEDCouplingBasicsTest2.hxx
src/MEDCoupling/Test/MEDCouplingBasicsTest3.cxx
src/MEDCoupling/Test/MEDCouplingBasicsTest3.hxx
src/MEDCoupling/Test/MEDCouplingBasicsTest4.cxx
src/MEDCoupling/Test/MEDCouplingBasicsTest4.hxx
src/MEDCoupling/Test/MEDCouplingBasicsTest5.cxx
src/MEDCoupling/Test/MEDCouplingBasicsTest5.hxx
src/MEDCoupling/Test/MEDCouplingBasicsTestData1.hxx
src/MEDCoupling/Test/MEDCouplingBasicsTestInterp.cxx
src/MEDCoupling/Test/MEDCouplingBasicsTestInterp.hxx
src/MEDCoupling/Test/MEDCouplingExamplesTest.cxx
src/MEDCoupling/Test/MEDCouplingRemapperTest.cxx
src/MEDCoupling/Test/MEDCouplingRemapperTest.hxx
src/MEDCoupling/Test/TestMEDCoupling.cxx
src/MEDCoupling/Test/TestMEDCouplingRemapper.cxx
src/MEDCoupling_Swig/CMakeLists.txt
src/MEDCoupling_Swig/CTestTestfileInstall.cmake
src/MEDCoupling_Swig/MEDCoupling.i
src/MEDCoupling_Swig/MEDCouplingBasicsTest1.py
src/MEDCoupling_Swig/MEDCouplingBasicsTest2.py
src/MEDCoupling_Swig/MEDCouplingBasicsTest3.py
src/MEDCoupling_Swig/MEDCouplingBasicsTest4.py
src/MEDCoupling_Swig/MEDCouplingBasicsTest5.py
src/MEDCoupling_Swig/MEDCouplingBasicsTest6.py
src/MEDCoupling_Swig/MEDCouplingCommon.i
src/MEDCoupling_Swig/MEDCouplingDataArrayTraits.hxx
src/MEDCoupling_Swig/MEDCouplingDataArrayTypemaps.i
src/MEDCoupling_Swig/MEDCouplingDataForTest.py
src/MEDCoupling_Swig/MEDCouplingExamplesTest.py
src/MEDCoupling_Swig/MEDCouplingFieldDiscretization.i
src/MEDCoupling_Swig/MEDCouplingFinalize.i
src/MEDCoupling_Swig/MEDCouplingIntersectTest.py
src/MEDCoupling_Swig/MEDCouplingMemArray.i
src/MEDCoupling_Swig/MEDCouplingNumPyTest.py
src/MEDCoupling_Swig/MEDCouplingPickleTest.py
src/MEDCoupling_Swig/MEDCouplingRefCountObject.i
src/MEDCoupling_Swig/MEDCouplingRemapper.i
src/MEDCoupling_Swig/MEDCouplingRemapperCommon.i
src/MEDCoupling_Swig/MEDCouplingRemapperTest.py
src/MEDCoupling_Swig/MEDCouplingTimeDiscretization.i
src/MEDCoupling_Swig/MEDCouplingTypemaps.i
src/MEDCoupling_Swig/UsersGuideExamplesTest.py
src/MEDCoupling_Swig/UsersGuideExamplesTest_numpy.py
src/MEDCoupling_Swig/tests.set
src/MEDLoader/CMakeLists.txt
src/MEDLoader/MEDFileBasis.cxx
src/MEDLoader/MEDFileBasis.hxx
src/MEDLoader/MEDFileBlowStrEltUp.cxx
src/MEDLoader/MEDFileBlowStrEltUp.hxx
src/MEDLoader/MEDFileData.cxx
src/MEDLoader/MEDFileData.hxx
src/MEDLoader/MEDFileEntities.cxx
src/MEDLoader/MEDFileEntities.hxx
src/MEDLoader/MEDFileEquivalence.cxx
src/MEDLoader/MEDFileEquivalence.hxx
src/MEDLoader/MEDFileField.cxx
src/MEDLoader/MEDFileField.hxx
src/MEDLoader/MEDFileField.txx
src/MEDLoader/MEDFileField1TS.cxx
src/MEDLoader/MEDFileField1TS.hxx
src/MEDLoader/MEDFileFieldGlobs.cxx
src/MEDLoader/MEDFileFieldGlobs.hxx
src/MEDLoader/MEDFileFieldInternal.cxx
src/MEDLoader/MEDFileFieldInternal.hxx
src/MEDLoader/MEDFileFieldMultiTS.cxx
src/MEDLoader/MEDFileFieldMultiTS.hxx
src/MEDLoader/MEDFileFieldOverView.cxx
src/MEDLoader/MEDFileFieldOverView.hxx
src/MEDLoader/MEDFileFieldVisitor.hxx
src/MEDLoader/MEDFileJoint.cxx
src/MEDLoader/MEDFileJoint.hxx
src/MEDLoader/MEDFileMesh.cxx
src/MEDLoader/MEDFileMesh.hxx
src/MEDLoader/MEDFileMeshElt.cxx
src/MEDLoader/MEDFileMeshElt.hxx
src/MEDLoader/MEDFileMeshLL.cxx
src/MEDLoader/MEDFileMeshLL.hxx
src/MEDLoader/MEDFileMeshReadSelector.cxx
src/MEDLoader/MEDFileMeshReadSelector.hxx
src/MEDLoader/MEDFileMeshSupport.cxx
src/MEDLoader/MEDFileMeshSupport.hxx
src/MEDLoader/MEDFileParameter.cxx
src/MEDLoader/MEDFileParameter.hxx
src/MEDLoader/MEDFileSafeCaller.txx
src/MEDLoader/MEDFileStructureElement.cxx
src/MEDLoader/MEDFileStructureElement.hxx
src/MEDLoader/MEDFileUtilities.cxx
src/MEDLoader/MEDFileUtilities.hxx
src/MEDLoader/MEDFileUtilities.txx
src/MEDLoader/MEDLoader.cxx
src/MEDLoader/MEDLoader.hxx
src/MEDLoader/MEDLoaderBase.cxx
src/MEDLoader/MEDLoaderBase.hxx
src/MEDLoader/MEDLoaderDefines.hxx
src/MEDLoader/MEDLoaderNS.hxx
src/MEDLoader/MEDLoaderTraits.cxx
src/MEDLoader/MEDLoaderTraits.hxx
src/MEDLoader/SauvMedConvertor.cxx
src/MEDLoader/SauvMedConvertor.hxx
src/MEDLoader/SauvReader.cxx
src/MEDLoader/SauvReader.hxx
src/MEDLoader/SauvUtilities.hxx
src/MEDLoader/SauvWriter.cxx
src/MEDLoader/SauvWriter.hxx
src/MEDLoader/Swig/CMakeLists.txt
src/MEDLoader/Swig/CTestTestfileInstall.cmake
src/MEDLoader/Swig/CaseIO.py
src/MEDLoader/Swig/CaseReader.py
src/MEDLoader/Swig/CaseWriter.py
src/MEDLoader/Swig/ConvertMEDFileTo33.py
src/MEDLoader/Swig/MEDLoader.i
src/MEDLoader/Swig/MEDLoaderCommon.i
src/MEDLoader/Swig/MEDLoaderCouplingTrainingSession.py
src/MEDLoader/Swig/MEDLoaderDataForTest.py
src/MEDLoader/Swig/MEDLoaderExamplesTest.py
src/MEDLoader/Swig/MEDLoaderFinalize.i
src/MEDLoader/Swig/MEDLoaderSplitter.py
src/MEDLoader/Swig/MEDLoaderTest1.py
src/MEDLoader/Swig/MEDLoaderTest123.py
src/MEDLoader/Swig/MEDLoaderTest2.py
src/MEDLoader/Swig/MEDLoaderTest3.py
src/MEDLoader/Swig/MEDLoaderTest4.py
src/MEDLoader/Swig/MEDLoaderTypemaps.i
src/MEDLoader/Swig/SauvLoaderTest.py
src/MEDLoader/Swig/UsersGuideExamplesTest.py
src/MEDLoader/Swig/VTKReader.py
src/MEDLoader/Swig/case2med
src/MEDLoader/Swig/med2case
src/MEDLoader/Swig/med2sauv
src/MEDLoader/Swig/medutilities.py
src/MEDLoader/Swig/sauv2med
src/MEDLoader/Swig/tests.set
src/MEDLoader/Test/CMakeLists.txt
src/MEDLoader/Test/CTestTestfileInstall.cmake
src/MEDLoader/Test/MEDLoaderTest.cxx
src/MEDLoader/Test/MEDLoaderTest.hxx
src/MEDLoader/Test/SauvLoaderTest.cxx
src/MEDLoader/Test/SauvLoaderTest.hxx
src/MEDLoader/Test/TestMEDLoader.cxx
src/MEDLoader/Test/TestSauvLoader.cxx
src/MEDPartitioner/CMakeLists.txt
src/MEDPartitioner/MEDPARTITIONER.hxx [changed mode: 0755->0644]
src/MEDPartitioner/MEDPARTITIONER_ConnectZone.cxx
src/MEDPartitioner/MEDPARTITIONER_ConnectZone.hxx
src/MEDPartitioner/MEDPARTITIONER_Graph.cxx
src/MEDPartitioner/MEDPARTITIONER_Graph.hxx
src/MEDPartitioner/MEDPARTITIONER_JointFinder.cxx
src/MEDPartitioner/MEDPARTITIONER_JointFinder.hxx
src/MEDPartitioner/MEDPARTITIONER_MEDPartitioner.cxx
src/MEDPartitioner/MEDPARTITIONER_MEDPartitioner.hxx
src/MEDPartitioner/MEDPARTITIONER_MeshCollection.cxx
src/MEDPartitioner/MEDPARTITIONER_MeshCollection.hxx
src/MEDPartitioner/MEDPARTITIONER_MeshCollectionDriver.cxx
src/MEDPartitioner/MEDPARTITIONER_MeshCollectionDriver.hxx
src/MEDPartitioner/MEDPARTITIONER_MeshCollectionMedAsciiDriver.cxx
src/MEDPartitioner/MEDPARTITIONER_MeshCollectionMedAsciiDriver.hxx
src/MEDPartitioner/MEDPARTITIONER_MeshCollectionMedXmlDriver.cxx
src/MEDPartitioner/MEDPARTITIONER_MeshCollectionMedXmlDriver.hxx
src/MEDPartitioner/MEDPARTITIONER_MetisGraph.cxx
src/MEDPartitioner/MEDPARTITIONER_MetisGraph.hxx
src/MEDPartitioner/MEDPARTITIONER_PTScotchGraph.cxx
src/MEDPartitioner/MEDPARTITIONER_PTScotchGraph.hxx
src/MEDPartitioner/MEDPARTITIONER_ParMetisGraph.cxx
src/MEDPartitioner/MEDPARTITIONER_ParMetisGraph.hxx
src/MEDPartitioner/MEDPARTITIONER_ParaDomainSelector.cxx
src/MEDPartitioner/MEDPARTITIONER_ParaDomainSelector.hxx
src/MEDPartitioner/MEDPARTITIONER_ParallelTopology.cxx
src/MEDPartitioner/MEDPARTITIONER_ParallelTopology.hxx
src/MEDPartitioner/MEDPARTITIONER_ScotchGraph.cxx
src/MEDPartitioner/MEDPARTITIONER_ScotchGraph.hxx
src/MEDPartitioner/MEDPARTITIONER_Topology.hxx
src/MEDPartitioner/MEDPARTITIONER_UserGraph.cxx
src/MEDPartitioner/MEDPARTITIONER_UserGraph.hxx
src/MEDPartitioner/MEDPARTITIONER_Utils.cxx
src/MEDPartitioner/MEDPARTITIONER_Utils.hxx
src/MEDPartitioner/MEDPARTITIONER_UtilsPara.cxx
src/MEDPartitioner/MEDPARTITIONER_metis.c
src/MEDPartitioner/MEDPARTITIONER_metis.h
src/MEDPartitioner/Test/CMakeLists.txt
src/MEDPartitioner/Test/CTestTestfileInstall.cmake
src/MEDPartitioner/Test/MEDPARTITIONERTest.cxx
src/MEDPartitioner/Test/MEDPARTITIONERTest.hxx
src/MEDPartitioner/Test/MEDPARTITIONERTestPara.cxx
src/MEDPartitioner/Test/TestMEDPARTITIONER.cxx
src/MEDPartitioner/medpartitioner.cxx
src/MEDPartitioner/medpartitioner_para.cxx
src/MEDPartitioner_Swig/CMakeLists.txt
src/MEDPartitioner_Swig/CTestTestfileInstall.cmake
src/MEDPartitioner_Swig/MEDPartitioner.i
src/MEDPartitioner_Swig/MEDPartitionerCommon.i
src/MEDPartitioner_Swig/MEDPartitionerTest.py
src/ParaMEDLoader/CMakeLists.txt
src/ParaMEDLoader/ParaMEDFileMesh.cxx
src/ParaMEDLoader/ParaMEDFileMesh.hxx
src/ParaMEDLoader/ParaMEDLoader.cxx
src/ParaMEDLoader/ParaMEDLoader.hxx
src/ParaMEDMEM/BlockTopology.cxx
src/ParaMEDMEM/BlockTopology.hxx
src/ParaMEDMEM/CMakeLists.txt
src/ParaMEDMEM/CommInterface.cxx
src/ParaMEDMEM/CommInterface.hxx
src/ParaMEDMEM/ComponentTopology.cxx
src/ParaMEDMEM/ComponentTopology.hxx
src/ParaMEDMEM/DEC.cxx
src/ParaMEDMEM/DEC.hxx
src/ParaMEDMEM/DECOptions.hxx
src/ParaMEDMEM/DisjointDEC.cxx
src/ParaMEDMEM/DisjointDEC.hxx
src/ParaMEDMEM/ElementLocator.cxx
src/ParaMEDMEM/ElementLocator.hxx
src/ParaMEDMEM/ExplicitCoincidentDEC.cxx
src/ParaMEDMEM/ExplicitCoincidentDEC.hxx
src/ParaMEDMEM/ExplicitMapping.cxx
src/ParaMEDMEM/ExplicitMapping.hxx
src/ParaMEDMEM/ExplicitTopology.cxx
src/ParaMEDMEM/ExplicitTopology.hxx
src/ParaMEDMEM/InterpKernelDEC.cxx
src/ParaMEDMEM/InterpKernelDEC.hxx
src/ParaMEDMEM/InterpolationMatrix.cxx
src/ParaMEDMEM/InterpolationMatrix.hxx
src/ParaMEDMEM/LinearTimeInterpolator.cxx
src/ParaMEDMEM/LinearTimeInterpolator.hxx
src/ParaMEDMEM/MPIAccess.cxx
src/ParaMEDMEM/MPIAccess.hxx
src/ParaMEDMEM/MPIAccessDEC.cxx
src/ParaMEDMEM/MPIAccessDEC.hxx
src/ParaMEDMEM/MPIProcessorGroup.cxx
src/ParaMEDMEM/MPIProcessorGroup.hxx
src/ParaMEDMEM/MxN_Mapping.cxx
src/ParaMEDMEM/MxN_Mapping.hxx
src/ParaMEDMEM/NonCoincidentDEC.cxx
src/ParaMEDMEM/NonCoincidentDEC.hxx
src/ParaMEDMEM/OverlapDEC.cxx
src/ParaMEDMEM/OverlapDEC.hxx
src/ParaMEDMEM/OverlapElementLocator.cxx
src/ParaMEDMEM/OverlapElementLocator.hxx
src/ParaMEDMEM/OverlapInterpolationMatrix.cxx
src/ParaMEDMEM/OverlapInterpolationMatrix.hxx
src/ParaMEDMEM/OverlapMapping.cxx
src/ParaMEDMEM/OverlapMapping.hxx
src/ParaMEDMEM/ParaFIELD.cxx
src/ParaMEDMEM/ParaFIELD.hxx
src/ParaMEDMEM/ParaGRID.cxx
src/ParaMEDMEM/ParaGRID.hxx
src/ParaMEDMEM/ParaMESH.cxx
src/ParaMEDMEM/ParaMESH.hxx
src/ParaMEDMEM/ProcessorGroup.cxx
src/ParaMEDMEM/ProcessorGroup.hxx
src/ParaMEDMEM/StructuredCoincidentDEC.cxx
src/ParaMEDMEM/StructuredCoincidentDEC.hxx
src/ParaMEDMEM/TimeInterpolator.cxx
src/ParaMEDMEM/TimeInterpolator.hxx
src/ParaMEDMEM/Topology.cxx
src/ParaMEDMEM/Topology.hxx
src/ParaMEDMEMTest/CMakeLists.txt
src/ParaMEDMEMTest/MPI2Connector.cxx
src/ParaMEDMEMTest/MPI2Connector.hxx
src/ParaMEDMEMTest/MPIAccessDECTest.cxx
src/ParaMEDMEMTest/MPIAccessDECTest.hxx
src/ParaMEDMEMTest/MPIAccessTest.cxx
src/ParaMEDMEMTest/MPIAccessTest.hxx
src/ParaMEDMEMTest/MPIMainTest.hxx
src/ParaMEDMEMTest/ParaMEDMEMTest.cxx
src/ParaMEDMEMTest/ParaMEDMEMTest.hxx
src/ParaMEDMEMTest/ParaMEDMEMTestMPI2_1.cxx
src/ParaMEDMEMTest/ParaMEDMEMTestMPI2_2.cxx
src/ParaMEDMEMTest/ParaMEDMEMTest_BlockTopology.cxx
src/ParaMEDMEMTest/ParaMEDMEMTest_FabienAPI.cxx
src/ParaMEDMEMTest/ParaMEDMEMTest_Gauthier1.cxx
src/ParaMEDMEMTest/ParaMEDMEMTest_ICoco.cxx
src/ParaMEDMEMTest/ParaMEDMEMTest_InterpKernelDEC.cxx
src/ParaMEDMEMTest/ParaMEDMEMTest_MEDLoader.cxx
src/ParaMEDMEMTest/ParaMEDMEMTest_MPIProcessorGroup.cxx
src/ParaMEDMEMTest/ParaMEDMEMTest_NonCoincidentDEC.cxx
src/ParaMEDMEMTest/ParaMEDMEMTest_OverlapDEC.cxx
src/ParaMEDMEMTest/ParaMEDMEMTest_StructuredCoincidentDEC.cxx
src/ParaMEDMEMTest/TestMPIAccess.cxx
src/ParaMEDMEMTest/TestMPIAccessDEC.cxx
src/ParaMEDMEMTest/TestParaMEDMEM.cxx
src/ParaMEDMEMTest/test_AllToAllDEC.cxx
src/ParaMEDMEMTest/test_AllToAllTimeDEC.cxx
src/ParaMEDMEMTest/test_AllToAllvDEC.cxx
src/ParaMEDMEMTest/test_AllToAllvTimeDEC.cxx
src/ParaMEDMEMTest/test_AllToAllvTimeDoubleDEC.cxx
src/ParaMEDMEMTest/test_MPI_Access_Cancel.cxx
src/ParaMEDMEMTest/test_MPI_Access_Cyclic_ISend_IRecv.cxx
src/ParaMEDMEMTest/test_MPI_Access_Cyclic_Send_Recv.cxx
src/ParaMEDMEMTest/test_MPI_Access_IProbe.cxx
src/ParaMEDMEMTest/test_MPI_Access_ISendRecv.cxx
src/ParaMEDMEMTest/test_MPI_Access_ISend_IRecv.cxx
src/ParaMEDMEMTest/test_MPI_Access_ISend_IRecv_BottleNeck.cxx
src/ParaMEDMEMTest/test_MPI_Access_ISend_IRecv_Length.cxx
src/ParaMEDMEMTest/test_MPI_Access_ISend_IRecv_Length_1.cxx
src/ParaMEDMEMTest/test_MPI_Access_Probe.cxx
src/ParaMEDMEMTest/test_MPI_Access_SendRecv.cxx
src/ParaMEDMEMTest/test_MPI_Access_Send_Recv.cxx
src/ParaMEDMEMTest/test_MPI_Access_Send_Recv_Length.cxx
src/ParaMEDMEMTest/test_MPI_Access_Time.cxx
src/ParaMEDMEMTest/test_MPI_Access_Time_0.cxx
src/ParaMEDMEMTest/test_perf.cxx
src/ParaMEDMEM_Swig/CMakeLists.txt
src/ParaMEDMEM_Swig/ParaMEDMEM.i
src/ParaMEDMEM_Swig/ParaMEDMEMCommon.i
src/ParaMEDMEM_Swig/test_InterpKernelDEC.py
src/ParaMEDMEM_Swig/test_NonCoincidentDEC.py
src/ParaMEDMEM_Swig/test_StructuredCoincidentDEC.py
src/PyWrapping/CMakeLists.txt
src/PyWrapping/CTestTestfileInstall.cmake
src/PyWrapping/TestPyWrapGathered_medcoupling.py
src/PyWrapping/medcoupling.i
src/PyWrapping/medcoupling_pycode
src/PyWrapping/tests.set
src/RENUMBER/CMakeLists.txt
src/RENUMBER/RENUMBERDefines.hxx [changed mode: 0755->0644]
src/RENUMBER/RENUMBER_BOOSTRenumbering.cxx
src/RENUMBER/RENUMBER_BOOSTRenumbering.hxx
src/RENUMBER/RENUMBER_METISRenumbering.cxx
src/RENUMBER/RENUMBER_METISRenumbering.hxx
src/RENUMBER/RENUMBER_Renumbering.cxx
src/RENUMBER/RENUMBER_Renumbering.hxx
src/RENUMBER/RenumberingFactory.cxx
src/RENUMBER/RenumberingFactory.hxx
src/RENUMBER/renumbering.cxx
src/RENUMBER/testRenumbering.py
src/RENUMBER_Swig/CMakeLists.txt
src/RENUMBER_Swig/CTestTestfileInstall.cmake
src/RENUMBER_Swig/MEDRenumber.i
src/RENUMBER_Swig/MEDRenumberCommon.i
src/RENUMBER_Swig/MEDRenumberImpl.i
src/RENUMBER_Swig/MEDRenumberTest.py
src/RENUMBER_Swig/UsersGuideExamplesTest.py
v8_work/CMakeLists.txt
v8_work/ModifyNamespace.py
v8_work/medcoup7to8.py

index 87ca1098a737d940e16ece5602bd0c27a6c8e8cc..9e7e55ff3f401efe8e61515923820d7cb127c20e 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2015-2016  CEA/DEN, EDF R&D
+# Copyright (C) 2015-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -61,6 +61,7 @@ OPTION(MEDCOUPLING_USE_MPI "(Use MPI containers) - For MED this triggers the bui
 OPTION(MEDCOUPLING_BUILD_TESTS "Build MED tests." ON)
 OPTION(MEDCOUPLING_BUILD_DOC "Build MED doc." ON)
 OPTION(MEDCOUPLING_BUILD_STATIC "Build MEDCoupling library in static mode." OFF)
+OPTION(MEDCOUPLING_USE_64BIT_IDS "Size of IDs to refer cells and nodes. 32 bits when OFF (default), 64 bits when ON. Not implemented yet for 64 bits." OFF)
 IF(${MEDCOUPLING_USE_MPI})
   SET(USE_METIS_NOT_PARMETIS OFF)
 ELSE()
@@ -101,6 +102,10 @@ ENDIF()
 # Set list of prerequisites
 # =========================
 
+IF(MEDCOUPLING_USE_64BIT_IDS)
+  ADD_DEFINITIONS("-DMEDCOUPLING_USE_64BIT_IDS")
+ENDIF(MEDCOUPLING_USE_64BIT_IDS)
+
 IF(NOT MEDCOUPLING_MICROMED)
   FIND_PACKAGE(SalomeHDF5 REQUIRED)
   FIND_PACKAGE(SalomeMEDFile REQUIRED)
@@ -139,6 +144,7 @@ ENDIF(MEDCOUPLING_BUILD_TESTS)
 IF(MEDCOUPLING_USE_MPI)
   FIND_PACKAGE(SalomeMPI REQUIRED)
   ADD_DEFINITIONS("-DHAVE_MPI")
+  SALOME_ADD_MPI_TO_HDF5()
   IF(MEDCOUPLING_PARTITIONER_PARMETIS)
     FIND_PACKAGE(SalomeParMetis)
     SALOME_LOG_OPTIONAL_PACKAGE(ParMetis MEDCOUPLING_PARTITIONER_PARMETIS)
index ba30a00d3da41ec1167938dc976dec02c97ce885..f691656a1f6352f7e661e986f84611df286f10be 100644 (file)
@@ -5,7 +5,7 @@
 #
 
 ###############################################################
-# Copyright (C) 2013-2016  CEA/DEN, EDF R&D, OPEN CASCADE
+# Copyright (C) 2013-2019  CEA/DEN, EDF R&D, OPEN CASCADE
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 3521df358daecdcf39de690dcfb98e433fe274d7..f17c11ea8832fbf998538ac55f856f032a6c22f3 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2015-2016  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2015-2019  CEA/DEN, EDF R&D, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 9351fbdde11f5ef6683ccc1561b65a54b6fe092d..e1d82f2893e72b223c025c5b5135485ebdc8492b 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2016  CEA/DEN, EDF R&D
+# Copyright (C) 2012-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 90c9fbaa66dc6e178195693a3b341b47ed9a9aef..b2db40dea0174c20da9a0e485f8368ae6e1aa6cf 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2016  CEA/DEN, EDF R&D
+# Copyright (C) 2012-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index cccc5183d60e00412879fe999420119f550a93e7..2ab680db2111b135f66f2bb8acb9750b25d61b4a 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2016  CEA/DEN, EDF R&D
+# Copyright (C) 2012-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index bf171b8c52a97268e056d8fc61efbb6868b09cc4..d506364ca0f4b28b31ec9a42388ddaf46ba1c200 100644 (file)
@@ -1,4 +1,4 @@
-dnl Copyright (C) 2007-2016  CEA/DEN, EDF R&D, OPEN CASCADE
+dnl Copyright (C) 2007-2019  CEA/DEN, EDF R&D, OPEN CASCADE
 dnl
 dnl Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 dnl CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 653756ebffdf146f26f266284b0961448a825af6..eef5f2ff6d30aa7112386f84bcce3d9331901e72 100644 (file)
@@ -1,4 +1,4 @@
-dnl Copyright (C) 2007-2016  CEA/DEN, EDF R&D, OPEN CASCADE
+dnl Copyright (C) 2007-2019  CEA/DEN, EDF R&D, OPEN CASCADE
 dnl
 dnl Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 dnl CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index 1fc12326e50038ca4c81c835228459d34c4e281f..456a0a7551be75a661e676d3b539c752831f5def 100644 (file)
@@ -1,4 +1,4 @@
-dnl Copyright (C) 2007-2016  CEA/DEN, EDF R&D, OPEN CASCADE
+dnl Copyright (C) 2007-2019  CEA/DEN, EDF R&D, OPEN CASCADE
 dnl
 dnl Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 dnl CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
index f496840c2893c2b6d5094ed7510d8f78bdd70448..4f17e34ef948d141c97bb1a96bca07a0b9839896 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2016  CEA/DEN, EDF R&D
+# Copyright (C) 2012-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 186e646944a2f16d6fd356bd19b40758cdf08cc9..0a18ca5e228681ac0014e87fd4289ea10213044d 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2016  CEA/DEN, EDF R&D
+# Copyright (C) 2012-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index fbc36f33bc837f0c4d6c25a38d96eda5b4958dda..8c541963c46baf78b8d5e492188547e95bbfa8a5 100644 (file)
@@ -1,5 +1,5 @@
 #!/usr/bin/env python
-# Copyright (C) 2007-2016  CEA/DEN, EDF R&D, OPEN CASCADE
+# Copyright (C) 2007-2019  CEA/DEN, EDF R&D, OPEN CASCADE
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 3d1b2dede2781cd864148a2e944e63ce59728374..30122ee0479be12d6bf439c4c122a7a92b26c7fd 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2016  CEA/DEN, EDF R&D
+# Copyright (C) 2012-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 6965a18e27cb77a8fbdec58a2f57b5f83df13011..f5eda6db5dec0bc81639cac32929315c6673e9ff 100644 (file)
@@ -1,22 +1,3 @@
-# Copyright (C) 2007-2016  CEA/DEN, EDF R&D, OPEN CASCADE
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
-#
-# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-#
-
 # Doxyfile 0.1
 #---------------------------------------------------------------------------
 # General configuration options
index 21e5b8280aa7fb5cc27ad0a6c4175c2c88ef39e9..f1cf78e333dede670b0db46f53d954a00d13e786 100644 (file)
@@ -137,12 +137,12 @@ The first step of the interpolation leads to the following M1 matrix :
     \end{tabular}\right]
     \f]
 
-\subsection TableNatureOfFieldExampleConservVol Conservative volumic case
+\subsection TableNatureOfFieldExampleConservVol IntensiveMaximum case
 
-If we apply the formula \ref TableNatureOfField "above" it leads to the following \f$ M_{Conservative Volumic} \f$ matrix :
+If we apply the formula \ref TableNatureOfField "above" it leads to the following \f$ M_{IntensiveMaximum} \f$ matrix :
 
 \f[
-    M_{Conservative Volumic}=\left[\begin{tabular}{cc}
+    M_{IntensiveMaximum}=\left[\begin{tabular}{cc}
     $\displaystyle{\frac{0.125}{0.125+0.75}}$ &
     $\displaystyle{\frac{0.75}{0.125+0.75}}$ \\
     \end{tabular}\right]=\left[\begin{tabular}{cc}
@@ -202,9 +202,9 @@ This type of interpolation is equivalent to the computation of \f$ FS_{vol} \f$
 In the particular case treated \ref TableNatureOfFieldEx1 "here", it means that only a power of 25.055 W is intercepted by the target cell !
 
 So from the 104 W of the source field \f$ FS \f$, only 25.055 W are transmitted in the target field using this nature of field.
-In order to treat differently a power field, another policy, \ref TableNatureOfFieldExampleIntegralGlobConstraint "integral global constraint nature" is available.
+In order to treat differently a power field, another policy, \ref TableNatureOfFieldExampleIntegralGlobConstraint "Extensive Conservation" is available.
 
-\subsection TableNatureOfFieldExampleIntegralGlobConstraint ExtensiveMaximum with global constraints case
+\subsection TableNatureOfFieldExampleIntegralGlobConstraint ExtensiveConservation case
 
 If we apply the formula \ref TableNatureOfField "above" it leads to the following \f$ M_{ExtensiveConservation} \f$ matrix :
 
@@ -234,7 +234,7 @@ in the output target interpolated field.
 \b BUT, As we can see here, the maximum principle is \b not respected here, because the target cell #0 has a value higher than the two
 intercepted source cells.
 
-\subsection TableNatureOfFieldExampleRevIntegral Reverse integral case
+\subsection TableNatureOfFieldExampleRevIntegral IntensiveConservation case
 
 If we apply the formula \ref TableNatureOfField "above" it leads to the following \f$ M_{IntensiveConservation} \f$ matrix :
 
@@ -259,7 +259,7 @@ If we apply the formula \ref TableNatureOfField "above" it leads to the followin
 
 This type of nature is particularly recommended to interpolate an intensive \b density
 field (moderator density, power density).
-The difference with \ref TableNatureOfFieldExampleConservVol "conservative volumic" seen above is that here the
+The difference with \ref TableNatureOfFieldExampleConservVol "Intensive Maximum" seen above is that here the
 target field is homogenized to the \b whole target cell. It explains why this nature of field does not follow the maximum principle.
 
 To illustrate the case, let's consider that \f$ FS \f$ is a power density field in \f$ W/m^2 \f$.
index 7ff999da35a4ee1702eced91fe97394d93075bb7..583bb9cd12aa62649e60f1e66389172a3f768350 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2016  CEA/DEN, EDF R&D
+# Copyright (C) 2012-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index f9ff178d95aeb4437c3ae7afe3073af9c1e213fc..9a993bfa1d439732b73d886571394a4639ca4711 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2013-2016  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2013-2019  CEA/DEN, EDF R&D, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index b0d16e803baa32618d9c9108c5d5513e999e93b3..9caecf6031753d79a5a930727e7d3007f5bb21cb 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2013-2016  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2013-2019  CEA/DEN, EDF R&D, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 63dacc6de34eae17fc2305676dd1d22d04207c00..96b22d75bf13e36e2dbf581ba4bea74f04cf60e5 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2013-2016  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2013-2019  CEA/DEN, EDF R&D, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 4beab3eca59682e0c89cbef9aa270564afda03f0..a83dcf0fe7559280ae704d66137e14565604695c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2013-2016  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2013-2019  CEA/DEN, EDF R&D, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 896d697bac6ba927750ddf5120c42a2c851bd5f4..7069073f44e7821552bcca058f999d0786575841 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2013-2016  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2013-2019  CEA/DEN, EDF R&D, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index fe259b827affeba4be73b29387ca1d5920265330..f4f0001fb0fb81884389a962251f787fb21059c9 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2013-2016  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2013-2019  CEA/DEN, EDF R&D, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
-// Copyright (C) 2013  CEA/DEN, EDF R&D, OPEN CASCADE
-//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
-//
-// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
-
 // This file contains some code used only for
 // * generation of documentation for inline methods of MEDCouplingUMesh class,
 // * groupping methods into "Basic API", "Advanced" and "Others..." sections
index fab99b7a045984205c02d0c32fea2a7c1a144a2f..286ff3140062e8917f4b95bafadb225de088a512 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2013-2016  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2013-2019  CEA/DEN, EDF R&D, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 6803b6b255d6979b192140a87fda1156f5792a17..5556af6859c7e0981280427fd11acd9eb17476e5 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2013-2016  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2013-2019  CEA/DEN, EDF R&D, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 7655f7c5491f126fb185b71241dd83558e9a11e4..aa47c03ea8c5f5037a258f8224403891112582ae 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2013-2016  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2013-2019  CEA/DEN, EDF R&D, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
index 7cf11fe..0c4d205
@@ -4,7 +4,7 @@
   <ul>
     $navpath
     <li class="footer">
-      Copyright &copy; 2007-2017  CEA/DEN, EDF R&amp;D, OPEN CASCADE<br>
+      Copyright &copy; 2007-2019  CEA/DEN, EDF R&amp;D, OPEN CASCADE<br>
       Copyright &copy; 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, CEDRAT, EDF R&amp;D, LEG, PRINCIPIA R&amp;D, BUREAU VERITAS<br>
     </li>
   </ul>
old mode 100755 (executable)
new mode 100644 (file)
index ecbf8d00dba656c02a6c7dd64f086b712d1efa9f..8ee88a4552e3e010a61a28261393d04ed82c424a 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2016  CEA/DEN, EDF R&D
+# Copyright (C) 2012-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 5c1378a084a37750aa4c01e5b3867c5e3cd0f333..78b926af08fb14ed260c1f42e15d76c6e67b9157 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2016  CEA/DEN, EDF R&D
+# Copyright (C) 2012-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 94d467b51c136add1274f74dabca382d70ede46a..d17fe54caabc59f7b6bda2691479340ba6997f9d 100644 (file)
@@ -22,9 +22,9 @@ include "searchbox.html"
 
 {%- block footer %}
  <div class="footer">
-         &copy; Copyright 2007-2017, CEA/DEN, EDF R&amp;D, OPEN CASCADE
+         Copyright &copy; 2007-2019  CEA/DEN, EDF R&amp;D, OPEN CASCADE
          <br>
-         &copy; Copyright 2003-2007, OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, CEDRAT, EDF R&amp;D, LEG, PRINCIPIA R&amp;D, BUREAU VERITAS.
+         Copyright &copy; 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, CEDRAT, EDF R&amp;D, LEG, PRINCIPIA R&amp;D, BUREAU VERITAS.
  </div>
  {{ super() }}
 {%- endblock %}
index 8934218c5cce30760bcf3da1db6ac57df6191159..b0387cb483ae97ca0a7e0b6f936950ff468fe813 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2016  CEA/DEN, EDF R&D
+# Copyright (C) 2012-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -89,6 +89,8 @@ SET(MED_other_FILES
   portico_3subs.sauv
   agitateur.med
   test_MED_MAIL.sauv
+  castem17_result_xdr.sauv
+  castem17_result_ascii.sauv
   )
 
 SET(MED_RESOURCES_FILES ${MED_test_fig_files})
diff --git a/resources/castem17_result_ascii.sauv b/resources/castem17_result_ascii.sauv
new file mode 100644 (file)
index 0000000..7f5f28f
--- /dev/null
@@ -0,0 +1,109 @@
+ ENREGISTREMENT DE TYPE   4
+ NIVEAU  19 NIVEAU ERREUR   0 DIMENSION   3
+ DENSITE 0.00000E+00
+ ENREGISTREMENT DE TYPE   7
+ NOMBRE INFO CASTEM2000   8
+ IFOUR   2 NIFOUR   0 IFOMOD   2 ILGNI  10 IIMPI   0 IOSPI   0 ISOTYP   1
+ NSDPGE     0
+ ENREGISTREMENT DE TYPE   8
+       4      64
+ UX  UY  UZ  RX  RY  RZ  UR  UT  RT  LX  ALFABETAFBETP   PI  T   RR  TIN
+ FTSUPTH  FC  IUX IUY IUZ IRX IRY IRZ IUR IUT IRT PQ  TP  IP  IPI AX  AY
+   AZ  B1X B1Y B1Z C1X C1Y C1Z D1X D1Y D1Z E1X E1Y E1Z B2X B2Y B2Z C2X C
+                             2Y C2Z D2X D2Y D2Z E2X E2Y E2Z PG  PC  VEL 
+       4      64
+ FX  FY  FZ  MX  MY  MZ  FR  FT  MT  FLX FALFFBETBETAFP  FPI Q   MR  QIN
+ FQSUPFLUXED  IFX IFY IFZ IMX IMY IMZ IFR IFT IMT FPQ FTP IFP IFPIFAX FA
+ Y FAZ FB1XFB1YFB1ZFC1XFC1YFC1ZFD1XFD1YFD1ZFE1XFE1YFE1ZFB2XFB2YFB2ZFC2XF
+                             C2YFC2ZFD2XFD2YFD2ZFE2XFE2YFE2ZQG  QC  QEL 
+ ENREGISTREMENT DE TYPE   2
+ PILE NUMERO   1NBRE OBJETS NOMMES       6NBRE OBJETS      12
+ ENTREE   NOT_I001 NOT_I002 NOT_I003 PIECE    SORTIE  
+       2       4       6       8      10      11
+       1       0       0       1      12
+       0       0       0       0       0       0       0       0       0       0
+       0       0
+       1       2       3       4       5       6       7       8       9      10
+      11      12
+       0       1       0       0       0
+       3
+       8       0       0       4       1
+       0
+       3       4       2       1
+       0       1       0       0       0
+       5
+       2       0       0       2      16
+       0       0       0       0       0       0       0       0       0       0
+       0       0       0       0       0       0
+       3       8       8      10      10       9       4       7       7       9
+       3       4       1       5       5      11      11      12       2       6
+       6      12       1       2       3       1      10      11       4       2
+       9      12
+       0       1       0       0       0
+       7
+       8       0       0       4       8
+       0       0       0       0       0       0       0       0
+       3       8       7       4       8      10       9       7      11       5
+       6      12       5       1       2       6       3       1       5       8
+       8       5      11      10       2       4       7       6       6       7
+       9      12
+       0       1       0       0       0
+       9
+      14       0       0       8       2
+       0       0
+      10       9       7       8      11      12       6       5       8       7
+       4       3       5       6       2       1
+       0       1       0       0       0
+       9
+       0       1       0       0       0
+      12
+       8       0       0       4       1
+       0
+       9      10      11      12
+ ENREGISTREMENT DE TYPE   2
+ PILE NUMERO   2NBRE OBJETS NOMMES       1NBRE OBJETS       1
+ TEMP1   
+       1
+       1       1       2       2
+      -1      12       1
+ SCAL
+       0
+ SCAL AIRE  chp oint  cre e pa r EX COMP                                        
+                    
+       1       0
+  2.38461538461538E+02  2.38461538461539E+02  2.38461538461539E+02
+  2.38461538461538E+02  1.69230769230769E+02  1.69230769230769E+02
+  1.69230769230769E+02  1.69230769230769E+02  1.00000000000000E+02
+  1.00000000000000E+02  1.00000000000000E+02  1.00000000000000E+02
+ ENREGISTREMENT DE TYPE   2
+ PILE NUMERO  32NBRE OBJETS NOMMES       0NBRE OBJETS      12
+      12
+       6       8       2       4      11      12      10       9       3       1
+       5       7
+ ENREGISTREMENT DE TYPE   2
+ PILE NUMERO  33NBRE OBJETS NOMMES       0NBRE OBJETS       1
+      64
+  0.00000000000000E+00  0.00000000000000E+00  2.00000000000000E+00
+  0.00000000000000E+00  0.00000000000000E+00  0.00000000000000E+00
+  0.00000000000000E+00  0.00000000000000E+00  0.00000000000000E+00
+  1.00000000000000E+00  2.00000000000000E+00  0.00000000000000E+00
+  0.00000000000000E+00  1.00000000000000E+00  0.00000000000000E+00
+  0.00000000000000E+00  1.00000000000000E+00  0.00000000000000E+00
+  2.00000000000000E+00  0.00000000000000E+00  1.00000000000000E+00
+  0.00000000000000E+00  0.00000000000000E+00  0.00000000000000E+00
+  1.00000000000000E+00  1.00000000000000E+00  2.00000000000000E+00
+  0.00000000000000E+00  1.00000000000000E+00  1.00000000000000E+00
+  0.00000000000000E+00  0.00000000000000E+00  0.00000000000000E+00
+  0.00000000000000E+00  1.00000000000000E+00  0.00000000000000E+00
+  0.00000000000000E+00  1.00000000000000E+00  1.00000000000000E+00
+  0.00000000000000E+00  1.00000000000000E+00  0.00000000000000E+00
+  1.00000000000000E+00  0.00000000000000E+00  1.00000000000000E+00
+  1.00000000000000E+00  1.00000000000000E+00  0.00000000000000E+00
+  0.00000000000000E+00  1.00000000000000E+00  2.00000000000000E+00
+  0.00000000000000E+00  0.00000000000000E+00  0.00000000000000E+00
+  2.00000000000000E+00  0.00000000000000E+00  1.00000000000000E+00
+  0.00000000000000E+00  2.00000000000000E+00  0.00000000000000E+00
+  1.00000000000000E+00  1.00000000000000E+00  2.00000000000000E+00
+  0.00000000000000E+00
+ ENREGISTREMENT DE TYPE   5
+LABEL_AUTOMATIQUE_1                                                     
diff --git a/resources/castem17_result_xdr.sauv b/resources/castem17_result_xdr.sauv
new file mode 100644 (file)
index 0000000..27ac55b
Binary files /dev/null and b/resources/castem17_result_xdr.sauv differ
diff --git a/resources/dev/mc_suppr_valgrind b/resources/dev/mc_suppr_valgrind
new file mode 100644 (file)
index 0000000..7f536fd
--- /dev/null
@@ -0,0 +1,66 @@
+#
+# SWIG suppressions for MEDCoupling
+#
+
+{
+   <malloc>
+   Memcheck:Leak
+   fun:malloc
+   fun:PyObject_Malloc
+}
+
+{
+   <realloc_unicode>
+   Memcheck:Leak
+   fun:*alloc
+   ...
+   fun:PyUnicode_*
+}
+
+{
+   <swig_py_client_data>
+   Memcheck:Leak
+   match-leak-kinds: definite
+   fun:malloc
+   fun:SwigPyClientData_New
+}
+
+{
+   <dic2>
+   Memcheck:Leak
+   fun:malloc
+   ...
+   fun:*PyDict_*
+}
+
+{
+   <py_gc>
+   Memcheck:Leak
+   fun:realloc
+   fun:_PyObject_GC_Resize
+}
+{
+   <call>
+   Memcheck:Leak
+   fun:malloc
+   ...
+   fun:PyObject_Call
+}
+{
+   <load_mod>
+   Memcheck:Leak
+   fun:*alloc
+   ...
+   fun:_PyImport_LoadDynamicModule
+}
+
+{
+   <load_mod>
+   Memcheck:Leak
+   fun:*alloc
+   ...
+   fun:*PyInit*
+}
+
+
+
index d4b67e82f2271c0738899d49d260503b11cec421..84ce64080a2289bf4ce3df6befb8575879763cac 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2015-2016  CEA/DEN, EDF R&D
+# Copyright (C) 2015-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 881ef048994690ad6fcf0f5f17a33b460c2fbe2b..4c7374a1db036ad1d5962d4406bf0648dfaaa34b 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2015-2016  CEA/DEN, EDF R&D
+# Copyright (C) 2015-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index ed972a69cd25e8ac37e7c5a0685b416a006f4669..645930dff2f7e6eef208b141cd2458ceca83dd77 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 7181c28b3751e2d42731dfdf8df31e6654a36d1c..e094ddc7e9d654000af31b6424923d4f39f77bf9 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 3cd7db973e3cd448fad31c2173e1e9d6895cf6cc..c0db2f93cc7ad934d8ac9daff589d6ddb94d5a72 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 86e809f3411558f75a05467c3e475681f98e43cd..a33d3a8ed69c6441e8cd10e1146453d2fe97b496 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index c319c576f570db5ff357700ef58ed7338258b68a..b49c93268eeed8039e5c97debae4473f1fdb70ff 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 9497070aad5a208d4c52b17a998beed754589460..70753ded3885e1f0fadf1d24141ab187d6debaad 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 7beb4b37bafc91e7f44b1a1fcb4075198f6ce54c..76b2a98f2a3d1d5e8629739bb7a38636c81d5ac5 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 0569384a98ebcf0e4c4ec3a517fabd945ab05f1c..2972d8afbb01e1a83bc4fb10c3c70f9809fa4f7b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 671286417c7609dc77315a0e6c470d69b2afb16c..6b0bdf5cf13567ef4527853de4953f9642a1e847 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 51daf4284e40b8246c179898d2121c27d1f8e69d..21057292aabfff30faf3d1fc250e2c55dd5525b9 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2018  CEA/DEN, EDF R&D
+// Copyright (C) 2018-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index ea984a760b850b371262754b7321ae22b3a388df..c9a4f0e5e1e6f83d7e66ec7c6eb144c236b37960 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 110fd7ba5d25ab271d51dda9b8631ebe9c57f4de..5e6a9292be8cd14e88cab11e096293c60e4a6126 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index d165bfe8208586552dbbc5b16497233d03a94561..4d7ac724b67b9d5c8b0a25cefee2bba3e185a09e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index a406a315d5d9bcaa92a30898173f52bd52512e16..5ed88c71866a2f0813829c38e943c5dea59f9768 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2001-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
 
 // This library is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
index 4ea068a63a0b436b8df45704b002d3bb5ea493fb..a3424019aa3b1942838265b931c0cafc74201642 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2001-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Copyright (C) 2001, 2002, 2004, 2005, 2006, 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
 
 // This library is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
index 87cd0a6914325391cdac08e479f97678749f2ede..72938a4ef64880a5d3fc72f1f3977f5eaa7f74fc 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2001-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
+// Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
 
 // This library is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
index 1af0acd1e9d345a482eeaf250a772e2e813d39d5..39371844fca7c0db86cdbe15d4788448fd766a10 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index e29651b84897e3347e754519dd9c1e523d09651b..c4ea82210a6a1e57b963202811d9f2c252dd846c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 52e2f36454bbb1a7e452326f6873fa91614e0818..b5a3a7846da5015315bc024c0d40848925f0c982 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index b20ca410064ad655a57070fe5adfcf6c3dd776b4..032369073c442472156fb59dedf9229fe656b7cb 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 450e4bcf90d5c49e70106d05824f8e246bfa49c7..931fcdf255b8afbd2ae1c26f3be182c6a8788982 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 1b3d5612bdc23712a4dddd55c3df5fd5a8f78d78..71f05e28370bc23afcb09e7c6571bdd4c76e1265 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index fa9396510912e7364b736cbdedba70f5d76776f4..d6c73665574c85e2b38341bf9060e37f425bd348 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 159c4edef06acf9b3bda933ff6ebf646c7e66885..4b70eceba55bc0c49a5feb4c2b955b3164842a9f 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2016  CEA/DEN, EDF R&D
+# Copyright (C) 2012-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 8b45eaadc306f0b279289ae2e87b51aeb9740f09..585675205c19909ae7fb70688c7effa760b7fb05 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index dd37f1b83e0b042148a10544a61a080139293e76..4300b4327bdf3f89d6afd11164dd64f74f6b9f68 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 16e4ba5fc4b485c13765335b8dbe5e6eaafde3a5..18bbdf24205ce8c7ea7c82fe34020ca7bad0eddd 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index f94718ca04eaa90cc60f2d1cdc05b632b10147cf..98e30ec7a9578915781fc509b9e33cd7f3b973a2 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index f3d6828c3202de319e6d8c14969341e74115571d..dfa03a4b9f5c7f0355cf6e948b979320b9faa734 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 73f4b1f85ce4f3cb66f7ffb169d517923e662bc5..81d54f386bdc99323638bfeefbac0a52f47a4d5b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 9479d9575a84c5e4a03f4e4cc95a96fec540023f..365d4b4e44a12b23180c46fb7a31e40aaf2720b2 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 6556cf78779f633361344e958e3747e67beca6b3..54cdc5b5c69132e01db9b7658fb3ca59a20f3ac0 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index ed054eaee5c581238f1efc12e38420c97b02a942..0f3145cb923495698ff66be87856cf56be7fd784 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index c45e97bf3f020d0e06114e139f8ab173e83af4e9..7173c55e60c2bed44a3089c796cbd9bc546461ee 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 5a4aef4573b80b5da177b57fbb796e4cec75176d..76844461f0cffb419b12b92214961cf1a53f203e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index e1cb7282c17ba99bba3951dddea0d3b0af814c33..831d80718c8d68a4a7990301f16ad5fb3e06f966 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index b4260aaa2b8012d417c4889fce79ae1a42fafa9c..de086bb4defb1b89ed2410a31811a1aeb1ca675b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 6fcc16923f63955a62fc7eaa52de5401a7a76182..d63d34aaebe8e47d91038115a527c6da01a05f77 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index cb73178789e61b941d7637a724f7d1032e996770..16104ab5e38ccd475337bbcb6321631c4f4fac27 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index fcf888b1d277e17a28b04ef5a6639e4b3fcf4cae..60bdd97e676eb22ae844b6403dc74f09e7e6db77 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 9b2fb75a4d49e29160d51203fb56855ec3095da4..09eb07ce843a6d196bde81135f13e3fac2e140bf 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 7d28987801b404306137b11cf0c68127db82ed1a..939e85f8b38c6f5c6af23d4c7abc96d16071459f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 7bd2063a543acb41fb05348512ade26792a6dcb8..8c06642f905ca1ad7c0516069d8930ea9b7b6156 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2009-2016  OPEN CASCADE
+// Copyright (C) 2009-2019  OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index a06e7505884497cadcd9e57d380275dec309ea15..e9b192d7d96b1758537093bdb8f3266b1f0f0ac4 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2009-2016  OPEN CASCADE
+// Copyright (C) 2009-2019  OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 6761e210e939ac490d956c67d132f5df57e3199a..d040be703d737a6ab53e1be039ee4c9b016d6f85 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 975fc17b627d685afb1127c9f079e30cdf4f2949..c86fb8e40873436dcb40d30bbd2e677312270cc3 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index d35aaff83b095bc0d34422a5324f82fc99b4c6e3..58ce2b273c92dbefe9faf09a2e61dba6cb82d559 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index b32531a7d5b637d22fe14d09151b3116210dc030..d64893e089d8b97f510780c1852bac590a03250f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index bed1610b7d09726d86ca88c2d4cea3fb7606e19f..5498b53fe4eccce2375b1ff7b036da70725a24ef 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 2c4ac0bbf62099514858ce2d414966159a76174d..a15043c2eeddb5a9e837a722189934c0e7faf0f0 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 3c8215e948e27058922b039f24c9a1f53db35975..ab5e989d95f5a064db638abe2ca9d734a5159457 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index aaab69514333b2b46046f27b9b862bfd57b5bac1..54f9551aaac1674aca1e308b3871d3acd414dd49 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 223e34063ccbca24bfbaedcb6d2a2a6e179c927a..b96a8480962645a41dbfa57f096c80e2a1b399d1 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 56c748090b325aa43d513504d5679fa1f7afc9c2..3b3a150f13902ea0a1ac38e3c05a73eeccef8606 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 2cf96300fac4ee0520706273105336421df2bded..840f0d506b130df606eed23d37c1e54d2e34d5c0 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2007-2017  CEA/DEN, EDF R&D
+# Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -15,6 +15,7 @@
 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
 # Author : Anthony Geay (EDF R&D)
 
 import re
index 1fbdfd9a56f26929a253a7d20c374b86a9bf9c94..2f3ad3ff3eacd15101afc4077dd9566f4dbc4637 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 409cbc5f256873d41ca24f61ace3f1a3f294739e..a263134e88bf711508376c51bc28bbed30b8631f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 1bdf284a665d6105948d1922b120fbaf230eca14..391a2081dbef617caa8e5f0a9f8986e52b2adb4c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index e5188efaedfe77a59c8cff6b160cf2de3baa8f9d..2c555198835e06eb06afb96e8cca0df7f0432066 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -116,3 +116,13 @@ void IteratorOnComposedEdge::insertElemEdges(ComposedEdge *elems, bool changeMyS
     }
 }
 
+/*!
+ * Erase current element and place iterator onto the PREVIOUS element (eventually looping)
+ */
+void IteratorOnComposedEdge::eraseCurrent()
+{
+  delete(*_deep_it);
+  _deep_it = _list_handle->erase(_deep_it);
+  // By default erase place the iterator after the removed element:
+  previousLoop();
+}
index db517eff3ed4cb676f53cd1c4e7dc81d3d03f45b..1b55e17efbf897d08586cbab22a6981181eaa97b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -59,6 +59,7 @@ namespace INTERP_KERNEL
     INTERPKERNEL_EXPORT ElementaryEdge *current() { return *_deep_it; }
     INTERPKERNEL_EXPORT void assignMySelfToAllElems(ComposedEdge *elems);
     INTERPKERNEL_EXPORT void insertElemEdges(ComposedEdge *elems, bool changeMySelf);
+    INTERPKERNEL_EXPORT void eraseCurrent();
   private:
     std::list<ElementaryEdge *>::iterator _deep_it;
     std::list<ElementaryEdge *>* _list_handle;
index 4f2915ed4b495c47bee1715b8123847c620a1677..ce3e8f424f4bd73cb52509702206d246dcd17b02 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index a243b5d6e47d558cb6eb6762ed6e8f5d6f1b5524..b3dc012cc9c1b19880362c8c05331bc5df9d93d5 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index f445f5e446d9152e5a686f751601f67a2cbc251f..7357282391d8d583ba1eb336e8fac81edeb4c52e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -310,6 +310,14 @@ void ComposedEdge::dumpInXfigFile(std::ostream& stream, int resolution, const Bo
     (*iter)->dumpInXfigFile(stream,resolution,box);
 }
 
+void ComposedEdge::dumpToCout(const std::map<INTERP_KERNEL::Node *,int>& mapp) const
+{
+  int i=0;
+  for(std::list<ElementaryEdge *>::const_iterator iter=_sub_edges.begin();iter!=_sub_edges.end();iter++, i++)
+    (*iter)->dumpToCout(mapp, i);
+  std::cout << std::endl;
+}
+
 Node *ComposedEdge::getEndNode() const
 {
   return _sub_edges.back()->getEndNode();
@@ -589,9 +597,9 @@ double ComposedEdge::isInOrOutAlg(Node *nodeToTest, const std::set<Node*>& nodes
       if(val)
         {
           Edge *e=val->getPtr();
-          std::auto_ptr<EdgeIntersector> intersc(Edge::BuildIntersectorWith(e1,e));
+          std::unique_ptr<EdgeIntersector> intersc(Edge::BuildIntersectorWith(e1,e));
           bool obviousNoIntersection,areOverlapped;
-          intersc->areOverlappedOrOnlyColinears(0,obviousNoIntersection,areOverlapped);  // first parameter never used
+          intersc->areOverlappedOrOnlyColinears(obviousNoIntersection,areOverlapped);
           if(obviousNoIntersection)
             {
               continue;
index a475986e194e89dd257d06b6ca37b22e11d22d2d..77c36fe24fbbe4e5d593e9ff059fc41787a6ebaf 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -105,6 +105,7 @@ namespace INTERP_KERNEL
     INTERPKERNEL_EXPORT bool changeEndNodeWith(Node *node) const;
     INTERPKERNEL_EXPORT bool changeStartNodeWith(Node *node) const;
     INTERPKERNEL_EXPORT void dumpInXfigFile(std::ostream& stream, int resolution, const Bounds& box) const;
+    INTERPKERNEL_EXPORT void dumpToCout(const std::map<INTERP_KERNEL::Node *,int>& mapp) const;
     INTERPKERNEL_EXPORT bool isInOrOut(Node *nodeToTest) const;
     INTERPKERNEL_EXPORT bool isInOrOut2(Node *nodeToTest) const;
     INTERPKERNEL_EXPORT bool getDirection() const;
index 15687f76293d2674037acd37b099ef0834645308..074fd5b8fb6d3e191f0e2b01cc6d995c8832c512 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -340,7 +340,7 @@ bool IntersectElement::isIncludedByBoth() const
   return _e1.isIn(_chararct_val_for_e1) && _e2.isIn(_chararct_val_for_e2);
 }
 
-bool EdgeIntersector::intersect(const Bounds *whereToFind, std::vector<Node *>& newNodes, bool& order, MergePoints& commonNode)
+bool EdgeIntersector::intersect(std::vector<Node *>& newNodes, bool& order, MergePoints& commonNode)
 {
   std::list< IntersectElement > listOfIntesc=getIntersectionsCharacteristicVal();
   std::list< IntersectElement >::iterator iter;
@@ -391,6 +391,37 @@ bool EdgeIntersector::intersect(const Bounds *whereToFind, std::vector<Node *>&
   return true;
 }
 
+/*! If the 2 edges share one extremity, we can optimize since we already know where is the intersection.
+ *  In the case of ArcCSegIntersector, this also helps avoid degenerated cases.
+ */
+void EdgeIntersector::identifyEarlyIntersection(bool& i1S2S, bool& i1E2S, bool& i1S2E, bool& i1E2E)
+{
+  i1S2S = _e1.getStartNode() == _e2.getStartNode();
+  i1E2S = _e1.getEndNode() == _e2.getStartNode();
+  i1S2E = _e1.getStartNode() == _e2.getEndNode();
+  i1E2E = _e1.getEndNode() == _e2.getEndNode();
+  if (i1S2S || i1E2S || i1S2E || i1E2E)
+    {
+      Node * node;
+      bool i_1S(false),i_1E(false),i_2S(false),i_2E(false);
+      if (i1S2S || i1E2S)   // Common node is e2 start
+        {
+          node = _e2.getStartNode();
+          i_1S = i1S2S;        i_2S = true;
+          i_1E = i1E2S;        i_2E = false;
+        }
+      else                  // Common node is e2 end
+        {
+          node = _e2.getEndNode();
+          i_1S = i1S2E;        i_2S = false;
+          i_1E = i1E2E;        i_2E = true;
+        }
+      node->incrRef();
+      _earlyInter = new IntersectElement(_e1.getCharactValue(*node), _e2.getCharactValue(*node),
+          i_1S,i_1E,i_2S,i_2E,node,_e1,_e2,keepOrder());
+    }
+}
+
 /*!
  * Locates 'node' regarding edge this->_e1. If node is located close to (with distant lt epsilon) start or end point of _e1,
  * 'node' takes its place. In this case 'obvious' is set to true and 'commonNode' stores information of merge point and finally 'where' is set.
@@ -631,7 +662,7 @@ bool Edge::intersectWith(const Edge *other, MergePoints& commonNode,
   delete merge;
   merge=0;
   EdgeIntersector *intersector=BuildIntersectorWith(this,other);
-  ret=Intersect(this,other,intersector,merge,commonNode,outVal1,outVal2);
+  ret=Intersect(this,other,intersector,commonNode,outVal1,outVal2);
   delete intersector;
   return ret;
 }
@@ -674,7 +705,7 @@ void Edge::Interpolate1DLin(const std::vector<double>& distrib1, const std::vect
                   ComposedEdge *f2=new ComposedEdge;
                   SegSegIntersector inters(*e1,*e2);
                   bool b1,b2;
-                  inters.areOverlappedOrOnlyColinears(0,b1,b2);
+                  inters.areOverlappedOrOnlyColinears(b1,b2);
                   if(IntersectOverlapped(e1,e2,&inters,commonNode,*f1,*f2))
                     {
                       result[i][j]=f1->getCommonLengthWith(*f2)/e1->getCurveLength();
@@ -734,19 +765,19 @@ void Edge::getMiddleOfPointsOriented(const double *p1, const double *p2, double
   return getMiddleOfPoints(p1, p2, mid);
 }
 
-bool Edge::Intersect(const Edge *f1, const Edge *f2, EdgeIntersector *intersector, const Bounds *whereToFind, MergePoints& commonNode,
+bool Edge::Intersect(const Edge *f1, const Edge *f2, EdgeIntersector *intersector, MergePoints& commonNode,
                      ComposedEdge& outValForF1, ComposedEdge& outValForF2)
 {
   bool obviousNoIntersection;
   bool areOverlapped;
-  intersector->areOverlappedOrOnlyColinears(whereToFind,obviousNoIntersection,areOverlapped);
+  intersector->areOverlappedOrOnlyColinears(obviousNoIntersection,areOverlapped);
   if(areOverlapped)
     return IntersectOverlapped(f1,f2,intersector,commonNode,outValForF1,outValForF2);
   if(obviousNoIntersection)
     return false;
   std::vector<Node *> newNodes;
   bool order;
-  if(intersector->intersect(whereToFind,newNodes,order,commonNode))
+  if(intersector->intersect(newNodes,order,commonNode))
     {
       if(newNodes.empty())
         throw Exception("Internal error occurred - error in intersector implementation!");// This case should never happen
@@ -771,7 +802,7 @@ bool Edge::Intersect(const Edge *f1, const Edge *f2, EdgeIntersector *intersecto
         }
       return true;
     }
-  else//no intersection inside whereToFind
+  else
     return false;
 }
 
@@ -926,6 +957,22 @@ bool Edge::SplitOverlappedEdges(const Edge *e1, const Edge *e2, Node *nS, Node *
   }
 }
 
+void Edge::dumpToCout(const std::map<INTERP_KERNEL::Node *,int>& mapp, int index) const
+{
+  auto sI(mapp.find(getStartNode())), eI(mapp.find(getEndNode()));
+  int start = (sI == mapp.end() ? -1 : sI->second), end = (eI == mapp.end() ? -1 : eI->second);
+  std::string locs;
+  switch (getLoc())
+  {
+    case FULL_IN_1: locs="FULL_IN_1"; break;
+    case FULL_ON_1: locs="FULL_ON_1"; break;
+    case FULL_OUT_1: locs="FULL_OUT_1"; break;
+    case FULL_UNKNOWN: locs="FULL_UNKNOWN"; break;
+    default: locs="oh my God! This is so wrong.";
+  }
+  std::cout << "Edge [" << index << "] : ("<<  std::hex << this << std::dec << ") -> (" << start << ", " << end << ")\t" << locs << std::endl;
+}
+
 bool Edge::isEqual(const Edge& other) const
 {
   return _start->isEqual(*other._start) && _end->isEqual(*other._end);
@@ -1009,16 +1056,6 @@ void Edge::sortIdsAbs(const std::vector<INTERP_KERNEL::Node *>& addNodes, const
   for(std::vector< std::pair<double,Node *> >::const_iterator it=an2.begin();it!=an2.end();it++)
     {
       int idd=(*mapp2.find((*it).second)).second;
-      if((*it).first<QuadraticPlanarPrecision::getPrecision())
-        {
-          startId=idd;
-          continue;
-        }
-      if((*it).first>1-QuadraticPlanarPrecision::getPrecision())
-        {
-          endId=idd;
-          continue;
-        }
       tmpp.push_back(idd);
     }
   std::vector<int> tmpp2(tmpp.size()+2);
@@ -1034,3 +1071,31 @@ void Edge::sortIdsAbs(const std::vector<INTERP_KERNEL::Node *>& addNodes, const
       edgesThis.push_back(tmpp2[i+1]);
     }
 }
+
+void Edge::fillGlobalInfoAbs(bool direction, const std::map<INTERP_KERNEL::Node *,int>& mapThis, const std::map<INTERP_KERNEL::Node *,int>& mapOther, int offset1, int offset2, double fact, double baryX, double baryY,
+                                std::vector<int>& edgesThis, std::vector<double>& addCoo, std::map<INTERP_KERNEL::Node *,int> mapAddCoo) const
+{
+  int tmp[2];
+  _start->fillGlobalInfoAbs(mapThis,mapOther,offset1,offset2,fact,baryX,baryY,addCoo,mapAddCoo,tmp);
+  _end->fillGlobalInfoAbs(mapThis,mapOther,offset1,offset2,fact,baryX,baryY,addCoo,mapAddCoo,tmp+1);
+  if(direction)
+    {
+      edgesThis.push_back(tmp[0]);
+      edgesThis.push_back(tmp[1]);
+    }
+  else
+    {
+      edgesThis.push_back(tmp[1]);
+      edgesThis.push_back(tmp[0]);
+    }
+}
+
+void Edge::fillGlobalInfoAbs2(const std::map<INTERP_KERNEL::Node *,int>& mapThis, const std::map<INTERP_KERNEL::Node *,int>& mapOther, int offset1, int offset2, double fact, double baryX, double baryY,
+                              short skipStartOrEnd,
+                              std::vector<int>& edgesOther, std::vector<double>& addCoo, std::map<INTERP_KERNEL::Node *,int>& mapAddCoo) const
+{
+  if (skipStartOrEnd != -1) // see meaning in splitAbs()
+    _start->fillGlobalInfoAbs2(mapThis,mapOther,offset1,offset2,fact,baryX,baryY,addCoo,mapAddCoo,edgesOther);
+  if (skipStartOrEnd != 1)
+  _end->fillGlobalInfoAbs2(mapThis,mapOther,offset1,offset2,fact,baryX,baryY,addCoo,mapAddCoo,edgesOther);
+}
index c847530f261315bd29d4ed2e89c7ac587b355a71..1b4438e1d79f78ba3cebfc1177ee96da2bf8ad0d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -147,9 +147,9 @@ namespace INTERP_KERNEL
   {
   protected:
     //! All non symmetric methods are relative to 'e1'.
-    EdgeIntersector(const Edge& e1, const Edge& e2):_e1(e1),_e2(e2) { }
+    EdgeIntersector(const Edge& e1, const Edge& e2):_e1(e1),_e2(e2), _earlyInter(0) { }
   public:
-    virtual ~EdgeIntersector() { }
+    virtual ~EdgeIntersector() { if(_earlyInter) delete(_earlyInter); }
     virtual bool keepOrder() const = 0;
     virtual bool areColinears() const = 0;
     //!to call only if 'areOverlapped' have been set to true when areOverlappedOrOnlyColinears was called
@@ -157,16 +157,18 @@ namespace INTERP_KERNEL
     //!to call only if 'areOverlapped' have been set to true when areOverlappedOrOnlyColinears was called
     virtual void getPlacements(Node *start, Node *end, TypeOfLocInEdge& whereStart, TypeOfLocInEdge& whereEnd, MergePoints& commonNode) const = 0;
     //! When true is returned, newNodes should contains at least 1 element. All merging nodes betw _e1 and _e2 extremities must be done.
-    bool intersect(const Bounds *whereToFind, std::vector<Node *>& newNodes, bool& order, MergePoints& commonNode);
+    bool intersect(std::vector<Node *>& newNodes, bool& order, MergePoints& commonNode);
     //! Should be called only once per association.
-    virtual void areOverlappedOrOnlyColinears(const Bounds *whereToFind, bool& obviousNoIntersection, bool& areOverlapped) = 0;
+    virtual void areOverlappedOrOnlyColinears(bool& obviousNoIntersection, bool& areOverlapped) = 0;
     //! The size of returned vector is equal to number of potential intersections point. The values are so that their are interpretable by virtual Edge::isIn method.
     virtual std::list< IntersectElement > getIntersectionsCharacteristicVal() const = 0;
   protected:
     void obviousCaseForCurvAbscisse(Node *node, TypeOfLocInEdge& where, MergePoints& commonNode, bool& obvious) const;
+    virtual void identifyEarlyIntersection(bool& , bool&, bool&, bool&);
   protected:
     const Edge& _e1;
     const Edge& _e2;
+    IntersectElement *_earlyInter;   // Non null if the intersection can be determined early -> see areOverlappedOrOnlyColinears()
   };
 
   class INTERPKERNEL_EXPORT SameTypeEdgeIntersector : public EdgeIntersector
@@ -276,20 +278,23 @@ namespace INTERP_KERNEL
     static void Interpolate1DLin(const std::vector<double>& distrib1, const std::vector<double>& distrib2,
                                  std::map<int, std::map<int,double> >& result);
     virtual void dumpInXfigFile(std::ostream& stream, bool direction, int resolution, const Bounds& box) const = 0;
+    void dumpToCout(const std::map<INTERP_KERNEL::Node *,int>& mapp, int index) const;
     bool isEqual(const Edge& other) const;
   public:
     bool sortSubNodesAbs(const double *coo, std::vector<int>& subNodes);
     void sortIdsAbs(const std::vector<INTERP_KERNEL::Node *>& addNodes, const std::map<INTERP_KERNEL::Node *, int>& mapp1, const std::map<INTERP_KERNEL::Node *, int>& mapp2, std::vector<int>& edgesThis);
-    virtual void fillGlobalInfoAbs(bool direction, const std::map<INTERP_KERNEL::Node *,int>& mapThis, const std::map<INTERP_KERNEL::Node *,int>& mapOther, int offset1, int offset2, double fact, double baryX, double baryY,
-                                   std::vector<int>& edgesThis, std::vector<double>& addCoo, std::map<INTERP_KERNEL::Node *,int> mapAddCoo) const = 0;
-    virtual void fillGlobalInfoAbs2(const std::map<INTERP_KERNEL::Node *,int>& mapThis, const std::map<INTERP_KERNEL::Node *,int>& mapOther, int offset1, int offset2, double fact, double baryX, double baryY,
-                                    std::vector<int>& edgesOther, std::vector<double>& addCoo, std::map<INTERP_KERNEL::Node *,int>& mapAddCoo) const = 0;
     virtual Edge *buildEdgeLyingOnMe(Node *start, Node *end, bool direction=true) const = 0;
+    void fillGlobalInfoAbs(bool direction, const std::map<INTERP_KERNEL::Node *,int>& mapThis, const std::map<INTERP_KERNEL::Node *,int>& mapOther, int offset1, int offset2, double fact, double baryX, double baryY,
+                           std::vector<int>& edgesThis, std::vector<double>& addCoo, std::map<INTERP_KERNEL::Node *,int> mapAddCoo) const;
+    void fillGlobalInfoAbs2(const std::map<INTERP_KERNEL::Node *,int>& mapThis, const std::map<INTERP_KERNEL::Node *,int>& mapOther, int offset1, int offset2, double fact, double baryX, double baryY,
+                            short skipStartOrEnd,
+                            std::vector<int>& edgesOther, std::vector<double>& addCoo, std::map<INTERP_KERNEL::Node *,int>& mapAddCoo) const;
+
   protected:
     Edge():_cnt(1),_loc(FULL_UNKNOWN),_start(0),_end(0) { }
     virtual ~Edge();
     static int CombineCodes(TypeOfLocInEdge code1, TypeOfLocInEdge code2);
-    static bool Intersect(const Edge *f1, const Edge *f2, EdgeIntersector *intersector, const Bounds *whereToFind, MergePoints& commonNode,
+    static bool Intersect(const Edge *f1, const Edge *f2, EdgeIntersector *intersector, MergePoints& commonNode,
                           ComposedEdge& outValForF1, ComposedEdge& outValForF2);
     //! The code 'code' is built by method combineCodes
     static bool SplitOverlappedEdges(const Edge *e1, const Edge *e2, Node *nS, Node *nE, bool direction, int code,
index 0f28fffc201b9f8c780f5a6fd6baf9ade265dbda..0f5da61ca28bca08c807d8f28c4d4fe4891b1810 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index a0b3b9d233f2809b99295e27c0504292667fff7b..f73b9e154295082f7cbe64569e2786a5132d962e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -171,7 +171,7 @@ bool ArcCArcCIntersector::areArcsOverlapped(const EdgeArcCircle& a1, const EdgeA
   return Node::areDoubleEqualsWPRight(a,1.,2.);
 }
 
-void ArcCArcCIntersector::areOverlappedOrOnlyColinears(const Bounds *whereToFind, bool& obviousNoIntersection, bool& areOverlapped)
+void ArcCArcCIntersector::areOverlappedOrOnlyColinears(bool& obviousNoIntersection, bool& areOverlapped)
 {
   _dist=Node::distanceBtw2Pt(getE1().getCenter(),getE2().getCenter());
   double radius1=getE1().getRadius(); double radius2=getE2().getRadius();
@@ -321,25 +321,33 @@ std::list< IntersectElement > ArcCArcCIntersector::getIntersectionsCharacteristi
   }
   return ret;*/
 
-ArcCSegIntersector::ArcCSegIntersector(const EdgeArcCircle& e1, const EdgeLin& e2, bool reverse):CrossTypeEdgeIntersector(e1,e2,reverse)
+ArcCSegIntersector::ArcCSegIntersector(const EdgeArcCircle& e1, const EdgeLin& e2, bool reverse):
+    CrossTypeEdgeIntersector(e1,e2,reverse),
+    _deltaRoot_div_dr(0.),
+    _i1S2E(false),_i1E2E(false)
 {
+  const double *center=getE1().getCenter();
+  _dx=(*(_e2.getEndNode()))[0]-(*(_e2.getStartNode()))[0];
+  _dy=(*(_e2.getEndNode()))[1]-(*(_e2.getStartNode()))[1];
+  _drSq=_dx*_dx+_dy*_dy;
+  _cross=
+      ((*(_e2.getStartNode()))[0]-center[0])*((*(_e2.getEndNode()))[1]-center[1])-
+      ((*(_e2.getStartNode()))[1]-center[1])*((*(_e2.getEndNode()))[0]-center[0]);
 }
 
 /**
   See http://mathworld.wolfram.com/Circle-LineIntersection.html
-  _cross is 'D', the computation is done with the translation to put back the circle at the origin.s
+  _cross is 'D', the computation is done with the translation to put back the circle at the origin
 */
-void ArcCSegIntersector::areOverlappedOrOnlyColinears(const Bounds *whereToFind, bool& obviousNoIntersection, bool& areOverlapped)
+void ArcCSegIntersector::areOverlappedOrOnlyColinears(bool& obviousNoIntersection, bool& areOverlapped)
 {
   areOverlapped=false;//No overlapping by construction
-  const double *center=getE1().getCenter();
+
+  // Similar optimisation than SegSegIntersector::areOverlappedOrOnlyColinears()
+  bool dnu1, dnu2;
+  identifyEarlyIntersection(dnu1, dnu2, _i1S2E, _i1E2E);
+
   const double R = getE1().getRadius();
-  _dx=(*(_e2.getEndNode()))[0]-(*(_e2.getStartNode()))[0];
-  _dy=(*(_e2.getEndNode()))[1]-(*(_e2.getStartNode()))[1];
-  _drSq=_dx*_dx+_dy*_dy;
-  _cross=
-      ((*(_e2.getStartNode()))[0]-center[0])*((*(_e2.getEndNode()))[1]-center[1])-
-      ((*(_e2.getStartNode()))[1]-center[1])*((*(_e2.getEndNode()))[0]-center[0]);
 
   // We need to compute d = R*R-_cross*_cross/_drSq
   // In terms of numerical precision, this can trigger 'catastrophic cancellation' and is hence better expressed as:
@@ -353,7 +361,7 @@ void ArcCSegIntersector::areOverlappedOrOnlyColinears(const Bounds *whereToFind,
   double d = add*diff;
   // Compute deltaRoot_div_dr := sqrt(delta)/dr, where delta has the meaning of Wolfram.
   // Then 2*deltaRoot_div_dr is the distance between the two intersection points of the line with the circle. This is what we compare to eps.
-  // We compute it in such a way that it can be used in tests too (a very negative value means we're far apart from intersection)
+  // We compute it in such a way that it can be used in boolean tests too (a very negative value means we're far apart from intersection)
   _deltaRoot_div_dr = Node::sign(d)*sqrt(fabs(d));
 
   if( 2*_deltaRoot_div_dr > -QuadraticPlanarPrecision::getPrecision())
@@ -380,28 +388,70 @@ std::list< IntersectElement > ArcCSegIntersector::getIntersectionsCharacteristic
   std::list< IntersectElement > ret;
   const double *center=getE1().getCenter();
   if(!(2*fabs(_deltaRoot_div_dr) < QuadraticPlanarPrecision::getPrecision())) // see comments in areOverlappedOrOnlyColinears()
-    {
+    {   // Two intersection nodes
+      // -> if a common node found, there is a chance that this is the only one (i.e. second intersection point is outside e1 and e2)
+      if(_earlyInter)
+        {
+          // Check tangent vector of the arc circle at the common node with the linear segment.
+          // There we can tell if the arc of circle is 'moving away' from the seg, or if it might intersect it twice
+          const Node &n(*_earlyInter->getNodeOnly());
+          const double * center(getE1().getCenter());
+
+          double tang[2] = {-(n[1]-center[1]), n[0]-center[0]};  // (-y, x) is the tangent vector in the trigo direction with (x,y) = (center->node)
+          bool invSeg = _i1S2E || _i1E2E;
+          double linEdge[2] = {invSeg ? (-_dx) : _dx, invSeg ? (-_dy) : _dy};
+          if(tang[1]*linEdge[0]-tang[0]*linEdge[1] < 0)
+            {
+              ret.push_back(*_earlyInter);
+              return ret;
+            }
+        }
+
       double determinant=fabs(_deltaRoot_div_dr)/sqrt(_drSq);
       double x1=(_cross*_dy/_drSq+Node::sign(_dy)*_dx*determinant)+center[0];
       double y1=(-_cross*_dx/_drSq+fabs(_dy)*determinant)+center[1];
       Node *intersect1=new Node(x1,y1); intersect1->declareOn();
-      bool i1_1S=_e1.getStartNode()->isEqual(*intersect1);
-      bool i1_1E=_e1.getEndNode()->isEqual(*intersect1);
-      bool i1_2S=_e2.getStartNode()->isEqual(*intersect1);
-      bool i1_2E=_e2.getEndNode()->isEqual(*intersect1);
-      ret.push_back(IntersectElement(getE1().getCharactValue(*intersect1),getE2().getCharactValue(*intersect1),i1_1S,i1_1E,i1_2S,i1_2E,intersect1,_e1,_e2,keepOrder()));
-      //
       double x2=(_cross*_dy/_drSq-Node::sign(_dy)*_dx*determinant)+center[0];
       double y2=(-_cross*_dx/_drSq-fabs(_dy)*determinant)+center[1];
       Node *intersect2=new Node(x2,y2); intersect2->declareOn();
-      bool i2_1S=_e1.getStartNode()->isEqual(*intersect2);
-      bool i2_1E=_e1.getEndNode()->isEqual(*intersect2);
-      bool i2_2S=_e2.getStartNode()->isEqual(*intersect2);
-      bool i2_2E=_e2.getEndNode()->isEqual(*intersect2);
-      ret.push_back(IntersectElement(getE1().getCharactValue(*intersect2),getE2().getCharactValue(*intersect2),i2_1S,i2_1E,i2_2S,i2_2E,intersect2,_e1,_e2,keepOrder()));
+
+      bool isN1(false), isN2(false);
+      if (_earlyInter)
+        {
+          // Which node do we actually already found? Assume this is the closest ...
+          const Node &iN = *(_earlyInter->getNodeOnly());
+          const Node &n1(*intersect1), &n2(*intersect2);
+          double d1 = std::max(fabs(iN[0]-n1[0]), fabs(iN[1]-n1[1]));
+          double d2 = std::max(fabs(iN[0]-n2[0]), fabs(iN[1]-n2[1]));
+          isN1 = d1 < d2; isN2 = !isN1;
+          if (isN1) intersect1->decrRef();
+          if (isN2) intersect2->decrRef();
+          ret.push_back(*_earlyInter);
+        }
+      if (!isN1)
+        {
+          bool i1_1S=_e1.getStartNode()->isEqual(*intersect1);
+          bool i1_1E=_e1.getEndNode()->isEqual(*intersect1);
+          bool i1_2S=_e2.getStartNode()->isEqual(*intersect1);
+          bool i1_2E=_e2.getEndNode()->isEqual(*intersect1);
+          ret.push_back(IntersectElement(getE1().getCharactValue(*intersect1),getE2().getCharactValue(*intersect1),i1_1S,i1_1E,i1_2S,i1_2E,intersect1,_e1,_e2,keepOrder()));
+        }
+      if(!isN2)
+        {
+          bool i2_1S=_e1.getStartNode()->isEqual(*intersect2);
+          bool i2_1E=_e1.getEndNode()->isEqual(*intersect2);
+          bool i2_2S=_e2.getStartNode()->isEqual(*intersect2);
+          bool i2_2E=_e2.getEndNode()->isEqual(*intersect2);
+          ret.push_back(IntersectElement(getE1().getCharactValue(*intersect2),getE2().getCharactValue(*intersect2),i2_1S,i2_1E,i2_2S,i2_2E,intersect2,_e1,_e2,keepOrder()));
+        }
     }
   else//tangent intersection
     {
+      if (_earlyInter)
+        {
+          ret.push_back(*_earlyInter);
+          return ret;
+        }
       double x=(_cross*_dy)/_drSq+center[0];
       double y=(-_cross*_dx)/_drSq+center[1];
       Node *intersect3=new Node(x,y); intersect3->declareOnTangent();
@@ -839,28 +889,3 @@ void EdgeArcCircle::updateBounds()
   if(IsIn2Pi(_angle0,_angle,M_PI))
     _bounds[0]=_center[0]-_radius;
 }
-
-void EdgeArcCircle::fillGlobalInfoAbs(bool direction, const std::map<INTERP_KERNEL::Node *,int>& mapThis, const std::map<INTERP_KERNEL::Node *,int>& mapOther, int offset1, int offset2, double fact, double baryX, double baryY,
-                                      std::vector<int>& edgesThis, std::vector<double>& addCoo, std::map<INTERP_KERNEL::Node *,int> mapAddCoo) const
-{
-  int tmp[2];
-  _start->fillGlobalInfoAbs(mapThis,mapOther,offset1,offset2,fact,baryX,baryY,addCoo,mapAddCoo,tmp);
-  _end->fillGlobalInfoAbs(mapThis,mapOther,offset1,offset2,fact,baryX,baryY,addCoo,mapAddCoo,tmp+1);
-  if(direction)
-    {
-      edgesThis.push_back(tmp[0]);
-      edgesThis.push_back(tmp[1]);
-    }
-  else
-    {
-      edgesThis.push_back(tmp[1]);
-      edgesThis.push_back(tmp[0]);
-    }
-}
-
-void EdgeArcCircle::fillGlobalInfoAbs2(const std::map<INTERP_KERNEL::Node *,int>& mapThis, const std::map<INTERP_KERNEL::Node *,int>& mapOther, int offset1, int offset2, double fact, double baryX, double baryY,
-                                       std::vector<int>& edgesOther, std::vector<double>& addCoo, std::map<INTERP_KERNEL::Node *,int>& mapAddCoo) const
-{
-  _start->fillGlobalInfoAbs2(mapThis,mapOther,offset1,offset2,fact,baryX,baryY,addCoo,mapAddCoo,edgesOther);
-  _end->fillGlobalInfoAbs2(mapThis,mapOther,offset1,offset2,fact,baryX,baryY,addCoo,mapAddCoo,edgesOther);
-}
index fc32223e20ee2176e8034d486741bff6a02d586b..ea2373dc0396ce43dadc9c3a6824b00762364640 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -33,7 +33,7 @@ namespace INTERP_KERNEL
     bool haveTheySameDirection() const;
     bool areColinears() const;
     void getPlacements(Node *start, Node *end, TypeOfLocInEdge& whereStart, TypeOfLocInEdge& whereEnd, MergePoints& commonNode) const;
-    void areOverlappedOrOnlyColinears(const Bounds *whereToFind, bool& obviousNoIntersection, bool& areOverlapped);
+    void areOverlappedOrOnlyColinears(bool& obviousNoIntersection, bool& areOverlapped);
     std::list< IntersectElement > getIntersectionsCharacteristicVal() const;
   private:
     //! return angle in ]-Pi;Pi[ - 'node' must be on curve of '_e1'
@@ -44,7 +44,7 @@ namespace INTERP_KERNEL
     const EdgeArcCircle& getE1() const { return (const EdgeArcCircle&)_e1; }
     const EdgeArcCircle& getE2() const { return (const EdgeArcCircle&)_e2; }
   private:
-    double _dist;
+    double _dist;       // distance between the two arc centers
   };
 
   /**
@@ -57,7 +57,7 @@ namespace INTERP_KERNEL
     //virtual overloading
     bool areColinears() const;
     void getPlacements(Node *start, Node *end, TypeOfLocInEdge& whereStart, TypeOfLocInEdge& whereEnd, MergePoints& commonNode) const;
-    void areOverlappedOrOnlyColinears(const Bounds *whereToFind, bool& obviousNoIntersection, bool& areOverlapped);
+    void areOverlappedOrOnlyColinears(bool& obviousNoIntersection, bool& areOverlapped);
     std::list< IntersectElement > getIntersectionsCharacteristicVal() const;
   private:
     const EdgeArcCircle& getE1() const { return (const EdgeArcCircle&)_e1; }
@@ -68,6 +68,7 @@ namespace INTERP_KERNEL
     double _drSq;         //!< Square of the norm of the seg
     double _cross;        //!< See areOverlappedOrOnlyColinears()
     double _deltaRoot_div_dr;    //!< See areOverlappedOrOnlyColinears()
+    bool _i1S2E,_i1E2E;
   };
 
   class INTERPKERNEL_EXPORT EdgeArcCircle : public Edge
@@ -124,10 +125,7 @@ namespace INTERP_KERNEL
   protected:
     void updateBounds();
     Edge *buildEdgeLyingOnMe(Node *start, Node *end, bool direction=true) const;
-    void fillGlobalInfoAbs(bool direction, const std::map<INTERP_KERNEL::Node *,int>& mapThis, const std::map<INTERP_KERNEL::Node *,int>& mapOther, int offset1, int offset2, double fact, double baryX, double baryY,
-                           std::vector<int>& edgesThis, std::vector<double>& addCoo, std::map<INTERP_KERNEL::Node *,int> mapAddCoo) const;
-    void fillGlobalInfoAbs2(const std::map<INTERP_KERNEL::Node *,int>& mapThis, const std::map<INTERP_KERNEL::Node *,int>& mapOther, int offset1, int offset2, double fact, double baryX, double baryY,
-                            std::vector<int>& edgesOther, std::vector<double>& addCoo, std::map<INTERP_KERNEL::Node *,int>& mapAddCoo) const;
+
   protected:
     //! Absolute angle where the arc starts. Value between -Pi and Pi
     double _angle0;
index 3ab7634a7f0b4dd1354a09997231befb7117ade7..ff9e777e47ec7a7028ef546659da7dc719d0d4bd 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 68e5487dcb7acc45cdd96a66a238e3b64ef5bd25..6bc31ecebf2368066f174315f6beb81392ffb7ef 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 125ab55060d3e1e8876d19d8290fa8b87cf0e0f8..5c21df32f529609693a478b258765cc68c033298 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -30,16 +30,21 @@ namespace INTERP_KERNEL
   extern const unsigned MAX_SIZE_OF_LINE_XFIG_FILE=1024;
 }
 
-SegSegIntersector::SegSegIntersector(const EdgeLin& e1, const EdgeLin& e2):SameTypeEdgeIntersector(e1,e2)
+SegSegIntersector::SegSegIntersector(const EdgeLin& e1, const EdgeLin& e2):
+        SameTypeEdgeIntersector(e1,e2)
 {
-  _matrix[0]=(*(e2.getStartNode()))[0]-(*(e2.getEndNode()))[0];
-  _matrix[1]=(*(e1.getEndNode()))[0]-(*(e1.getStartNode()))[0];
-  _matrix[2]=(*(e2.getStartNode()))[1]-(*(e2.getEndNode()))[1];
-  _matrix[3]=(*(e1.getEndNode()))[1]-(*(e1.getStartNode()))[1];
-  _col[0]=_matrix[3]*(*(e1.getStartNode()))[0]-_matrix[1]*(*(e1.getStartNode()))[1];
-  _col[1]=-_matrix[2]*(*(e2.getStartNode()))[0]+_matrix[0]*(*(e2.getStartNode()))[1];
+  _matrix[0]=(*(e1.getEndNode()))[0]-(*(e1.getStartNode()))[0];
+  _matrix[1]=(*(e1.getEndNode()))[1]-(*(e1.getStartNode()))[1];
+  _matrix[2]=(*(e2.getEndNode()))[0]-(*(e2.getStartNode()))[0];
+  _matrix[3]=(*(e2.getEndNode()))[1]-(*(e2.getStartNode()))[1];
+
+  _determinant=_matrix[0]*_matrix[3]-_matrix[1]*_matrix[2];
+
+  _col[0]=_matrix[1]*(*(e1.getStartNode()))[0]-_matrix[0]*(*(e1.getStartNode()))[1];
+  _col[1]=_matrix[3]*(*(e2.getStartNode()))[0]-_matrix[2]*(*(e2.getStartNode()))[1];
+
   //Little trick to avoid problems if 'e1' and 'e2' are colinears and along Ox or Oy axes.
-  if(fabs(_matrix[3])>fabs(_matrix[1]))
+  if(fabs(_matrix[1])>fabs(_matrix[0]))
     _ind=0;
   else
     _ind=1;
@@ -47,12 +52,10 @@ SegSegIntersector::SegSegIntersector(const EdgeLin& e1, const EdgeLin& e2):SameT
 
 /*!
  * Must be called when 'this' and 'other' have been detected to be at least colinear. Typically they are overlapped.
- * Must be called after call of areOverlappedOrOnlyColinears.
  */
 bool SegSegIntersector::haveTheySameDirection() const
 {
-  return (_matrix[3]*_matrix[1]+_matrix[2]*_matrix[0])>0.;
-  //return (_matrix[_ind?1:0]>0. && _matrix[_ind?3:2]>0.) || (_matrix[_ind?1:0]<0. && _matrix[_ind?3:2]<0.);
+  return (_matrix[0]*_matrix[2]+_matrix[1]*_matrix[3])>0.;
 }
 
 /*!
@@ -85,8 +88,15 @@ void SegSegIntersector::getCurveAbscisse(Node *node, TypeOfLocInEdge& where, Mer
 std::list< IntersectElement > SegSegIntersector::getIntersectionsCharacteristicVal() const
 {
   std::list< IntersectElement > ret;
-  double x=_matrix[0]*_col[0]+_matrix[1]*_col[1];
-  double y=_matrix[2]*_col[0]+_matrix[3]*_col[1];
+  if (_earlyInter)
+    {
+      // Intersection was already found: it is a common node shared by _e1 and _e2 - see areOverlappedOrOnlyColinears()
+      ret.push_back(*_earlyInter);
+      return ret;
+    }
+
+  double x= (-_matrix[2]*_col[0]+_matrix[0]*_col[1]) / _determinant;
+  double y= (-_matrix[3]*_col[0]+_matrix[1]*_col[1]) / _determinant;
   //Only one intersect point possible
   Node *node=new Node(x,y);
   node->declareOn();
@@ -108,14 +118,15 @@ std::list< IntersectElement > SegSegIntersector::getIntersectionsCharacteristicV
  */
 bool SegSegIntersector::areColinears() const
 {
-  Bounds b;
-  b.prepareForAggregation();
-  b.aggregate(_e1.getBounds());
-  b.aggregate(_e2.getBounds());
-  double determinant=_matrix[0]*_matrix[3]-_matrix[1]*_matrix[2];
-  double dimChar=b.getCaracteristicDim();
-
-  return fabs(determinant)< 2.*dimChar*QuadraticPlanarPrecision::getPrecision(); // same criteria as in areOverlappedOrOnlyColinears, see comment below
+  Bounds b1, b2;
+  b1.prepareForAggregation();
+  b2.prepareForAggregation();
+  b1.aggregate(_e1.getBounds());
+  b2.aggregate(_e2.getBounds());
+  double dimCharE1(b1.getCaracteristicDim()) ,dimCharE2(b2.getCaracteristicDim());
+
+  // same criteria as in areOverlappedOrOnlyColinears, see comment below
+  return fabs(_determinant)<dimCharE1*dimCharE2*QuadraticPlanarPrecision::getPrecision();
 }
 
 /*!
@@ -126,32 +137,39 @@ bool SegSegIntersector::areColinears() const
  * \param areOverlapped if colinearity if true, this parameter looks if e1 and e2 are overlapped, i.e. is they lie on the same line (= this is different from
  * a true intersection, two segments can be in "overlap" mode, without intersecting)
  */
-void SegSegIntersector::areOverlappedOrOnlyColinears(const Bounds *whereToFind, bool& obviousNoIntersection, bool& areOverlapped)
+void SegSegIntersector::areOverlappedOrOnlyColinears(bool& obviousNoIntersection, bool& areOverlapped)
 {
-  double determinant=_matrix[0]*_matrix[3]-_matrix[1]*_matrix[2];
-  Bounds b;
-  b.prepareForAggregation();
-  b.aggregate(_e1.getBounds());
-  b.aggregate(_e2.getBounds());
-  double dimChar=b.getCaracteristicDim();
+  Bounds b1, b2;
+  b1.prepareForAggregation();
+  b2.prepareForAggregation();
+  b1.aggregate(_e1.getBounds());
+  b2.aggregate(_e2.getBounds());
+  double dimCharE1(b1.getCaracteristicDim()) ,dimCharE2(b2.getCaracteristicDim());
 
   // Same criteria as in areColinears(), see doc.
-  // [ABN] the 2 is not really justified, but the initial tests from Tony were written so closely to precision that I can't bother to change all of them ...
-  if(fabs(determinant)>2.*dimChar*QuadraticPlanarPrecision::getPrecision())
+  if(fabs(_determinant)>dimCharE1*dimCharE2*QuadraticPlanarPrecision::getPrecision())  // Non colinear vectors
     {
-      obviousNoIntersection=false; areOverlapped=false;
-      _matrix[0]/=determinant; _matrix[1]/=determinant; _matrix[2]/=determinant; _matrix[3]/=determinant;
+      areOverlapped=false;
+      obviousNoIntersection=false;
+
+      // If they share one extremity, we can optimize since we already know where is the intersection:
+      bool a,b,c,d;
+      identifyEarlyIntersection(a,b,c,d);
     }
-  else  // colinear vectors
+  else  // Colinear vectors
     {
-      //retrieving initial matrix and shuffling it (will be used in getIntersectionsCharacteristicVal())
-      double tmp=_matrix[0]; _matrix[0]=_matrix[3]; _matrix[3]=tmp;
-      _matrix[1]=-_matrix[1]; _matrix[2]=-_matrix[2];
-      //
-      double x=(*(_e1.getStartNode()))[0]-(*(_e2.getStartNode()))[0];
-      double y=(*(_e1.getStartNode()))[1]-(*(_e2.getStartNode()))[1];   // (x,y) is the vector between the two start points of e1 and e2
-      areOverlapped = fabs(_matrix[1]*y+_matrix[0]*x) < dimChar*QuadraticPlanarPrecision::getPrecision(); // test colinearity of (x,y) with e1
-
+      // Compute vectors joining tips of e1 and e2
+      double xS=(*(_e1.getStartNode()))[0]-(*(_e2.getStartNode()))[0];
+      double yS=(*(_e1.getStartNode()))[1]-(*(_e2.getStartNode()))[1];
+      double xE=(*(_e1.getEndNode()))[0]-(*(_e2.getEndNode()))[0];
+      double yE=(*(_e1.getEndNode()))[1]-(*(_e2.getEndNode()))[1];
+      double maxDimS(std::max(fabs(xS),fabs(yS))), maxDimE(std::max(fabs(xE), fabs(yE)));
+      bool isS = (maxDimS > maxDimE), isE1 = (dimCharE1 >= dimCharE2);
+      double x = isS ? xS : xE;
+      double y = isS ? yS : yE;
+      unsigned shift = isE1 ? 0 : 2;
+      // test colinearity of the greatest tip-joining vector and greatest vector among {e1, e2}
+      areOverlapped = fabs(x*_matrix[1+shift]-y*_matrix[0+shift]) < dimCharE1*dimCharE2*QuadraticPlanarPrecision::getPrecision();
       // explanation: if areOverlapped is true, we don't know yet if there will be an intersection (see meaning of areOverlapped in method doxy above)
       // if areOverlapped is false, we have two colinear vectors, not lying on the same line, so we're sure there is no intersec
       obviousNoIntersection = !areOverlapped;
@@ -326,28 +344,3 @@ double EdgeLin::getCharactValueEng(const double *node) const
   double car1_1y=node[1]-(*(_start))[1]; double car1_2y=(*(_end))[1]-(*(_start))[1];
   return (car1_1x*car1_2x+car1_1y*car1_2y)/(car1_2x*car1_2x+car1_2y*car1_2y);
 }
-
-void EdgeLin::fillGlobalInfoAbs(bool direction, const std::map<INTERP_KERNEL::Node *,int>& mapThis, const std::map<INTERP_KERNEL::Node *,int>& mapOther, int offset1, int offset2, double fact, double baryX, double baryY,
-                                std::vector<int>& edgesThis, std::vector<double>& addCoo, std::map<INTERP_KERNEL::Node *,int> mapAddCoo) const
-{
-  int tmp[2];
-  _start->fillGlobalInfoAbs(mapThis,mapOther,offset1,offset2,fact,baryX,baryY,addCoo,mapAddCoo,tmp);
-  _end->fillGlobalInfoAbs(mapThis,mapOther,offset1,offset2,fact,baryX,baryY,addCoo,mapAddCoo,tmp+1);
-  if(direction)
-    {
-      edgesThis.push_back(tmp[0]);
-      edgesThis.push_back(tmp[1]);
-    }
-  else
-    {
-      edgesThis.push_back(tmp[1]);
-      edgesThis.push_back(tmp[0]);
-    }
-}
-
-void EdgeLin::fillGlobalInfoAbs2(const std::map<INTERP_KERNEL::Node *,int>& mapThis, const std::map<INTERP_KERNEL::Node *,int>& mapOther, int offset1, int offset2, double fact, double baryX, double baryY,
-                                 std::vector<int>& edgesOther, std::vector<double>& addCoo, std::map<INTERP_KERNEL::Node *,int>& mapAddCoo) const
-{
-  _start->fillGlobalInfoAbs2(mapThis,mapOther,offset1,offset2,fact,baryX,baryY,addCoo,mapAddCoo,edgesOther);
-  _end->fillGlobalInfoAbs2(mapThis,mapOther,offset1,offset2,fact,baryX,baryY,addCoo,mapAddCoo,edgesOther);
-}
index 9262f20a0808c4fd81e8e9a818d4d1f1bc27ea0b..217637779880c7aa23883d140ac0277c0219ffa4 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -34,7 +34,7 @@ namespace INTERP_KERNEL
     bool areColinears() const;
     bool haveTheySameDirection() const;
     void getPlacements(Node *start, Node *end, TypeOfLocInEdge& whereStart, TypeOfLocInEdge& whereEnd, MergePoints& commonNode) const;
-    void areOverlappedOrOnlyColinears(const Bounds *whereToFind, bool& obviousNoIntersection, bool& areOverlapped);
+    void areOverlappedOrOnlyColinears(bool& obviousNoIntersection, bool& areOverlapped);
     std::list< IntersectElement > getIntersectionsCharacteristicVal() const;
   private:
     void getCurveAbscisse(Node *node, TypeOfLocInEdge& where, MergePoints& commonNode) const;
@@ -42,7 +42,8 @@ namespace INTERP_KERNEL
     //! index on which all single index op will be performed. Filled in case colinearity is equal to true.
     int _ind;
     double _col[2];
-    double _matrix[4];//SPACEDIM*SPACEDIM
+    double _matrix[4];               //SPACEDIM*SPACEDIM  = [e1_x, e1_y, e2_x, e2_y]
+    double _determinant;
   };
 
   class INTERPKERNEL_EXPORT EdgeLin : public Edge
@@ -77,10 +78,6 @@ namespace INTERP_KERNEL
     EdgeLin() { }
     void updateBounds();
     Edge *buildEdgeLyingOnMe(Node *start, Node *end, bool direction) const;
-    void fillGlobalInfoAbs(bool direction, const std::map<INTERP_KERNEL::Node *,int>& mapThis, const std::map<INTERP_KERNEL::Node *,int>& mapOther, int offset1, int offset2, double fact, double baryX, double baryY,
-                           std::vector<int>& edgesThis, std::vector<double>& addCoo, std::map<INTERP_KERNEL::Node *,int> mapAddCoo) const;
-    void fillGlobalInfoAbs2(const std::map<INTERP_KERNEL::Node *,int>& mapThis, const std::map<INTERP_KERNEL::Node *,int>& mapOther, int offset1, int offset2, double fact, double baryX, double baryY,
-                            std::vector<int>& edgesOther, std::vector<double>& addCoo, std::map<INTERP_KERNEL::Node *,int>& mapAddCoo) const;
   };
 }
 
index 9ea7ac8513be76b55eddc2dc1271d5ff22d7f18b..857821515afbefb22f62fe8b5a8e8a42beac4c4d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -72,6 +72,14 @@ void ElementaryEdge::getAllNodes(std::set<Node *>& output) const
   output.insert(_ptr->getEndNode());
 }
 
+bool ElementaryEdge::hasSameExtremities(const ElementaryEdge& other) const
+{
+  std::set<Node *> s1, s2;
+  getAllNodes(s1);
+  other.getAllNodes(s2);
+  return (s1 == s2);
+}
+
 void ElementaryEdge::getBarycenter(double *bary, double& weigh) const
 {
   _ptr->getBarycenter(bary);
@@ -183,6 +191,11 @@ void ElementaryEdge::dumpInXfigFile(std::ostream& stream, int resolution, const
   _ptr->dumpInXfigFile(stream,_direction,resolution,box);
 }
 
+void ElementaryEdge::dumpToCout(const std::map<INTERP_KERNEL::Node *,int>& mapp, int index) const
+{
+  _ptr->dumpToCout(mapp, index);
+}
+
 bool ElementaryEdge::intresicEqual(const ElementaryEdge *other) const
 {
   return _ptr==other->_ptr;
@@ -217,9 +230,12 @@ void ElementaryEdge::fillGlobalInfoAbs(const std::map<INTERP_KERNEL::Node *,int>
  * unsorted because the "other" mesh is not subdivided yet.
  */
 void ElementaryEdge::fillGlobalInfoAbs2(const std::map<INTERP_KERNEL::Node *,int>& mapThis, const std::map<INTERP_KERNEL::Node *,int>& mapOther, int offset1, int offset2, double fact, double baryX, double baryY,
+                                        short skipStartOrEnd,
                                         std::vector<int>& edgesOther, std::vector<double>& addCoo, std::map<INTERP_KERNEL::Node *,int>& mapAddCoo) const
 {
-  _ptr->fillGlobalInfoAbs2(mapThis,mapOther,offset1,offset2,fact,baryX,baryY,edgesOther,addCoo,mapAddCoo);
+  if (!_direction)
+    skipStartOrEnd *= -1;  // invert value - see QuadraticPolygon::splitAbs()
+  _ptr->fillGlobalInfoAbs2(mapThis,mapOther,offset1,offset2,fact,baryX,baryY,skipStartOrEnd,edgesOther,addCoo,mapAddCoo);
 }
 
 /*!
index 340bc63b12ed49796b86bc0d5499fc9705508a27..3446b70ff1a0b51108fe007684f32585ff14362f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -50,6 +50,7 @@ namespace INTERP_KERNEL
     INTERPKERNEL_EXPORT void applySimilarity(double xBary, double yBary, double dimChar) { _ptr->applySimilarity(xBary,yBary,dimChar); }
     INTERPKERNEL_EXPORT void unApplySimilarity(double xBary, double yBary, double dimChar) { _ptr->unApplySimilarity(xBary,yBary,dimChar); }
     INTERPKERNEL_EXPORT void getAllNodes(std::set<Node *>& output) const;
+    INTERPKERNEL_EXPORT bool hasSameExtremities(const ElementaryEdge& other) const;
     INTERPKERNEL_EXPORT void getBarycenter(double *bary, double& weigh) const;
     INTERPKERNEL_EXPORT ElementaryEdge *clone() const;
     INTERPKERNEL_EXPORT void initLocations() const;
@@ -64,6 +65,7 @@ namespace INTERP_KERNEL
     INTERPKERNEL_EXPORT bool intresicEqual(const ElementaryEdge *other) const;
     INTERPKERNEL_EXPORT bool intresicEqualDirSensitive(const ElementaryEdge *other) const;
     INTERPKERNEL_EXPORT void dumpInXfigFile(std::ostream& stream, int resolution, const Bounds& box) const;
+    INTERPKERNEL_EXPORT void dumpToCout(const std::map<INTERP_KERNEL::Node *,int>& mapp, int index) const;
     INTERPKERNEL_EXPORT bool getDirection() const { return _direction; }
     INTERPKERNEL_EXPORT bool intresincEqCoarse(const Edge *other) const;
     INTERPKERNEL_EXPORT bool isEqual(const ElementaryEdge& other) const;
@@ -71,6 +73,7 @@ namespace INTERP_KERNEL
     INTERPKERNEL_EXPORT void fillGlobalInfoAbs(const std::map<INTERP_KERNEL::Node *,int>& mapThis, const std::map<INTERP_KERNEL::Node *,int>& mapOther, int offset1, int offset2, double fact, double baryX, double baryY,
                                                std::vector<int>& edgesThis, std::vector<double>& addCoo, std::map<INTERP_KERNEL::Node *,int> mapAddCoo) const;
     INTERPKERNEL_EXPORT void fillGlobalInfoAbs2(const std::map<INTERP_KERNEL::Node *,int>& mapThis, const std::map<INTERP_KERNEL::Node *,int>& mapOther, int offset1, int offset2, double fact, double baryX, double baryY,
+                                                short skipStartOrEnd,
                                                 std::vector<int>& edgesOther, std::vector<double>& addCoo, std::map<INTERP_KERNEL::Node *,int>& mapAddCoo) const;
     INTERPKERNEL_EXPORT static ElementaryEdge *BuildEdgeFromStartEndDir(bool direction, INTERP_KERNEL::Node *start, INTERP_KERNEL::Node *end);
   private:
index 56c0c894c0148d246e3fa058cf328c35093fe875..c48d783f900b43b5402c4328b3dd1787c011317c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -151,16 +151,16 @@ void Node::unApplySimilarity(double xBary, double yBary, double dimChar)
 void Node::fillGlobalInfoAbs(const std::map<INTERP_KERNEL::Node *,int>& mapThis, const std::map<INTERP_KERNEL::Node *,int>& mapOther, int offset1, int offset2, double fact, double baryX, double baryY,
                              std::vector<double>& addCoo, std::map<INTERP_KERNEL::Node *,int>& mapAddCoo, int *nodeId) const
 {
-  std::map<INTERP_KERNEL::Node *,int>::const_iterator it=mapThis.find(const_cast<Node *>(this));
-  if(it!=mapThis.end())
+  std::map<INTERP_KERNEL::Node *,int>::const_iterator it=mapOther.find(const_cast<Node *>(this));
+  if(it!=mapOther.end())     // order matters, try in mapOther first.
     {
-      *nodeId=(*it).second;
+      *nodeId=(*it).second+offset1;
       return;
     }
-  it=mapOther.find(const_cast<Node *>(this));
-  if(it!=mapOther.end())
+  it=mapThis.find(const_cast<Node *>(this));
+  if(it!=mapThis.end())
     {
-      *nodeId=(*it).second+offset1;
+      *nodeId=(*it).second;
       return;
     }
   it=mapAddCoo.find(const_cast<Node *>(this));
@@ -185,7 +185,9 @@ void Node::fillGlobalInfoAbs2(const std::map<INTERP_KERNEL::Node *,int>& mapThis
   int tmp;
   std::size_t sz1=addCoo.size();
   fillGlobalInfoAbs(mapThis,mapOther,offset1,offset2,fact,baryX,baryY,addCoo,mapAddCoo,&tmp);
-  if(sz1!=addCoo.size())
+  if(sz1!=addCoo.size()     // newly created point
+      || (tmp >= offset2    // or previously created point merged with a neighbour
+          && (pointsOther.size() == 0 || pointsOther.back() != tmp)))
     {
       pointsOther.push_back(tmp);
       return ;
@@ -193,6 +195,5 @@ void Node::fillGlobalInfoAbs2(const std::map<INTERP_KERNEL::Node *,int>& mapThis
   std::vector<int>::const_iterator it=std::find(pointsOther.begin(),pointsOther.end(),tmp);
   if(it!=pointsOther.end())
     return ;
-  if(tmp<offset1)
-    pointsOther.push_back(tmp);
+  pointsOther.push_back(tmp);
 }
index cbe1e0471924a136bd3eb9c4ceaba2b49e632e66..be9ba0d581799f44809a67c33569b2fdde8f8161 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index d42174df584216ddc77964f91838668e0590277d..8c806dfdb7b59fcbdf99c3e3da5a681951f1895a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index e66a0a378164198db62e5f39463e4a728992a2b3..60951bbac5641f896103b3632162e1d9ccbeee6f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index bbd3d0097e254033c35e02d2ecf18432bc644897..e10c446b3a4251215fa25546ace6c499984b9d91 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -295,69 +295,85 @@ void QuadraticPolygon::splitAbs(QuadraticPolygon& other,
   double fact=normalizeExt(&other, xBaryBB, yBaryBB);
 
   //
-  IteratorOnComposedEdge it1(this),it3(&other);
+  IteratorOnComposedEdge itThis(this),itOther(&other);  // other is (part of) the tool mesh
   MergePoints merge;
-  ComposedEdge *c1=new ComposedEdge;
-  ComposedEdge *c2=new ComposedEdge;
+  ComposedEdge *cThis=new ComposedEdge;
+  ComposedEdge *cOther=new ComposedEdge;
   int i=0;
   std::map<INTERP_KERNEL::Node *,int> mapAddCoo;
-  for(it3.first();!it3.finished();it3.next(),i++)//iteration over 'other->_sub_edges'
+  for(itOther.first();!itOther.finished();itOther.next(),i++)
     {
+      // For each edge of 'other', proceed with intersections: the edge might split into sub-edges, 'otherTmp' will hold the final split result.
+      // In the process of going through all edges of 'other', 'this' (which contains initially only one edge)
+      // is sub-divised into several edges : each of them has to be tested when intersecting the next candidate stored in 'other'.
       QuadraticPolygon otherTmp;
-      ElementaryEdge* curE3=it3.current();
-      otherTmp.pushBack(new ElementaryEdge(curE3->getPtr(),curE3->getDirection())); curE3->getPtr()->incrRef();
-      IteratorOnComposedEdge it2(&otherTmp);
-      for(it2.first();!it2.finished();it2.next())//iteration on subedges of 'otherTmp->_sub_edge'
+      ElementaryEdge* curOther=itOther.current();
+      otherTmp.pushBack(new ElementaryEdge(curOther->getPtr(),curOther->getDirection())); curOther->getPtr()->incrRef();
+      IteratorOnComposedEdge itOtherTmp(&otherTmp);
+      for(itOtherTmp.first();!itOtherTmp.finished();itOtherTmp.next())
         {
-          ElementaryEdge* curE2=it2.current();
-          if(!curE2->isThereStartPoint())
-            it1.first();
+          ElementaryEdge* curOtherTmp=itOtherTmp.current();
+          if(!curOtherTmp->isThereStartPoint())
+            itThis.first();   // reset iterator on 'this'
           else
-            it1=curE2->getIterator();
-          for(;!it1.finished();)//iteration over 'this' _sub_edges
+            itThis=curOtherTmp->getIterator();
+          for(;!itThis.finished();)
             {
-              ElementaryEdge* curE1=it1.current();
+              ElementaryEdge* curThis=itThis.current();
               merge.clear();
               //
-              std::map<INTERP_KERNEL::Node *,int>::const_iterator thisStart(mapThis.find(curE1->getStartNode())),thisEnd(mapThis.find(curE1->getEndNode())),otherStart(mapOther.find(curE2->getStartNode())),otherEnd(mapOther.find(curE2->getEndNode()));
-              int thisStart2(thisStart==mapThis.end()?-1:(*thisStart).second),thisEnd2(thisEnd==mapThis.end()?-1:(*thisEnd).second),otherStart2(otherStart==mapOther.end()?-1:(*otherStart).second+offset1),otherEnd2(otherEnd==mapOther.end()?-1:(*otherEnd).second+offset1);
+              std::map<INTERP_KERNEL::Node *,int>::const_iterator thisStart(mapThis.find(curThis->getStartNode())),thisEnd(mapThis.find(curThis->getEndNode())),
+                                                                  otherStart(mapOther.find(curOtherTmp->getStartNode())),otherEnd(mapOther.find(curOtherTmp->getEndNode()));
+              int thisStart2(thisStart==mapThis.end()?-1:(*thisStart).second), thisEnd2(thisEnd==mapThis.end()?-1:(*thisEnd).second),
+                  otherStart2(otherStart==mapOther.end()?-1:(*otherStart).second+offset1),otherEnd2(otherEnd==mapOther.end()?-1:(*otherEnd).second+offset1);
               //
-              if(curE1->getPtr()->intersectWith(curE2->getPtr(),merge,*c1,*c2))
+              if(curThis->getPtr()->intersectWith(curOtherTmp->getPtr(),merge,*cThis,*cOther))
                 {
-                  if(!curE1->getDirection()) c1->reverse();
-                  if(!curE2->getDirection()) c2->reverse();
-                  UpdateNeighbours(merge,it1,it2,c1,c2);
-                  //Substitution of simple edge by sub-edges.
-                  delete curE1; // <-- destroying simple edge coming from pol1
-                  delete curE2; // <-- destroying simple edge coming from pol2
-                  it1.insertElemEdges(c1,true);// <-- 2nd param is true to go next.
-                  it2.insertElemEdges(c2,false);// <-- 2nd param is false to avoid to go next.
-                  curE2=it2.current();
+                  if(!curThis->getDirection()) cThis->reverse();
+                  if(!curOtherTmp->getDirection()) cOther->reverse();
+                  // Substitution of a single simple edge by two sub-edges resulting from the intersection
+                  //    First modify the edges currently pointed by itThis and itOtherTmp so that the newly created node
+                  //    becomes the end of the previous sub-edge and the beginning of the next one.
+                  UpdateNeighbours(merge,itThis,itOtherTmp,cThis,cOther);
+                  delete curThis;           // <-- destroying simple edge coming from pol1
+                  delete curOtherTmp;       // <-- destroying simple edge coming from pol2
+                  //     Then insert second part of the intersection.
+                  itThis.insertElemEdges(cThis,true);       // <-- 2nd param is true to go next.
+                  itOtherTmp.insertElemEdges(cOther,false); // <-- 2nd param is false to avoid to go next.
+                  curOtherTmp=itOtherTmp.current();
                   //
-                  it1.assignMySelfToAllElems(c2);//To avoid that others
-                  SoftDelete(c1);
-                  SoftDelete(c2);
-                  c1=new ComposedEdge;
-                  c2=new ComposedEdge;
+                  itThis.assignMySelfToAllElems(cOther);
+                  SoftDelete(cThis);
+                  SoftDelete(cOther);
+                  cThis=new ComposedEdge;
+                  cOther=new ComposedEdge;
                 }
               else
                 {
-                  UpdateNeighbours(merge,it1,it2,curE1,curE2);
-                  it1.next();
+                  UpdateNeighbours(merge,itThis,itOtherTmp,curThis,curOtherTmp);
+                  itThis.next();
                 }
               merge.updateMergedNodes(thisStart2,thisEnd2,otherStart2,otherEnd2,mergedNodes);
             }
         }
+      // If one sub-edge of otherTmp is "ON" an edge of this, then we have colinearity (all edges in otherTmp are //)
       if(otherTmp.presenceOfOn())
         edgesInOtherColinearWithThis[otherEdgeIds[i]].push_back(cellIdThis);
-      if(otherTmp._sub_edges.size()>1)
+      // Converting back to integer connectivity:
+      if(otherTmp._sub_edges.size()>1)   // only if a new point has been added (i.e. an actual intersection was done)
         {
-          for(std::list<ElementaryEdge *>::const_iterator it=otherTmp._sub_edges.begin();it!=otherTmp._sub_edges.end();it++)
-            (*it)->fillGlobalInfoAbs2(mapThis,mapOther,offset1,offset2,/**/fact,xBaryBB,yBaryBB,/**/subDivOther[otherEdgeIds[i]],addCoo,mapAddCoo);
+          int jj = 0, sz(otherTmp._sub_edges.size());
+          for(std::list<ElementaryEdge *>::const_iterator it=otherTmp._sub_edges.begin();it!=otherTmp._sub_edges.end();it++, jj++)
+            {
+              short skipStartOrEnd = jj == 0 ? -1 : (jj == sz-1 ? 1 : 0);  // -1 means START, 1 means END, 0 other
+              (*it)->fillGlobalInfoAbs2(mapThis,mapOther,offset1,offset2,
+                                      fact,xBaryBB,yBaryBB, skipStartOrEnd,
+                                      /*out*/ subDivOther[otherEdgeIds[i]],addCoo,mapAddCoo);
+            }
         }
     }
-  Delete(c1);
-  Delete(c2);
+  Delete(cThis);
+  Delete(cOther);
   //
   for(std::list<ElementaryEdge *>::const_iterator it=_sub_edges.begin();it!=_sub_edges.end();it++)
     (*it)->fillGlobalInfoAbs(mapThis,mapOther,offset1,offset2,/**/fact,xBaryBB,yBaryBB,/**/edgesThis,addCoo,mapAddCoo);
@@ -453,7 +469,7 @@ void QuadraticPolygon::appendSubEdgeFromCrudeDataArray(Edge *baseEdge, std::size
  * This method builds from descending conn of a quadratic polygon stored in crude mode (MEDCoupling). Descending conn is in FORTRAN relative mode in order to give the
  * orientation of edge.
  */
-void QuadraticPolygon::buildFromCrudeDataArray2(const std::map<int,INTERP_KERNEL::Node *>& mapp, bool isQuad, const int *nodalBg, const double *coords, const int *descBg, const int *descEnd, const std::vector<std::vector<int> >& intersectEdges,
+void QuadraticPolygon::buildFromCrudeDataArray2(const std::map<int,INTERP_KERNEL::Node *>& mapp, bool isQuad, const int *nodalBg, const double *coords, const int *descBg, const int *descEnd, const std::vector<std::vector<int> >& intersectEdges2,
                                                 const INTERP_KERNEL::QuadraticPolygon& pol1, const int *descBg1, const int *descEnd1, const std::vector<std::vector<int> >& intersectEdges1,
                                                 const std::vector< std::vector<int> >& colinear1,
                                                 std::map<int,std::vector<INTERP_KERNEL::ElementaryEdge *> >& alreadyExistingIn2)
@@ -508,7 +524,7 @@ void QuadraticPolygon::buildFromCrudeDataArray2(const std::map<int,INTERP_KERNEL
       if(directos)
         {//no subpart of edge 'edgeId' of pol2 is in pol1 so let's operate the same thing that QuadraticPolygon::buildFromCrudeDataArray method
           std::size_t oldSz=_sub_edges.size();
-          appendEdgeFromCrudeDataArray(i,mapp,isQuad,nodalBg,coords,descBg,descEnd,intersectEdges);
+          appendEdgeFromCrudeDataArray(i,mapp,isQuad,nodalBg,coords,descBg,descEnd,intersectEdges2);
           std::size_t newSz=_sub_edges.size();
           std::size_t zeSz=newSz-oldSz;
           alreadyExistingIn2[descBg[i]].resize(zeSz);
@@ -518,7 +534,7 @@ void QuadraticPolygon::buildFromCrudeDataArray2(const std::map<int,INTERP_KERNEL
         }
       else
         {//there is subpart of edge 'edgeId' of pol2 inside pol1
-          const std::vector<int>& subEdge=intersectEdges[edgeId];
+          const std::vector<int>& subEdge=intersectEdges2[edgeId];
           std::size_t nbOfSubEdges=subEdge.size()/2;
           for(std::size_t j=0;j<nbOfSubEdges;j++)
             {
@@ -659,13 +675,16 @@ void QuadraticPolygon::appendCrudeData(const std::map<INTERP_KERNEL::Node *,int>
  * @param [in,out] edgesThis, parameter that keep informed the caller about the edges in this not shared by the result of intersection of \a this with \a other
  * @param [in,out] edgesBoundaryOther, parameter that stores all edges in result of intersection that are not
  */
-void QuadraticPolygon::buildPartitionsAbs(QuadraticPolygon& other, std::set<INTERP_KERNEL::Edge *>& edgesThis, std::set<INTERP_KERNEL::Edge *>& edgesBoundaryOther, const std::map<INTERP_KERNEL::Node *,int>& mapp, int idThis, int idOther, int offset, std::vector<double>& addCoordsQuadratic, std::vector<int>& conn, std::vector<int>& connI, std::vector<int>& nbThis, std::vector<int>& nbOther)
+void QuadraticPolygon::buildPartitionsAbs(QuadraticPolygon& other, std::set<INTERP_KERNEL::Edge *>& edgesThis, std::set<INTERP_KERNEL::Edge *>& edgesBoundaryOther,
+                                          const std::map<INTERP_KERNEL::Node *,int>& mapp, int idThis, int idOther, int offset,
+                                          std::vector<double>& addCoordsQuadratic, std::vector<int>& conn, std::vector<int>& connI,
+                                          std::vector<int>& nbThis, std::vector<int>& nbOther)
 {
   double xBaryBB, yBaryBB;
   double fact=normalizeExt(&other, xBaryBB, yBaryBB);
   //Locate \a this relative to \a other (edges of \a this, aka \a pol1 are marked as IN or OUT)
   other.performLocatingOperationSlow(*this);  // without any assumption
-  std::vector<QuadraticPolygon *> res=buildIntersectionPolygons(other,*this);
+  std::vector<QuadraticPolygon *> res=buildIntersectionPolygons(*this,other);
   for(std::vector<QuadraticPolygon *>::iterator it=res.begin();it!=res.end();it++)
     {
       (*it)->appendCrudeData(mapp,xBaryBB,yBaryBB,fact,offset,addCoordsQuadratic,conn,connI);
@@ -690,6 +709,28 @@ void QuadraticPolygon::buildPartitionsAbs(QuadraticPolygon& other, std::set<INTE
   unApplyGlobalSimilarityExt(other,xBaryBB,yBaryBB,fact);
 }
 
+/*!
+ * Remove the two 'identical' edges from the list, and drecRef the objects.
+ */
+void QuadraticPolygon::cleanDegeneratedConsecutiveEdges()
+{
+  IteratorOnComposedEdge it(this);
+  ElementaryEdge * prevEdge = 0;
+  if  (recursiveSize() > 2)
+    for(it.first();!it.finished();it.next())
+      {
+        ElementaryEdge * cur = it.current();
+        if (prevEdge && prevEdge->hasSameExtremities(*cur))
+          {
+            it.eraseCurrent();
+            it.eraseCurrent();
+            prevEdge = it.current();
+          }
+        else
+            prevEdge = cur;
+      }
+}
+
 /*!
  * Warning This method is \b NOT const. 'this' and 'other' are modified after call of this method.
  * 'other' is a QuadraticPolygon of \b non closed edges.
@@ -889,6 +930,7 @@ void QuadraticPolygon::intersectForPoint(const QuadraticPolygon& other, std::vec
  * \b WARNING this method is const and other is const too. \b BUT location of Edges in 'this' and 'other' are nevertheless modified.
  * This is possible because loc attribute in Edge class is mutable.
  * This implies that if 'this' or/and 'other' are reused for intersect* method initLocations has to be called on each of this/them.
+ * This method is currently not used by any high level functionality.
  */
 std::vector<QuadraticPolygon *> QuadraticPolygon::intersectMySelfWith(const QuadraticPolygon& other) const
 {
@@ -897,7 +939,7 @@ std::vector<QuadraticPolygon *> QuadraticPolygon::intersectMySelfWith(const Quad
   SplitPolygonsEachOther(cpyOfThis,cpyOfOther,nbOfSplits);
   //At this point cpyOfThis and cpyOfOther have been splited at maximum edge so that in/out can been done.
   performLocatingOperation(cpyOfOther);
-  return other.buildIntersectionPolygons(cpyOfThis,cpyOfOther);
+  return other.buildIntersectionPolygons(cpyOfOther, cpyOfThis);
 }
 
 /*!
@@ -976,32 +1018,34 @@ void QuadraticPolygon::performLocatingOperationSlow(QuadraticPolygon& pol2) cons
 /*!
  * Given 2 polygons \a pol1 and \a pol2 (localized) the resulting polygons are returned.
  *
- * this : pol2 simplified.
+ * this : pol1 simplified.
  * @param [in] pol1 pol1 split.
  * @param [in] pol2 pol2 split.
  */
 std::vector<QuadraticPolygon *> QuadraticPolygon::buildIntersectionPolygons(const QuadraticPolygon& pol1, const QuadraticPolygon& pol2) const
 {
   std::vector<QuadraticPolygon *> ret;
-  std::list<QuadraticPolygon *> pol2Zip=pol2.zipConsecutiveInSegments();
-  if(!pol2Zip.empty())
-    ClosePolygons(pol2Zip,pol1,*this,ret);
+  // Extract from pol1, and pol1 only, all consecutive edges.
+  // pol1Zip contains concatenated pieces of pol1 which are part of the resulting intersecting cell being built.
+  std::list<QuadraticPolygon *> pol1Zip=pol1.zipConsecutiveInSegments();
+  if(!pol1Zip.empty())
+    ClosePolygons(pol1Zip,*this,pol2,ret);
   else
-    {//borders of pol2 do not cross pol1,and pol2 borders are outside of pol1. That is to say, either pol2 and pol1
-      //do not overlap or  pol1 is fully inside pol2. So in the first case no intersection, in the other case
-      //the intersection is pol1.
-      ElementaryEdge *e1FromPol1=pol1[0];
+    {//borders of pol1 do not cross pol2,and pol1 borders are outside of pol2. That is to say, either pol1 and pol2
+      //do not overlap or  pol2 is fully inside pol1. So in the first case no intersection, in the other case
+      //the intersection is pol2.
+      ElementaryEdge *e1FromPol2=pol2[0];
       TypeOfEdgeLocInPolygon loc=FULL_ON_1;
-      loc=e1FromPol1->locateFullyMySelf(*this,loc);
+      loc=e1FromPol2->locateFullyMySelf(*this,loc);
       if(loc==FULL_IN_1)
-        ret.push_back(new QuadraticPolygon(pol1));
+        ret.push_back(new QuadraticPolygon(pol2));
     }
   return ret;
 }
 
 /*!
  * Returns parts of potentially non closed-polygons. Each returned polygons are not mergeable.
- * this : pol2 split and locallized.
+ * this : pol1 split and localized.
  */
 std::list<QuadraticPolygon *> QuadraticPolygon::zipConsecutiveInSegments() const
 {
@@ -1036,72 +1080,77 @@ std::list<QuadraticPolygon *> QuadraticPolygon::zipConsecutiveInSegments() const
 }
 
 /*!
- * @param [in] pol2zip is a list of set of edges (=an opened polygon) coming from split polygon 2.
- * @param [in] pol1 is split pol1.
- * @param [in] pol2 should be considered as pol2Simplified.
+ * @param [in] pol1zip is a list of set of edges (=an opened polygon) coming from split polygon 1.
+ * @param [in] pol1 should be considered as pol1Simplified.
+ * @param [in] pol2 is split pol2.
  * @param [out] results the resulting \b CLOSED polygons.
  */
-void QuadraticPolygon::ClosePolygons(std::list<QuadraticPolygon *>& pol2Zip, const QuadraticPolygon& pol1, const QuadraticPolygon& pol2,
+void QuadraticPolygon::ClosePolygons(std::list<QuadraticPolygon *>& pol1Zip, const QuadraticPolygon& pol1, const QuadraticPolygon& pol2,
                                      std::vector<QuadraticPolygon *>& results)
 {
-  bool directionKnownInPol1=false;
-  bool directionInPol1;
-  for(std::list<QuadraticPolygon *>::iterator iter=pol2Zip.begin();iter!=pol2Zip.end();)
+  bool directionKnownInPol2=false;
+  bool directionInPol2;
+  for(std::list<QuadraticPolygon *>::iterator iter=pol1Zip.begin();iter!=pol1Zip.end();)
     {
+      // Build incrementally the full closed cells from the consecutive line parts already built in pol1Zip.
+      // At the end of the process the item currently iterated has been totally completed (start_node=end_node)
+      // This process can produce several cells.
       if((*iter)->completed())
         {
           results.push_back(*iter);
-          directionKnownInPol1=false;
-          iter=pol2Zip.erase(iter);
+          directionKnownInPol2=false;
+          iter=pol1Zip.erase(iter);
           continue;
         }
-      if(!directionKnownInPol1)
+      if(!directionKnownInPol2)
         {
-          if(!(*iter)->haveIAChanceToBeCompletedBy(pol1,pol2,directionInPol1))
-            { delete *iter; iter=pol2Zip.erase(iter); continue; }
+          if(!(*iter)->haveIAChanceToBeCompletedBy(pol1,pol2,directionInPol2))
+            { delete *iter; iter=pol1Zip.erase(iter); continue; }
           else
-            directionKnownInPol1=true;
+            directionKnownInPol2=true;
         }
       std::list<QuadraticPolygon *>::iterator iter2=iter; iter2++;
-      std::list<QuadraticPolygon *>::iterator iter3=(*iter)->fillAsMuchAsPossibleWith(pol1,iter2,pol2Zip.end(),directionInPol1);
-      if(iter3!=pol2Zip.end())
+      // Fill as much as possible the current iterate (=a part of pol1) with consecutive pieces from pol2:
+      std::list<QuadraticPolygon *>::iterator iter3=(*iter)->fillAsMuchAsPossibleWith(pol2,iter2,pol1Zip.end(),directionInPol2);
+      // and now add a full connected piece from pol1Zip:
+      if(iter3!=pol1Zip.end())
         {
           (*iter)->pushBack(*iter3);
           SoftDelete(*iter3);
-          pol2Zip.erase(iter3);
+          pol1Zip.erase(iter3);
         }
     }
 }
 
 /*!
- * 'this' is expected to be set of edges (not closed) of pol2 split.
+ * 'this' is expected to be set of edges (not closed) of pol1 split.
  */
-bool QuadraticPolygon::haveIAChanceToBeCompletedBy(const QuadraticPolygon& pol1Splitted,const QuadraticPolygon& pol2NotSplitted, bool& direction)
+bool QuadraticPolygon::haveIAChanceToBeCompletedBy(const QuadraticPolygon& pol1NotSplitted, const QuadraticPolygon& pol2Splitted, bool& direction) const
 {
-  IteratorOnComposedEdge it(const_cast<QuadraticPolygon *>(&pol1Splitted));
+  IteratorOnComposedEdge it2(const_cast<QuadraticPolygon *>(&pol2Splitted));
   bool found=false;
   Node *n=getEndNode();
-  ElementaryEdge *cur=it.current();
-  for(it.first();!it.finished() && !found;)
+  ElementaryEdge *cur=it2.current();
+  for(it2.first();!it2.finished() && !found;)
     {
-      cur=it.current();
+      cur=it2.current();
       found=(cur->getStartNode()==n);
       if(!found)
-        it.next();
+        it2.next();
     }
   if(!found)
     throw Exception("Internal error: polygons incompatible with each others. Should never happen!");
-  //Ok we found correspondence between this and pol1. Searching for right direction to close polygon.
+  //Ok we found correspondence between this and pol2. Searching for right direction to close polygon.
   ElementaryEdge *e=_sub_edges.back();
   if(e->getLoc()==FULL_ON_1)
     {
       if(e->getPtr()==cur->getPtr())
         {
           direction=false;
-          it.previousLoop();
-          cur=it.current();
+          it2.previousLoop();
+          cur=it2.current();
           Node *repr=cur->getPtr()->buildRepresentantOfMySelf();
-          bool ret=pol2NotSplitted.isInOrOut(repr);
+          bool ret=pol1NotSplitted.isInOrOut(repr);
           repr->decrRef();
           return ret;
         }
@@ -1109,49 +1158,49 @@ bool QuadraticPolygon::haveIAChanceToBeCompletedBy(const QuadraticPolygon& pol1S
         {
           direction=true;
           Node *repr=cur->getPtr()->buildRepresentantOfMySelf();
-          bool ret=pol2NotSplitted.isInOrOut(repr);
+          bool ret=pol1NotSplitted.isInOrOut(repr);
           repr->decrRef();
           return ret;
         }
     }
   else
-    direction=cur->locateFullyMySelfAbsolute(pol2NotSplitted)==FULL_IN_1;
+    direction=cur->locateFullyMySelfAbsolute(pol1NotSplitted)==FULL_IN_1;
   return true;
 }
 
 /*!
- * This method fills as much as possible \a this (a sub-part of pol2 split) with edges of \a pol1Splitted.
+ * This method fills as much as possible \a this (a sub-part of pol1 split) with edges of \a pol2Splitted.
  */
-std::list<QuadraticPolygon *>::iterator QuadraticPolygon::fillAsMuchAsPossibleWith(const QuadraticPolygon& pol1Splitted,
+std::list<QuadraticPolygon *>::iterator QuadraticPolygon::fillAsMuchAsPossibleWith(const QuadraticPolygon& pol2Splitted,
                                                                                    std::list<QuadraticPolygon *>::iterator iStart,
                                                                                    std::list<QuadraticPolygon *>::iterator iEnd,
                                                                                    bool direction)
 {
-  IteratorOnComposedEdge it(const_cast<QuadraticPolygon *>(&pol1Splitted));
+  IteratorOnComposedEdge it1(const_cast<QuadraticPolygon *>(&pol2Splitted));
   bool found=false;
   Node *n=getEndNode();
-  ElementaryEdge *cur;
-  for(it.first();!it.finished() && !found;)
+  ElementaryEdge *cur1;
+  for(it1.first();!it1.finished() && !found;)
     {
-      cur=it.current();
-      found=(cur->getStartNode()==n);
+      cur1=it1.current();
+      found=(cur1->getStartNode()==n);
       if(!found)
-        it.next();
+        it1.next();
     }
   if(!direction)
-    it.previousLoop();
+    it1.previousLoop();
   Node *nodeToTest;
-  int szMax(pol1Splitted.size()+1),ii(0);// here a protection against aggressive users of IntersectMeshes of invalid input meshes
+  int szMax(pol2Splitted.size()+1),ii(0);   // protection against aggressive users of IntersectMeshes using invalid input meshes ...
   std::list<QuadraticPolygon *>::iterator ret;
   do
-    {
-      cur=it.current();
-      ElementaryEdge *tmp=cur->clone();
+    { // Stack (consecutive) edges of pol1 into the result (no need to care about ordering, edges from pol1 are already consecutive)
+      cur1=it1.current();
+      ElementaryEdge *tmp=cur1->clone();
       if(!direction)
         tmp->reverse();
       pushBack(tmp);
       nodeToTest=tmp->getEndNode();
-      direction?it.nextLoop():it.previousLoop();
+      direction?it1.nextLoop():it1.previousLoop();
       ret=CheckInList(nodeToTest,iStart,iEnd);
       if(completed())
         return iEnd;
@@ -1172,48 +1221,64 @@ std::list<QuadraticPolygon *>::iterator QuadraticPolygon::CheckInList(Node *n, s
   return iEnd;
 }
 
-void QuadraticPolygon::ComputeResidual(const QuadraticPolygon& pol1, const std::set<Edge *>& notUsedInPol1, const std::set<Edge *>& edgesInPol2OnBoundary, const std::map<INTERP_KERNEL::Node *,int>& mapp, int offset, int idThis,
-                                       std::vector<double>& addCoordsQuadratic, std::vector<int>& conn, std::vector<int>& connI, std::vector<int>& nb1, std::vector<int>& nb2)
+/*!
+* Compute the remaining parts of the intersection of mesh1 by mesh2.
+* The general algorithm is to :
+*   - either return full cells from pol1 that were simply not touched by mesh2
+*   - or to:
+*      - concatenate pieces from pol1 into consecutive pieces (a bit like zipConsecutiveSegments())
+*      - complete those pieces by edges found in edgesInPol2OnBoundary, which are edges from pol2 located on the boundary of the previously built
+*      intersecting cells
+*/
+void QuadraticPolygon::ComputeResidual(const QuadraticPolygon& pol1, const std::set<Edge *>& notUsedInPol1, const std::set<Edge *>& edgesInPol2OnBoundary,
+                                       const std::map<INTERP_KERNEL::Node *,int>& mapp, int offset, int idThis,
+                                       std::vector<double>& addCoordsQuadratic, std::vector<int>& conn,
+                                       std::vector<int>& connI, std::vector<int>& nb1, std::vector<int>& nb2)
 {
+  // Initialise locations on pol1. Remember that edges found in 'notUsedInPol1' are also part of the edges forming pol1.
   pol1.initLocations();
-  for(std::set<Edge *>::const_iterator it9=notUsedInPol1.begin();it9!=notUsedInPol1.end();it9++)
-    { (*it9)->initLocs(); (*it9)->declareOn(); }
-  for(std::set<Edge *>::const_iterator itA=edgesInPol2OnBoundary.begin();itA!=edgesInPol2OnBoundary.end();itA++)
-    { (*itA)->initLocs(); (*itA)->declareIn(); }
+  for(std::set<Edge *>::const_iterator it1=notUsedInPol1.begin();it1!=notUsedInPol1.end();it1++)
+    { (*it1)->initLocs(); (*it1)->declareOn(); }
+  for(std::set<Edge *>::const_iterator it2=edgesInPol2OnBoundary.begin();it2!=edgesInPol2OnBoundary.end();it2++)
+    { (*it2)->initLocs(); (*it2)->declareIn(); }
   ////
   std::set<Edge *> notUsedInPol1L(notUsedInPol1);
-  IteratorOnComposedEdge it(const_cast<QuadraticPolygon *>(&pol1));
+  IteratorOnComposedEdge itPol1(const_cast<QuadraticPolygon *>(&pol1));
   int sz=pol1.size();
   std::list<QuadraticPolygon *> pol1Zip;
+  // If none of the edges of pol1 was consumed by the rebuilding process, we can directly take pol1 as it is to form a cell:
   if(pol1.size()==(int)notUsedInPol1.size() && edgesInPol2OnBoundary.empty())
     {
       pol1.appendCrudeData(mapp,0.,0.,1.,offset,addCoordsQuadratic,conn,connI); nb1.push_back(idThis); nb2.push_back(-1);
       return ;
     }
+  // Zip consecutive edges found in notUsedInPol1L and which are not overlapping with boundary edge from edgesInPol2OnBoundary:
   while(!notUsedInPol1L.empty())
     {
-      for(int i=0;i<sz && (it.current()->getStartNode()->getLoc()!=IN_1 || it.current()->getLoc()!=FULL_ON_1);i++)
-        it.nextLoop();
-      if(it.current()->getStartNode()->getLoc()!=IN_1 || it.current()->getLoc()!=FULL_ON_1)
+      // If all nodes are IN or edge is ON (i.e. as initialised at the begining of the method) then error
+      for(int i=0;i<sz && (itPol1.current()->getStartNode()->getLoc()!=IN_1 || itPol1.current()->getLoc()!=FULL_ON_1);i++)
+        itPol1.nextLoop();
+      if(itPol1.current()->getStartNode()->getLoc()!=IN_1 || itPol1.current()->getLoc()!=FULL_ON_1)
         throw INTERP_KERNEL::Exception("Presence of a target polygon fully included in source polygon ! The partition of this leads to a non simply connex cell (with hole) ! Impossible ! Such resulting cell cannot be stored in MED cell format !");
       QuadraticPolygon *tmp1=new QuadraticPolygon;
       do
         {
-          Edge *ee=it.current()->getPtr();
+          Edge *ee=itPol1.current()->getPtr();
           if(ee->getLoc()==FULL_ON_1)
             {
               ee->incrRef(); notUsedInPol1L.erase(ee);
-              tmp1->pushBack(new ElementaryEdge(ee,it.current()->getDirection()));    
+              tmp1->pushBack(new ElementaryEdge(ee,itPol1.current()->getDirection()));
             }
-          it.nextLoop();
+          itPol1.nextLoop();
         }
-      while(it.current()->getStartNode()->getLoc()!=IN_1 && !notUsedInPol1L.empty());
+      while(itPol1.current()->getStartNode()->getLoc()!=IN_1 && !notUsedInPol1L.empty());
       pol1Zip.push_back(tmp1);
     }
+
   ////
   std::list<QuadraticPolygon *> retPolsUnderContruction;
   std::list<Edge *> edgesInPol2OnBoundaryL(edgesInPol2OnBoundary.begin(),edgesInPol2OnBoundary.end());
-  std::map<QuadraticPolygon *, std::list<QuadraticPolygon *> > pol1ZipConsumed;
+  std::map<QuadraticPolygon *, std::list<QuadraticPolygon *> > pol1ZipConsumed;  // for memory management only.
   std::size_t maxNbOfTurn=edgesInPol2OnBoundaryL.size(),nbOfTurn=0,iiMNT=0;
   for(std::list<QuadraticPolygon *>::const_iterator itMNT=pol1Zip.begin();itMNT!=pol1Zip.end();itMNT++,iiMNT++)
     nbOfTurn+=(*itMNT)->size();
@@ -1221,59 +1286,61 @@ void QuadraticPolygon::ComputeResidual(const QuadraticPolygon& pol1, const std::
   // [ABN] at least 3 turns for very small cases (typically one (quad) edge against one (quad or lin) edge forming a new cell)!
   maxNbOfTurn = maxNbOfTurn<3 ? 3 : maxNbOfTurn;
   nbOfTurn=0;
-  while(nbOfTurn<maxNbOfTurn && ((!pol1Zip.empty() || !edgesInPol2OnBoundaryL.empty())))
+  while(nbOfTurn<maxNbOfTurn)  // the 'normal' way out of this loop is the break towards the end when pol1Zip is empty.
     {
-      for(std::list<QuadraticPolygon *>::iterator it1=retPolsUnderContruction.begin();it1!=retPolsUnderContruction.end();)
+      // retPolsUnderConstruction initially empty -> see if(!pol1Zip.empty()) below ...
+      for(std::list<QuadraticPolygon *>::iterator itConstr=retPolsUnderContruction.begin();itConstr!=retPolsUnderContruction.end();)
         {
-          if((*it1)->getStartNode()==(*it1)->getEndNode())
+          if((*itConstr)->getStartNode()==(*itConstr)->getEndNode())  // reconstruction of a cell is finished
             {
-              it1++;
+              itConstr++;
               continue;
             }
-          Node *curN=(*it1)->getEndNode();
+          Node *curN=(*itConstr)->getEndNode();
           bool smthHappened=false;
+          // Complete a partially reconstructed polygon with boundary edges by matching nodes:
           for(std::list<Edge *>::iterator it2=edgesInPol2OnBoundaryL.begin();it2!=edgesInPol2OnBoundaryL.end();)
             {
               if(curN==(*it2)->getStartNode())
-                { (*it2)->incrRef(); (*it1)->pushBack(new ElementaryEdge(*it2,true)); curN=(*it2)->getEndNode(); smthHappened=true; it2=edgesInPol2OnBoundaryL.erase(it2); }
+                { (*it2)->incrRef(); (*itConstr)->pushBack(new ElementaryEdge(*it2,true)); curN=(*it2)->getEndNode(); smthHappened=true; it2=edgesInPol2OnBoundaryL.erase(it2); }
               else if(curN==(*it2)->getEndNode())
-                { (*it2)->incrRef(); (*it1)->pushBack(new ElementaryEdge(*it2,false)); curN=(*it2)->getStartNode(); smthHappened=true; it2=edgesInPol2OnBoundaryL.erase(it2); }
+                { (*it2)->incrRef(); (*itConstr)->pushBack(new ElementaryEdge(*it2,false)); curN=(*it2)->getStartNode(); smthHappened=true; it2=edgesInPol2OnBoundaryL.erase(it2); }
               else
                 it2++;
             }
           if(smthHappened)
             {
-              for(std::list<QuadraticPolygon *>::iterator it3=pol1Zip.begin();it3!=pol1Zip.end();)
+              for(std::list<QuadraticPolygon *>::iterator itZip=pol1Zip.begin();itZip!=pol1Zip.end();)
                 {
-                  if(curN==(*it3)->getStartNode())
+                  if(curN==(*itZip)->getStartNode()) // we found a matching piece to append in pol1Zip. Append all of it to the current polygon being reconstr
                     {
-                      for(std::list<ElementaryEdge *>::const_iterator it4=(*it3)->_sub_edges.begin();it4!=(*it3)->_sub_edges.end();it4++)
-                        { (*it4)->getPtr()->incrRef(); bool dir=(*it4)->getDirection(); (*it1)->pushBack(new ElementaryEdge((*it4)->getPtr(),dir)); }
-                      smthHappened=true;
-                      pol1ZipConsumed[*it1].push_back(*it3);
-                      curN=(*it3)->getEndNode();
-                      it3=pol1Zip.erase(it3);
+                      for(std::list<ElementaryEdge *>::const_iterator it4=(*itZip)->_sub_edges.begin();it4!=(*itZip)->_sub_edges.end();it4++)
+                        { (*it4)->getPtr()->incrRef(); bool dir=(*it4)->getDirection(); (*itConstr)->pushBack(new ElementaryEdge((*it4)->getPtr(),dir)); }
+                      pol1ZipConsumed[*itConstr].push_back(*itZip);
+                      curN=(*itZip)->getEndNode();
+                      itZip=pol1Zip.erase(itZip);  // one zipped piece has been consumed
+                      break;                       // we can stop here, pieces in pol1Zip are not connected, by definition.
                     }
                   else
-                    it3++;
+                    itZip++;
                 }
             }
-          if(!smthHappened)
+          else
             {
-              for(std::list<ElementaryEdge *>::const_iterator it5=(*it1)->_sub_edges.begin();it5!=(*it1)->_sub_edges.end();it5++)
+              for(std::list<ElementaryEdge *>::const_iterator it5=(*itConstr)->_sub_edges.begin();it5!=(*itConstr)->_sub_edges.end();it5++)
                 {
                   Edge *ee=(*it5)->getPtr();
                   if(edgesInPol2OnBoundary.find(ee)!=edgesInPol2OnBoundary.end())
                     edgesInPol2OnBoundaryL.push_back(ee);
                 }
-              for(std::list<QuadraticPolygon *>::iterator it6=pol1ZipConsumed[*it1].begin();it6!=pol1ZipConsumed[*it1].end();it6++)
+              for(std::list<QuadraticPolygon *>::iterator it6=pol1ZipConsumed[*itConstr].begin();it6!=pol1ZipConsumed[*itConstr].end();it6++)
                 pol1Zip.push_front(*it6);
-              pol1ZipConsumed.erase(*it1);
-              delete *it1;
-              it1=retPolsUnderContruction.erase(it1);
+              pol1ZipConsumed.erase(*itConstr);
+              delete *itConstr;
+              itConstr=retPolsUnderContruction.erase(itConstr);
             }
         }
-      if(!pol1Zip.empty())
+      if(!pol1Zip.empty())  // the filling process of retPolsUnderConstruction starts here
         {
           QuadraticPolygon *tmp=new QuadraticPolygon;
           QuadraticPolygon *first=*(pol1Zip.begin());
@@ -1283,6 +1350,8 @@ void QuadraticPolygon::ComputeResidual(const QuadraticPolygon& pol1, const std::
           retPolsUnderContruction.push_back(tmp);
           pol1Zip.erase(pol1Zip.begin());
         }
+      else
+        break;
       nbOfTurn++;
     }
   if(nbOfTurn==maxNbOfTurn)
@@ -1291,14 +1360,21 @@ void QuadraticPolygon::ComputeResidual(const QuadraticPolygon& pol1, const std::
       oss << " Number of turns is = " << nbOfTurn << " !";
       throw INTERP_KERNEL::Exception(oss.str().c_str());
     }
-  for(std::list<QuadraticPolygon *>::iterator it1=retPolsUnderContruction.begin();it1!=retPolsUnderContruction.end();it1++)
+  // Convert to integer connectivity:
+  for(std::list<QuadraticPolygon *>::iterator itConstr=retPolsUnderContruction.begin();itConstr!=retPolsUnderContruction.end();itConstr++)
     {
-      if((*it1)->getStartNode()==(*it1)->getEndNode())
+      if((*itConstr)->getStartNode()==(*itConstr)->getEndNode())  // take only fully closed reconstructed polygon
         {
-          (*it1)->appendCrudeData(mapp,0.,0.,1.,offset,addCoordsQuadratic,conn,connI); nb1.push_back(idThis); nb2.push_back(-1);
-          for(std::list<QuadraticPolygon *>::iterator it6=pol1ZipConsumed[*it1].begin();it6!=pol1ZipConsumed[*it1].end();it6++)
+          (*itConstr)->cleanDegeneratedConsecutiveEdges();
+          (*itConstr)->appendCrudeData(mapp,0.,0.,1.,offset,addCoordsQuadratic,conn,connI); nb1.push_back(idThis); nb2.push_back(-1);
+          for(std::list<QuadraticPolygon *>::iterator it6=pol1ZipConsumed[*itConstr].begin();it6!=pol1ZipConsumed[*itConstr].end();it6++)
             delete *it6;
-          delete *it1;
+          delete *itConstr;
+        }
+      else
+        {
+          std::ostringstream oss; oss << "Internal error during reconstruction of residual of cell! Non fully closed polygon built!";
+          throw INTERP_KERNEL::Exception(oss.str().c_str());
         }
     }
 }
index f44f95b9873d7e8ce38282b25cd334c82be4a082..7b063aafc705934145988cec04e1f7df2e95def4 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -35,6 +35,9 @@ namespace INTERP_KERNEL
   class Edge;
   class MergePoints;
 
+  enum NodeUsage { USAGE_UNKNOWN, USAGE_LINEAR, USAGE_QUADRATIC_ONLY };
+  typedef std::pair<INTERP_KERNEL::Node *,NodeUsage> NodeWithUsage;
+
   /**
    * A set of quadratic or linear edges, not necessarily connected to form a closed polygon.
    * Some methods however requires a closed form.
@@ -90,17 +93,19 @@ namespace INTERP_KERNEL
     INTERPKERNEL_EXPORT void performLocatingOperationSlow(QuadraticPolygon& pol2) const;
     INTERPKERNEL_EXPORT static void SplitPolygonsEachOther(QuadraticPolygon& pol1, QuadraticPolygon& pol2, int& nbOfSplits);
     INTERPKERNEL_EXPORT std::vector<QuadraticPolygon *> buildIntersectionPolygons(const QuadraticPolygon& pol1, const QuadraticPolygon& pol2) const;
-    INTERPKERNEL_EXPORT bool haveIAChanceToBeCompletedBy(const QuadraticPolygon& pol1Splitted, const QuadraticPolygon& pol2NotSplitted, bool& direction);
+    INTERPKERNEL_EXPORT bool haveIAChanceToBeCompletedBy(const QuadraticPolygon& pol1NotSplitted, const QuadraticPolygon& pol2Splitted, bool& direction) const;
     INTERPKERNEL_EXPORT static void ComputeResidual(const QuadraticPolygon& pol1, const std::set<Edge *>& notUsedInPol1, const std::set<Edge *>& edgesInPol2OnBoundary, const std::map<INTERP_KERNEL::Node *,int>& mapp, int offset, int idThis,
                                                     std::vector<double>& addCoordsQuadratic, std::vector<int>& conn, std::vector<int>& connI, std::vector<int>& nb1, std::vector<int>& nb2);
+    INTERPKERNEL_EXPORT void cleanDegeneratedConsecutiveEdges();
   protected:
     std::list<QuadraticPolygon *> zipConsecutiveInSegments() const;
     void dumpInXfigFile(std::ostream& stream, int resolution, const Bounds& box) const;
-    static void ClosePolygons(std::list<QuadraticPolygon *>& pol2Zip, const QuadraticPolygon& pol1, const QuadraticPolygon& pol2, std::vector<QuadraticPolygon *>& results);
+    static void ClosePolygons(std::list<QuadraticPolygon *>& pol1Zip, const QuadraticPolygon& pol1, const QuadraticPolygon& pol2,
+                              std::vector<QuadraticPolygon *>& results);
     template<class EDGES>
     static void UpdateNeighbours(const MergePoints& merger, IteratorOnComposedEdge it1, IteratorOnComposedEdge it2,
                                  const EDGES *e1, const EDGES *e2);
-    std::list<QuadraticPolygon *>::iterator fillAsMuchAsPossibleWith(const QuadraticPolygon& pol1Splitted,
+    std::list<QuadraticPolygon *>::iterator fillAsMuchAsPossibleWith(const QuadraticPolygon& pol2Splitted,
                                                                      std::list<QuadraticPolygon *>::iterator iStart,
                                                                      std::list<QuadraticPolygon *>::iterator iEnd,
                                                                      bool direction);
index 541e5f4abdc4e1a78845f0e80ac3e680bcdd1278..9e4acc2576adf5986207b9db51107a83f6ec196c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 38c7c8d81970ddb60860fb60ce882d15c3993a91..d929824c8e756713ab1c462a42a60975b3c92490 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 3ad1cab0271ebd9a90efbee8b75e80ad03b950f5..38965a6c955629cf10d7466d1e42cb32c2a9281f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 3561a9fe9db7b51db44d1b30b9b249c61176abdf..4b9c4b7cc3b70c5d87321fc9afb4a47383a446f9 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index d9d092513b874181b741a4d6d671af5e3dbe1c85..e5b84ea2f8679e3a43f0585ac3fe8cdcdb6d3053 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index ebc88f280bc53740c565c4392b0162bdbb6ae6c1..f295fd4163788e43597f5e18045012cf03281246 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 766085d6ef4b5d6bc5fdc058f92e14d518276795..ba21683746acf8135753785419d1226ed7344bc0 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 8f9e8aa821ef2f19d0889ee14fe1edad8b0e87d2..faf5b88972c9b01e124b510d2e4b6deb6530f67d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index cc1c08130c03bf4e297a8486173272a681fd7382..ee2f3e531e1092026d5c31687e8501eeddde8087 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index ac62752ef67a861dc44965204baad13063d0f992..231e97ac9cf60699caa4009df8d31b19e38c0da6 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 9bf5acfc27bf73d2d946017e000b1ae85449d82a..e0b067ca8348dff1823709c093ae3681bbd6d5bc 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index b61a384bebcd4844f1f365498448ca7d0d2fec3f..9995f34c07848ff0284deee9620535214f74ac04 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 814fca305fabd4e00b877847d4e8daf659a00511..cb7064abd51dbf294e8272e0ef050d16d136a9f2 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 0988c26ae62b06460c36aa428e57a9176c127e3e..4baba86f4204c2cda178d219e80d701978681724 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index b575c1069cdd3379ce79de6a1c1546c1338fc985..a9d02ee122e7256805abf9c44999f89ea85dfede 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 873a7f492da9016ec49115b50a9bc895f7fe644e..3e5508525f93ef46fb64a071fc5f07028d432929 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 4d31e565e4c3eee37810483ea4887fcd664d2726..57f07c1f3f81d57d850e1d0696edd614c23ca036 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 1e7862c37bf397e0b4723957180372f5ba754a79..b1a1dd03c955b58007ec75ac539b4b0892fdf1b6 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2018  CEA/DEN, EDF R&D
+// Copyright (C) 2018-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 5eba49f478ffbbdac897a535bd4644cc8ce65a5b..df400c8cf69d447eae103d53134fc09ad5f677a0 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2018  CEA/DEN, EDF R&D
+// Copyright (C) 2018-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index f77dbb7b0a0419397b181dc164eb427d1e84a3f3..da9fe59b8d409c41e7d162ea6c67e09705c8f1f1 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2018  CEA/DEN, EDF R&D
+// Copyright (C) 2018-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 5bb6e1c89dc9f2da260889ddf463e30967c9e624..44f56f321cfe1fc20e3587f6718b0d35ff0a1984 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 08605a8d4962f7a6f8f494f1bf3cfc2ec9971580..3caaa68018ad24d8df4936d86ff9f394e4a6f275 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 44daca384285f74f65e490eacdc608e200fa8b33..9d0ce99d60de1e258d1ffefe36c222b15d28b977 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index c0b0ef0e61d672ef0e3e3834198aedb2d9e6f21e..1e644d7813c31a94a878a92aa89943d0411f4f47 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 0841898d74230ee8b37110148b60848d64f72562..f56a2fed00e07cd653e3f1c23249c8195b0d142c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index dc7d2aaad702b0b0417ca20c10c78d2190cdb336..ddfaf93dc972cabfa1ed6b74327becb398567dce 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index cfd759ea7f843a5ef5867ced3af514b1e994e728..a9b7252435d9e8e2088d9bc7781f840c007ccce2 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -99,11 +99,8 @@ namespace INTERP_KERNEL
                                                                                    intersectFaces,
                                                                                    getSplittingPolicy());
             break;
-          case PointLocator:// switch target and source
-            intersector=new PointLocator3DIntersectorP0P0<MyMeshType,MyMatrixType>(srcMesh,targetMesh,getPrecision());
-            break;
           default:
-            throw INTERP_KERNEL::Exception("Invalid 3D to 2D intersection type for P0P0 interp specified : must be Triangulation or PointLocator.");
+            throw INTERP_KERNEL::Exception("Invalid 2D to 3D intersection type for P0P0 interp specified : must be Triangulation.");
           }
       }
     else
index dba5e8c0b5b5d4ea23ad8de9ca5251e89e68dd5b..ca1ab9dbef2cacc6463e90890c45ddb4700aba52 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index f10c23826c872b06cabea653fae444bb570e2d93..e299a47a5f84c70dddbce08e8d1baccaee5732a5 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index ddd44ff6fe07c145705b692be311d0595f43cd29..2899afc7fc25bcc4f4ac763337bdb64c3ca237c6 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index a9e7bc9bcab7772f9b3108093c60537e09092be6..19e2ee9d1ac1d452d363f3f9b548e0d56a947d51 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 5df84a9742636c4d6de2a1b93f4f5fd490b7b9cc..46b7f7d7ee167760a2cffa358f01cbe32b08cbd1 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 2b5e09dc4715623648bcb8b0569ccaec1c69b1a4..da03d877563087707051b946a9590cb8dc6dfbc3 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index e2f30dbed328c7f18b381199039532657c7cece6..8680ea2d1e453e672c26141ea7bb6a21f3bda75f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index d77b59b919186a87571ab00aceee5414bf08dd44..15d100d1035e7726be928520ac02df8454126131 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 3bc2e2a01132bbfb8348bda3035c09c50c2f44cb..638246c3444272b9716faf10e51b0f51394906aa 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 410452b60a07cce8e2f9a128341fcf28b136f085..6fdf73723b958748e9432a0f76d7eabae4291648 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 9007ab7209a2781fc4836e5e0ef665c171611046..00a22098aa0a1c8b34fb6c30631d9df87477cfc5 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2009-2016  OPEN CASCADE
+// Copyright (C) 2009-2019  OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index c92b3e99c2e2ffc5a9c013a41218a251d1550871..ecbd29210173c3130d4567cfa0cbca0b632d01da 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2009-2016  OPEN CASCADE
+// Copyright (C) 2009-2019  OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 4538f4b646f0f8acb683313be6a5405e5316ed52..3d74d4ddd2fcc8278a49b3d7ff2b337f8293b039 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2009-2016  OPEN CASCADE
+// Copyright (C) 2009-2019  OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 69d0c6ade1a1d1d2ffd7326928b3fd07b1575752..a202ec305d8151ff400d029e8541b833a4146d08 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2009-2016  OPEN CASCADE
+// Copyright (C) 2009-2019  OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 077702d3f69211294b3ae04cd259eb094fafd181..25f81e057b58e58441f9d15dcb1d4724dd0a8bcb 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 540fb13def76c962972bb586ac046b953eb681eb..097f8d04ed576da18bb81536785e7a160849e97c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index fcc60cf18147b31373e59c83438c936c8e55204e..63998d9338e251920589a8ad365829aa221b656a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 69adec524a53f99bdba5cccffffc7dd280d5ffe3..d06c50964a7daa38e228194ea9f27ade135afdce 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 46d7d7881618b6da9a98f3ca1ebacdefbdd4e9c7..040348741be3ffa9075bb544ec32c48eaca525be 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 5c3fc9a244121ec5964f7948683ee2e6fd12edfb..eb969ea3b4a54a470325f999e57b9ab461e95b8c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index d037a1fa7265708c4960aa7e2675ca63f6b0683d..f40bd33518b27d324ea181269f2a8213977ee661 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -418,6 +418,113 @@ namespace INTERP_KERNEL
     bc[2] = 1. - bc[0] - bc[1];
   }
 
+  inline void barycentric_coords_seg2(const std::vector<const double*>& n, const double *p, double *bc)
+  {
+    double delta=n[0][0]-n[1][0];
+    bc[0]=fabs((*p-n[1][0])/delta);
+    bc[1]=fabs((*p-n[0][0])/delta);
+  }
+  
+  inline void barycentric_coords_tri3(const std::vector<const double*>& n, const double *p, double *bc)
+  {
+    enum { _XX=0, _YY, _ZZ };
+    // matrix 2x2
+    double
+      T11 = n[0][_XX]-n[2][_XX], T12 = n[1][_XX]-n[2][_XX],
+      T21 = n[0][_YY]-n[2][_YY], T22 = n[1][_YY]-n[2][_YY];
+    // matrix determinant
+    double Tdet = T11*T22 - T12*T21;
+    if ( (std::fabs( Tdet) ) < (std::numeric_limits<double>::min()) )
+      {
+        bc[0]=1; bc[1]=bc[2]=0; // no solution
+        return;
+      }
+    // matrix inverse
+    double t11 = T22, t12 = -T12, t21 = -T21, t22 = T11;
+    // vector
+    double r11 = p[_XX]-n[2][_XX], r12 = p[_YY]-n[2][_YY];
+    // barycentric coordinates: multiply matrix by vector
+    bc[0] = (t11 * r11 + t12 * r12)/Tdet;
+    bc[1] = (t21 * r11 + t22 * r12)/Tdet;
+    bc[2] = 1. - bc[0] - bc[1];
+  }
+
+  inline void barycentric_coords_quad4(const std::vector<const double*>& n, const double *p, double *bc)
+  {
+    enum { _XX=0, _YY, _ZZ };
+    // Find bc by solving system of 3 equations using Gaussian elimination algorithm
+    // bc1*( x1 - x4 ) + bc2*( x2 - x4 ) + bc3*( x3 - x4 ) = px - x4
+    // bc1*( y1 - y4 ) + bc2*( y2 - y4 ) + bc3*( y3 - y4 ) = px - y4
+    // bc1*( z1 - z4 ) + bc2*( z2 - z4 ) + bc3*( z3 - z4 ) = px - z4
+          
+    double T[3][4]=
+      {{ n[0][_XX]-n[3][_XX], n[1][_XX]-n[3][_XX], n[2][_XX]-n[3][_XX], p[_XX]-n[3][_XX] },
+       { n[0][_YY]-n[3][_YY], n[1][_YY]-n[3][_YY], n[2][_YY]-n[3][_YY], p[_YY]-n[3][_YY] },
+       { n[0][_ZZ]-n[3][_ZZ], n[1][_ZZ]-n[3][_ZZ], n[2][_ZZ]-n[3][_ZZ], p[_ZZ]-n[3][_ZZ] }};
+          
+    if ( !solveSystemOfEquations<3>( T, bc ) )
+      bc[0]=1., bc[1] = bc[2] = bc[3] = 0;
+    else
+      bc[ 3 ] = 1. - bc[0] - bc[1] - bc[2];
+  }
+
+  inline void barycentric_coords_tri6(const std::vector<const double*>& n, const double *p, double *bc)
+  {
+    double matrix2[48]={1., 0., 0., 0., 0., 0., 0., 0.,
+                        1., 0., 0., 0., 0., 0., 1., 0., 
+                        1., 0., 0., 0., 0., 0., 0., 1.,
+                        1., 0., 0., 0., 0., 0., 0.5, 0.,
+                        1., 0., 0., 0., 0., 0., 0.5, 0.5,
+                        1., 0., 0., 0., 0., 0., 0.,0.5};
+    for(int i=0;i<6;i++)
+      {
+        matrix2[8*i+1]=n[i][0];
+        matrix2[8*i+2]=n[i][1];
+        matrix2[8*i+3]=n[i][0]*n[i][0];
+        matrix2[8*i+4]=n[i][0]*n[i][1];
+        matrix2[8*i+5]=n[i][1]*n[i][1];
+      }
+    double res[12];
+    solveSystemOfEquations2<6,2>(matrix2,res,std::numeric_limits<double>::min());
+    double refCoo[2];
+    refCoo[0]=computeTria6RefBase(res,p);
+    refCoo[1]=computeTria6RefBase(res+6,p);
+    computeWeightedCoeffsInTria6FromRefBase(refCoo,bc);
+  }
+
+  inline void barycentric_coords_tetra10(const std::vector<const double*>& n, const double *p, double *bc)
+  {
+    double matrix2[130]={1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+                         1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0.,
+                         1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0.,
+                         1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.,
+                         1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.5, 0., 0.,
+                         1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.5, 0.5, 0.,
+                         1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,0.5, 0.,
+                         1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.5,
+                         1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.5, 0., 0.5,
+                         1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.5, 0.5};
+    for(int i=0;i<10;i++)
+      {
+        matrix2[13*i+1]=n[i][0];
+        matrix2[13*i+2]=n[i][1];
+        matrix2[13*i+3]=n[i][2];
+        matrix2[13*i+4]=n[i][0]*n[i][0];
+        matrix2[13*i+5]=n[i][0]*n[i][1];
+        matrix2[13*i+6]=n[i][0]*n[i][2];
+        matrix2[13*i+7]=n[i][1]*n[i][1];
+        matrix2[13*i+8]=n[i][1]*n[i][2];
+        matrix2[13*i+9]=n[i][2]*n[i][2];
+      }
+    double res[30];
+    solveSystemOfEquations2<10,3>(matrix2,res,std::numeric_limits<double>::min());
+    double refCoo[3];
+    refCoo[0]=computeTetra10RefBase(res,p);
+    refCoo[1]=computeTetra10RefBase(res+10,p);
+    refCoo[2]=computeTetra10RefBase(res+20,p);
+    computeWeightedCoeffsInTetra10FromRefBase(refCoo,bc);
+  }
+  
   /*!
    * Calculate barycentric coordinates of a point p with respect to triangle or tetra vertices.
    * This method makes 2 assumptions :
@@ -427,113 +534,67 @@ namespace INTERP_KERNEL
    */
   inline void barycentric_coords(const std::vector<const double*>& n, const double *p, double *bc)
   {
-    enum { _XX=0, _YY, _ZZ };
     switch(n.size())
       {
       case 2:
         {// SEG 2
-          double delta=n[0][0]-n[1][0];
-          bc[0]=fabs((*p-n[1][0])/delta);
-          bc[1]=fabs((*p-n[0][0])/delta);
+          barycentric_coords_seg2(n,p,bc);
           break;
         }
       case 3:
         { // TRIA3
-          // matrix 2x2
-          double
-            T11 = n[0][_XX]-n[2][_XX], T12 = n[1][_XX]-n[2][_XX],
-            T21 = n[0][_YY]-n[2][_YY], T22 = n[1][_YY]-n[2][_YY];
-          // matrix determinant
-          double Tdet = T11*T22 - T12*T21;
-          if ( (std::fabs( Tdet) ) < (std::numeric_limits<double>::min()) )
-            {
-              bc[0]=1; bc[1]=bc[2]=0; // no solution
-              return;
-            }
-          // matrix inverse
-          double t11 = T22, t12 = -T12, t21 = -T21, t22 = T11;
-          // vector
-          double r11 = p[_XX]-n[2][_XX], r12 = p[_YY]-n[2][_YY];
-          // barycentric coordinates: multiply matrix by vector
-          bc[0] = (t11 * r11 + t12 * r12)/Tdet;
-          bc[1] = (t21 * r11 + t22 * r12)/Tdet;
-          bc[2] = 1. - bc[0] - bc[1];
+          barycentric_coords_tri3(n,p,bc);
           break;
         }
       case 4:
         { // TETRA4
-          // Find bc by solving system of 3 equations using Gaussian elimination algorithm
-          // bc1*( x1 - x4 ) + bc2*( x2 - x4 ) + bc3*( x3 - x4 ) = px - x4
-          // bc1*( y1 - y4 ) + bc2*( y2 - y4 ) + bc3*( y3 - y4 ) = px - y4
-          // bc1*( z1 - z4 ) + bc2*( z2 - z4 ) + bc3*( z3 - z4 ) = px - z4
-          
-          double T[3][4]=
-            {{ n[0][_XX]-n[3][_XX], n[1][_XX]-n[3][_XX], n[2][_XX]-n[3][_XX], p[_XX]-n[3][_XX] },
-             { n[0][_YY]-n[3][_YY], n[1][_YY]-n[3][_YY], n[2][_YY]-n[3][_YY], p[_YY]-n[3][_YY] },
-             { n[0][_ZZ]-n[3][_ZZ], n[1][_ZZ]-n[3][_ZZ], n[2][_ZZ]-n[3][_ZZ], p[_ZZ]-n[3][_ZZ] }};
-          
-          if ( !solveSystemOfEquations<3>( T, bc ) )
-            bc[0]=1., bc[1] = bc[2] = bc[3] = 0;
-          else
-            bc[ 3 ] = 1. - bc[0] - bc[1] - bc[2];
+          barycentric_coords_quad4(n,p,bc);
           break;
         }
       case 6:
         {
           // TRIA6
-          double matrix2[48]={1., 0., 0., 0., 0., 0., 0., 0.,
-                              1., 0., 0., 0., 0., 0., 1., 0., 
-                              1., 0., 0., 0., 0., 0., 0., 1.,
-                              1., 0., 0., 0., 0., 0., 0.5, 0.,
-                              1., 0., 0., 0., 0., 0., 0.5, 0.5,
-                              1., 0., 0., 0., 0., 0., 0.,0.5};
-          for(int i=0;i<6;i++)
-            {
-              matrix2[8*i+1]=n[i][0];
-              matrix2[8*i+2]=n[i][1];
-              matrix2[8*i+3]=n[i][0]*n[i][0];
-              matrix2[8*i+4]=n[i][0]*n[i][1];
-              matrix2[8*i+5]=n[i][1]*n[i][1];
-            }
-          double res[12];
-          solveSystemOfEquations2<6,2>(matrix2,res,std::numeric_limits<double>::min());
-          double refCoo[2];
-          refCoo[0]=computeTria6RefBase(res,p);
-          refCoo[1]=computeTria6RefBase(res+6,p);
-          computeWeightedCoeffsInTria6FromRefBase(refCoo,bc);
+          barycentric_coords_tri6(n,p,bc);
           break;
         }
       case 10:
         {//TETRA10
-          double matrix2[130]={1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
-                               1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0.,
-                               1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0.,
-                               1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.,
-                               1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.5, 0., 0.,
-                               1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.5, 0.5, 0.,
-                               1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,0.5, 0.,
-                               1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.5,
-                               1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.5, 0., 0.5,
-                               1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.5, 0.5};
-          for(int i=0;i<10;i++)
-            {
-              matrix2[13*i+1]=n[i][0];
-              matrix2[13*i+2]=n[i][1];
-              matrix2[13*i+3]=n[i][2];
-              matrix2[13*i+4]=n[i][0]*n[i][0];
-              matrix2[13*i+5]=n[i][0]*n[i][1];
-              matrix2[13*i+6]=n[i][0]*n[i][2];
-              matrix2[13*i+7]=n[i][1]*n[i][1];
-              matrix2[13*i+8]=n[i][1]*n[i][2];
-              matrix2[13*i+9]=n[i][2]*n[i][2];
-            }
-          double res[30];
-          solveSystemOfEquations2<10,3>(matrix2,res,std::numeric_limits<double>::min());
-          double refCoo[3];
-          refCoo[0]=computeTetra10RefBase(res,p);
-          refCoo[1]=computeTetra10RefBase(res+10,p);
-          refCoo[2]=computeTetra10RefBase(res+20,p);
-          computeWeightedCoeffsInTetra10FromRefBase(refCoo,bc);
+          barycentric_coords_tetra10(n,p,bc);
+          break;
+        }
+      default:
+        throw INTERP_KERNEL::Exception("INTERP_KERNEL::barycentric_coords : unrecognized simplex !");
+      }
+  }
+
+  inline void barycentric_coords(INTERP_KERNEL::NormalizedCellType ct, const std::vector<const double*>& n, const double *p, double *bc)
+  {
+    switch(ct)
+      {
+      case NORM_SEG2:
+        {// SEG 2
+          barycentric_coords_seg2(n,p,bc);
+          break;
+        }
+      case NORM_TRI3:
+        { // TRIA3
+          barycentric_coords_tri3(n,p,bc);
+          break;
+        }
+      case NORM_TETRA4:
+        { // TETRA4
+          barycentric_coords_quad4(n,p,bc);
+          break;
+        }
+      case NORM_TRI6:
+        {
+          // TRIA6
+          barycentric_coords_tri6(n,p,bc);
+          break;
+        }
+      case NORM_TETRA10:
+        {//TETRA10
+          barycentric_coords_tetra10(n,p,bc);
           break;
         }
       default:
index b3ebefa06fd1935fcdd849d42aecf79be59c7ff2..2cd5b17832d8e3933529349e5623f3bda3ec22ba 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 3174d4f3607acc535168d196410483b0ccd504fe..7cd83329b1b75e6620d6db156bb17c0bdb015ce3 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 289a0ab0d5ee8ce39191d657f080b6b614bdfece..ccb8ed34993dac77d31b8d6e0d12af1db39cb699 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 7a34d3b5e02570d01d2672f38a40841079bcdce7..7b3db0bc5f01fe646a8f86e616f03fb8637fdf85 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 9ddb976529d2ea6fd559ab82f0ea5a6b2ca736fd..0c599f04fe7c709cbba3233240ac95991cfd53d1 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 19bf431783b07df5f03f62b466f4f40a88429bb5..62a632caefc0062b4630d5504fb405c2932bff0e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 666815095e39d42eaa009ef813652a3f22c2dc0f..fbaac7a69cab475e6f476fa24ce9ba925c14a125 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index a76130dd9e08078f07444b895d264185006d8f10..7926071016964ec71080f400edee46ae6d544760 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index a3f23241a6bc4803cb728869785b60ce3fc496f2..4871adf4890a00d30b19305dc6845efd0a87392b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index e5867718097057e6b80ca386689e4d3a34440506..4c8498e7a37c482b4f906617f016f14886682d96 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index b644813b5a1d43fac8892b93ae5771f576158ffc..e337bf471c9ce7b999a23265326f569bf9ad9b15 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 320e6e5713952ff10a5338ba1de573a9d3915ee1..73bdbecb625f2c968670da8ef60beb1a30b2649e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 2475eccec0a498787fd9d55587647e38148fc11e..e0b6329649ec08583712147a67d3c8a96021654b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2009-2016  OPEN CASCADE
+// Copyright (C) 2009-2019  OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index b2593ba6c3b526668dfd27e045aa223c28150db5..fe9789b60621f1fb98a7f825efecb43cc5a3506f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2009-2016  OPEN CASCADE
+// Copyright (C) 2009-2019  OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 8f15b4d6e3c23d4d36cd6c74531263b4e3422522..b6df87c2275fec0aecb02f590a9edfb67ee1a5fd 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2009-2016  OPEN CASCADE
+// Copyright (C) 2009-2019  OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 5255055aa2f74b5ccf7b1a4e4e13f802bc2d7091..f523f5c3c57528a9aa9ea6b246868c677c9b67fe 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2009-2016  OPEN CASCADE
+// Copyright (C) 2009-2019  OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index f2d7b2ea878a44cdf870b277098fea777ad65d63..4fcfea8fcb7d00d89415b64ada0d8249b7f3c126 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2009-2016  OPEN CASCADE
+// Copyright (C) 2009-2019  OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 3f5ab84dd24b6a7b6a237cc56e29780ec0429c9a..d7b0a6746812f2ae3805f819caa65c1646bb6c85 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2009-2016  OPEN CASCADE
+// Copyright (C) 2009-2019  OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 09d7463551a0ddafa17a6e976a3505c846d6a6e5..4b8ca806dd9d49a92e5378f7890caafc44fe7f38 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2009-2016  OPEN CASCADE
+// Copyright (C) 2009-2019  OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 8fc6749e489e44e32682d4001555578a2e95ca35..6b128dd295a9147f768c0f1537017133b4cc439b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2009-2016  OPEN CASCADE
+// Copyright (C) 2009-2019  OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 3974f2c417f2af76770c69c0ed4a52617dcdf906..1983966f4a471f7ec760117197a543e9614dd19b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index ae707372c6355eab0e4410333d34cb03e25c2d10..b9d525f8ae65ddb4e8d81f5c57833609ad35d9b1 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 65fee50106c5e2d8ab273db552741207cb6ba99f..f399844d6eee91b0dcc058c581a6da728c3e1303 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 0085d115f19eecaa8c4be437d18c66967ff24cbc..58011c94694fae60252129e8c085f1e694f557b9 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 018d5b771cf6d71dcfd85aae6f74e2e049ed3b65..1835f3150ec15c1ca1de28b811a7c50f7db789ef 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 1047a84c9249c5bd552122395820f702ed2ba86f..5633062312fa5f1a40c1d0424a7dbfd4ef17554b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 4a37da7233ad0d40f8c8ca18a29af8c754978141..6c4d42760c4132a67a25c38053725a28a146830f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 552ab2625525a613668e1ffe0449007dff4493a1..def30877562189a8d4bfd740bea75ec015849a80 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 34c1cb01185b62be94ef8ba9d5d80500372ea6cb..f36769c42ead2f588b82841f4bc40edeaaea0a09 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 485ea4077e56edff5c099b6481bd83293675504a..ed94d0817555cc7d69ed1fc6192f106a2e4c3681 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 8d0d56110f62a510f2c0f888cbf0ac99d0946317..263501ca0cc1e28ab649ecab939e7a25010df4e2 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 36f675af0d37fbcc7a5d555e5a08c9e9f50675f7..c23a75b902e2f87d2e7a2d9d5276e4131150014a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index e5af19b0716194aab133314a5d84108198728148..06653e419119dc74ee9b80abb7c3ed46002d8301 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 2f1f0e2ca0da3bcbccdbf00c0da45907b77a05c8..8f125a974e78b56dba4e45f560732402ef71ad7b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 6f0646305d39c56ea51b41b73b89661002beb795..ecc8c1e4c22a709db365a00857c2b3a3a9745d6e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 89fa1a15621f00cd0389c6d5b8334eb2ab665030..ef35bbde961b92a5089bb2373cfbced570f44175 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 5824d6923dfa381650dc35d39ef22abf60e3de0c..22ac30f9195cff97891a56a4f4bcc8993a066dfa 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index d6ec0d1277511b2c930b5626ad5cbc372710fad3..5b23d1862bfacf413ea6f6cb4c7491b1a5fda14b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index d30fa89c1c8cdbd62036152c76855c7a77d9c2ef..478ff1c15f4d7c5d7953116144006b43115bda5d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 7ac53517a79a0f1d0adf3d36e61b587e592ececa..15b8972906f1c47e4dae5e90fd62745b0718e112 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index efc74630a382081e34ceabd47db9f8b8b6664b71..67d7f79134ba1f47938360dbeab349c902994532 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 2a3864b0ec5e8a95415ebb9eeb5bd0b21887b02b..14a0ce60bd55608c42544f28cb91672e007943ad 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 9d6551fc42a32dbe922f3900a4aa2483a60df3c6..444e096707ea373c7f5069e57af118f04f0d3f57 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 0d08ab582e91bb4ce2ca0bfad39b9cff00e44c0c..c0b91f5d7a0a17c866235d1542354dcd54febed1 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 9c225e322a5201911078119a0fdd2fbd302c60d8..94631a14c421dbc5551c88c4274c99bcd69c8bc6 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index ae8617dafc8e26dce4126705614b15d7fa568f73..cbc7f716334a1d30c81eb0be5b74d8050a7823b0 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 66bdf416b0ddf432c745212a0a136859059488b1..865435ccebd05c3d71320d8f7f5f0f23a98e6789 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index e5d08ff686d31db2305b9a5f1fa4289df498d4f8..60a3f7af68e29df31c4ee0a7b20de6d16aa14451 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index bcd999bb753a60f8c0e565f7ae524a1467acd3dc..b63d9f50b650907fb500e3457cd25e19de91b563 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index b1ade82dee974e3c45d041f68bdac2c8469a6381..8a14b069d838a1fd4cc21199002248251741dd08 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 235fd13e7e76af41e04a4af1109cb7388bc994c0..2989168f2717cad1f1f8c752303908c9989974ec 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 784d1e3cc99fa2890d5a0b705d1bc11403646b11..b4873ffd0b9de65778fa54fd96e46fa22991854b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 9526671e32cca561bbc3dffe4e7281fd798a301b..14dfe0620295554394e2bfcdae9f6e55d0a7e8b8 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 5aca56877fea9d7e8f5cf48d1ddeedfd44639b4c..e85c337d897e494a9b8bd9f610d7de8bd40017b0 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index deb3bb6fd07db80c6de32b36b04dcf920677f32b..a7235b54ef6ed28deb49486fe5316854f9f3c9b3 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 39b12de32ed787032b20d38444082e627e312de0..84cb7ddabd3951062b74909aa859ad027a5d0d09 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index d41b3fcc0772df9f6ee347706bf44f4a6024524f..54344d8561c7225a9fe6d1a146632f44b7dfab36 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 488528b2dd4ea4b58dcd5a954f551c50c4a819ed..e2ca0c5e944ff18627c09fc4c7eb4305bf6bbe34 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 4c3d995a55d03d902b365ce5ee6688aba2930da0..09e67690222ebffccf72d70ac52b8f659ef54ad9 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 4c4e1e96c86d4e0815343688b374300c10228b28..66acfa48308c9fa9a63dc838ca28800b23e97e15 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 4b32a1f3225978c3af368b764e48d9baede57a95..f96e28852e3c30e8b298c79797c44a11d5af3e68 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index e34bea2b440d5c032d82c6b272a0f760b1482d39..b7826bd4ff008514131e8560e1f9599c0a2df05c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 64f4df8468b6d4230cf9ac97e3828398812d63a9..44956c078b833f53e7bda822b8b1c4f454ed2dd6 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 050df68c29b460e0fe690548926453f7b547dbd8..efea6865984002390646971ceb10dd9123abf5f4 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 4b38ac200cc2a6d6e6485d526180725659f198da..c587e01025977e12bfd453f03e6ed32928d90481 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index b3b4ba7c2db7d1d0b64bf3d0d473a343fb2ad2b6..6a0498e72dc85cf9e5345a5dfde7b453b81eea56 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 179079efd01e584611a334c4ca95468db1fe638e..a0440e8414a335408cd86d8f5afcd64171be4857 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 659a8d86c9d11961f1e2dcbc5b75e12450403f96..3bde89a9b710d96a2086d0f4d7f64dbe203c0dba 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 46329aa189a5ec77ca6f4b6350c380827622bf8c..73a536cc4b20b43f67d56cc0f704301ad4b31c20 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 534d394577ae07c308f4ad4157d96906517c4fb1..ecc0ddb8da8ceb60d5b24d3ade0056ec5fe67f6d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 00d60271dc983f5a31cfe259470d39dc51037960..6a8d448c13e560fcf346b45f79510993607ae2b1 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index d32f0690ce58c9c29b9d57b6aa9089627efd5f12..c2df211b1165a74502177b8b4aa48e13ad142cbe 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 3f7c90c21dfa4dbf8e482587740a227d4ca0a1d7..fa0c0fcbf9bb13cfe137f33725ed3fc3b25622a6 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 6fa6002da54a7683872b6f0b292403586de7cf30..eac117c246d629cfbdd749aa1f683658355eb05a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 6015a9361939a67f39db6b7cca2f29a2ac2c5a8d..29a9fdc3c1cbb87d462b783386b1e6dd029b1794 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 441f53f166b029aedc7292476f0408d5d8cf4ffe..85b4b58ae13f0f731be69d89671275c880112667 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 842472f8bbcfa253ae145fe1e5b8f3bfb67d569a..3d3a70fab74b1c721a668be76e4378ae8e18d30d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 81c5843e8d658282b893f3f769e2307a27dc0b6f..87813b6ad6d9c1242cff359fce5c8dcdcf800bb2 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 6039047f53a52e3fb0689b3c1789b6cd0e1bc8a4..67eef4f4ec92ec4b40af0d05da9865372e885297 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index f37ac435e4fff040e10411f5cfe4b6b699676465..38634d4ce4f54cc5b6a99929568df650595deae8 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 63bd94698cc69e8801ee395cafc53fa2baa8f636..51cab38fdf80b7bea9a7d22e161b27a07251067e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 687c1dfefada01cf2c9e5b28ffb5dfc6dda13032..67eb81537c074712d11d8b2bc30c21460ac4cc7a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 5a011c75277e3ec340bd04acc7bacec79a1da148..54e1387b79aeba6cc4cf038d61d65347d7d6eeac 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index d4d0bae74fe09c7fb553f866247654eaf7cc2bb9..83b2628f9840640d53cfd9c89ea1502bc60332b6 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index eb9e4f2cc420ace0cca45e2023ec1e7c4c3083b6..55fba1d65ee12b31136e3b1480265d2b8df993bc 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index a06e5f16facdfb7c9346ce6a03273de2a20935ef..3952c4ba0c7f0a63a4888ea6fb62d38507288ea7 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 0e7f46cd5919b5ec03e9bba0186feed89a6248c0..79950816681ced2752920abfce8f710da4f3c1d8 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 693c2d5d796bb83833045c7bf65451d4af8bb4d3..0cef8a40d4bddf49716565be20c70b74fa261cf8 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index b0e771f7e9ddc572013a67d61927e837063218c1..1d836d322b981c67f2f5fe0ff00513367173d43b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 2ade1c34f8562031e96d19ac943529bdb3e22047..234c02fdd37187ab766a337fd9fb34ae84b00757 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 8e15a0e29a9c72c17fb86d207097f416ff5842e6..6a6ad8db65a6a61883e75411a5067ed8d5ace875 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index b429150ad3afe7d8d8e54046936c65ac7f3c9a30..6f896d28da9b1e2ac1c51c7c6426df1332e41683 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index ad536d12179656987de94e87b90919a80d4f44bd..6e21bfc13be4e2baff9ec89b9bc333b1650a6649 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 90a0f1fa7067920ec7dceca9108e4a0ba45a61a4..d1b10e67dfe09b86b50afcf9a2f7c24f09a923fa 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index fbec215e61bb7631391f5f4ab41220a197c0342d..a5a978080f14e63ac0d8dc389b893022df3d618e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index ad96e2b72cb87f8827ed19d66dbe452ec69a448c..5efe430ff659821f08c588c567affe6606c234a4 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 9b4c727cb64a19ae0d58e5f8157409049aeb87fb..80cfe1e48a1b782e248311ecca20d5f3b9ddd7fc 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index dd070019047e5a50c1b2df62b5cfb45f1647e6e5..264373a3296e81f683431790a5e02781e175a605 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index c00c1870fda1506829ead41c82ba7c529cb1ff39..bc704bab99714c03a0993e8ce94a7f8d67ef9746 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 79a14b39d932409fc870c6c3e5e3a820d6efeb38..5af69d9d1d5f54b508ea454085178c7cd7196047 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 21aaa723f3e6c0c415bb28f5d338a299f8e6f741..9f783ba531a995d3f1942eecdee820a409e86a3f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index e759c52fdbafb2f3e97ae9dec0ea9e2edac8a40c..f7269bfcf5d414e9c056685f7689318f501e68d1 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 80b7f238b70fe07564781d0dfb49259fe22f6996..853e3226d116a3e072459b82e9bb29041862d1af 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 25938345bfae390203dc4879a828e21b09a83514..03562790eacc37491c3572869b15026558b16d1c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index ea317f0c84afeb3697895b624c567a811ae31bbf..cdcc00c1c42980169937a72162b5535afe07a723 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 4ff91cb01ce7d9710517915abf49a9fc8df12017..0909eee051a64a3097c89ca3ac67f62c48c485d2 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index da033957cb61b9d8f381740e447eaea5e87971ea..db93a8b5b5e38e84c935a175b603627790c7c9c0 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index f2b40ad21bbb8e435b71be29e4531fa1692b4849..d19305db0c53fc1bef102b42c817018b1f3a1f1f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 68e8d4097ba6a197454174786fef9512e8397619..d1b81c75e1739c9e71397f7eb36300a2889df5eb 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2016  CEA/DEN, EDF R&D
+# Copyright (C) 2012-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index f2fd0c7396fe1e4611b3013f5864c02172ec35e4..32d45dee4e4f16cfd6f467f0831e41823f3e9a50 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2015-2016  CEA/DEN, EDF R&D
+# Copyright (C) 2015-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index a5ad215af2da3349424639c6e7cbeafe62a7674a..5824f3a3d6128ed96ccb5440a58cee775a809e01 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 5c390b86f2f2cc09b2494f6a3cbf4da66e6cd687..1c3f74ac99e46913453d77ffca963292c070af77 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 4aae81b0de8f50a29fd9ad33ac71a8a27b5098b4..775c40f5f572f183476fec0bc9948f533297aa6f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index d5d187da6d2e8c1907ac462e17864f4d69d37069..f0ad31ca1e7e96a3852ec319fed271c6059cbfc0 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 26de77b302dda7c4cd86eae8a7575a413b3b7415..2ead2b4d44db9e860300f4e71500454327365da5 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 46bd73421333c88cc97fccac39123564900e4bf8..ffdeb4f967e33baef15673f2fd89fb6f3a87d039 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index c0349a5ffc1d71ae67c440dc6d41b29543492341..ef510f8d98c92eaf7e90bbdb10c23c91576d9085 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 03e8ba7f6604906585ca09a1d1fc15e4a69d173b..793b2802fe73d0365b5e28d63837487861efd2cc 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 8b8b78dfe113eaca536e7c4a1442ea1041daee50..3a1a636c0277d873230444347aedf0b285f9bf4b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index a48d1e9007814a2aa72a8fc42daa6fc4c1cda680..faa54fad8e1903e4ca86df29846a39edba7bfa97 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 7cdd931c2ac4f130d1bd44a1df4cdf02bc68a718..0c57c80ba1b7020e713b46430426da2c6a08900d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 88e1443acb9d5fd0dbcdb1e924865c5144f5ed20..54e3d9656631c308075f47186c2359932def02a4 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 0fb1d48faf937d2704410d8b12c2f11ea0dadbec..e0cd9141f6c39e7bc7287160646a635186d94753 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index b96bf7a40c83581a79fac6dd2273a4ffd9ecd1f8..21c7e30c71137fa799b9b7c6870ccb9ddc7bd245 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index b97dcad07e4d41d88e213636d388bdafbb7b0c1e..39ab79a98d20a0a710e9012988a56deb0df8e3d2 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index ae583ffb3ab3bd6c37d695899257aaf29c7916d6..b2e695a722356165b0a2707545e75ce2f203416b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 22f75b4dc69c8bf0fc5290cfd0d64e3dba1c9300..b7b4bb9bf39077c53f503bd923cd015ca8ef2b99 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 3330387d214dfecbdbdeb1d378b60c94762e6c68..f037d44d3d48255bd173181ff1d70b3ff9aa9dd8 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 5ba05e0f8e4890625a63a9acc7c1a529f8b36186..150571bf4ee12420929478338c7ddeb541008abd 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index c7cdab566853ba1938a306811dbf31e1024ae913..1d78aaf91e46a25e9fef1c96149f1f2ec5a35b8f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index b91dae4dc9fb6bb1cc43115c05f80e7c535c40f2..b279bb98629634e833c502342b326e3aee2011ae 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -210,6 +210,7 @@ void QuadraticPlanarInterpTest::IntersectionEdgeOverlapUnitarySegSeg()
 {
   ComposedEdge& v1=*(new ComposedEdge);
   ComposedEdge& v2=*(new ComposedEdge);
+  QuadraticPlanarPrecision::setPrecision(5.0e-14); // [ABN] man, those tests are really close to epsilon! I need to relax this a bit.
   MergePoints v3;
   //Testing merge of geometric equals seg2.
   Edge *e1=new EdgeLin(0.5,0.5,1.,1.); Edge *e2=new EdgeLin(0.5,0.5,1.,1.);
@@ -235,7 +236,7 @@ void QuadraticPlanarInterpTest::IntersectionEdgeOverlapUnitarySegSeg()
   e2->decrRef(); e1->decrRef();
   v1.clear(); v2.clear(); v3.clear();
   //Test 0
-  //Test 1 - OUT_AFTER - OUT_AFTER | same dir. - 0°
+  //Test 1 - OUT_AFTER - OUT_AFTER | same dir. - 0deg
   e1=new EdgeLin(0.,0.,1.,0.); e2=new EdgeLin(1.5,0.,2.,0.);
   CPPUNIT_ASSERT(!e1->intersectWith(e2,v3,v1,v2));
   CPPUNIT_ASSERT_EQUAL(0,(int)v3.getNumberOfAssociations());
@@ -243,7 +244,7 @@ void QuadraticPlanarInterpTest::IntersectionEdgeOverlapUnitarySegSeg()
   CPPUNIT_ASSERT_EQUAL(0,(int)v2.size());
   e2->decrRef(); e1->decrRef();
   v1.clear(); v2.clear(); v3.clear();
-  //Test 2 - INSIDE - OUT_AFTER | same dir. - 0°
+  //Test 2 - INSIDE - OUT_AFTER | same dir. - 0deg
   e1=new EdgeLin(0.,0.,1.,0.); e2=new EdgeLin(0.5,0.,1.5,0.);
   CPPUNIT_ASSERT(e1->intersectWith(e2,v3,v1,v2));
   CPPUNIT_ASSERT_EQUAL(0,(int)v3.getNumberOfAssociations());
@@ -256,7 +257,7 @@ void QuadraticPlanarInterpTest::IntersectionEdgeOverlapUnitarySegSeg()
   CPPUNIT_ASSERT(e2->getStartNode()==v2.front()->getStartNode() && e2->getEndNode()==v2.back()->getEndNode());
   e2->decrRef(); e1->decrRef();
   v1.clear(); v2.clear(); v3.clear();
-  //Test 2 - INSIDE - OUT_AFTER | same dir. - 90°
+  //Test 2 - INSIDE - OUT_AFTER | same dir. - 90deg
   e1=new EdgeLin(0.,0.,0.,1.); e2=new EdgeLin(0.,0.5,0.,1.5);
   CPPUNIT_ASSERT(e1->intersectWith(e2,v3,v1,v2));
   CPPUNIT_ASSERT_EQUAL(0,(int)v3.getNumberOfAssociations());
@@ -269,7 +270,7 @@ void QuadraticPlanarInterpTest::IntersectionEdgeOverlapUnitarySegSeg()
   CPPUNIT_ASSERT(e2->getStartNode()==v2.front()->getStartNode() && e2->getEndNode()==v2.back()->getEndNode());
   e2->decrRef(); e1->decrRef();
   v1.clear(); v2.clear(); v3.clear();
-  //Test 2 - INSIDE - OUT_AFTER | same dir. - 45°
+  //Test 2 - INSIDE - OUT_AFTER | same dir. - 45deg
   e1=new EdgeLin(0.,0.,1.,1.); e2=new EdgeLin(0.5,0.5,1.5,1.5);
   CPPUNIT_ASSERT(e1->intersectWith(e2,v3,v1,v2));
   CPPUNIT_ASSERT_EQUAL(0,(int)v3.getNumberOfAssociations());
@@ -280,7 +281,7 @@ void QuadraticPlanarInterpTest::IntersectionEdgeOverlapUnitarySegSeg()
   CPPUNIT_ASSERT(v2[0]->getEndNode()==v2[1]->getStartNode()); CPPUNIT_ASSERT(e2->getStartNode()==v2[0]->getStartNode()); CPPUNIT_ASSERT(e2->getEndNode()==v2[1]->getEndNode());
   e2->decrRef(); e1->decrRef();
   v1.clear(); v2.clear(); v3.clear();
-  //Test 2 - INSIDE - OUT_AFTER | opp. dir. - 45°
+  //Test 2 - INSIDE - OUT_AFTER | opp. dir. - 45deg
   e1=new EdgeLin(0.,0.,1.,1.); e2=new EdgeLin(1.5,1.5,0.5,0.5);
   CPPUNIT_ASSERT(e1->intersectWith(e2,v3,v1,v2));
   CPPUNIT_ASSERT_EQUAL(0,(int)v3.getNumberOfAssociations());
@@ -293,7 +294,7 @@ void QuadraticPlanarInterpTest::IntersectionEdgeOverlapUnitarySegSeg()
   CPPUNIT_ASSERT(e2->getStartNode()==v2.front()->getStartNode() && e2->getEndNode()==v2.back()->getEndNode());
   e2->decrRef(); e1->decrRef();
   v1.clear(); v2.clear(); v3.clear();
-  //Test 3 - INSIDE - INSIDE | same dir. - 0°
+  //Test 3 - INSIDE - INSIDE | same dir. - 0deg
   e1=new EdgeLin(0.,0.,1.,0.); e2=new EdgeLin(0.25,0.,0.75,0.);
   CPPUNIT_ASSERT(e1->intersectWith(e2,v3,v1,v2));
   CPPUNIT_ASSERT_EQUAL(0,(int)v3.getNumberOfAssociations());
@@ -307,7 +308,7 @@ void QuadraticPlanarInterpTest::IntersectionEdgeOverlapUnitarySegSeg()
   CPPUNIT_ASSERT(e2->getStartNode()==v2.front()->getStartNode() && e2->getEndNode()==v2.back()->getEndNode());
   e2->decrRef(); e1->decrRef();
   v1.clear(); v2.clear(); v3.clear();
-  //Test 3 - INSIDE - INSIDE | same dir. - 90°
+  //Test 3 - INSIDE - INSIDE | same dir. - 90deg
   e1=new EdgeLin(0.,0.,0.,1.); e2=new EdgeLin(0.,0.25,0.,0.75);
   CPPUNIT_ASSERT(e1->intersectWith(e2,v3,v1,v2));
   CPPUNIT_ASSERT_EQUAL(0,(int)v3.getNumberOfAssociations());
@@ -321,7 +322,7 @@ void QuadraticPlanarInterpTest::IntersectionEdgeOverlapUnitarySegSeg()
   CPPUNIT_ASSERT(e2->getStartNode()==v2.front()->getStartNode() && e2->getEndNode()==v2.back()->getEndNode());
   e2->decrRef(); e1->decrRef();
   v1.clear(); v2.clear(); v3.clear();
-  //Test 3 - INSIDE - INSIDE | same dir. - 45°
+  //Test 3 - INSIDE - INSIDE | same dir. - 45deg
   e1=new EdgeLin(0.,0.,1.,1.); e2=new EdgeLin(0.25,0.25,0.75,0.75);
   CPPUNIT_ASSERT(e1->intersectWith(e2,v3,v1,v2));
   CPPUNIT_ASSERT_EQUAL(0,(int)v3.getNumberOfAssociations());
@@ -335,7 +336,7 @@ void QuadraticPlanarInterpTest::IntersectionEdgeOverlapUnitarySegSeg()
   CPPUNIT_ASSERT(e2->getStartNode()==v2.front()->getStartNode() && e2->getEndNode()==v2.back()->getEndNode());
   e2->decrRef(); e1->decrRef();
   v1.clear(); v2.clear(); v3.clear();
-  //Test 3 - INSIDE - INSIDE | opp dir. - 45°
+  //Test 3 - INSIDE - INSIDE | opp dir. - 45deg
   e1=new EdgeLin(0.,0.,1.,1.); e2=new EdgeLin(0.75,0.75,0.25,0.25);
   CPPUNIT_ASSERT(e1->intersectWith(e2,v3,v1,v2));
   CPPUNIT_ASSERT_EQUAL(0,(int)v3.getNumberOfAssociations());
@@ -427,7 +428,7 @@ void QuadraticPlanarInterpTest::IntersectionEdgeOverlapUnitarySegSeg()
   CPPUNIT_ASSERT(v1[1]->getEndNode()==e2->getStartNode());
   e2->decrRef(); e1->decrRef();
   v1.clear(); v2.clear(); v3.clear();
-  //Test 4 - OUT_BEFORE - OUT_BEFORE | same dir. - 0 Â°
+  //Test 4 - OUT_BEFORE - OUT_BEFORE | same dir. - 0 deg
   e1=new EdgeLin(0.,0.,1.,0.); e2=new EdgeLin(-1.,0.,-0.5,0.);
   CPPUNIT_ASSERT(!e1->intersectWith(e2,v3,v1,v2));
   CPPUNIT_ASSERT_EQUAL(0,(int)v3.getNumberOfAssociations());
@@ -435,7 +436,7 @@ void QuadraticPlanarInterpTest::IntersectionEdgeOverlapUnitarySegSeg()
   CPPUNIT_ASSERT_EQUAL(0,(int)v2.size());
   e2->decrRef(); e1->decrRef();
   v1.clear(); v2.clear(); v3.clear();
-  //Test 5 - OUT_BEFORE - INSIDE | same dir. - 0°
+  //Test 5 - OUT_BEFORE - INSIDE | same dir. - 0deg
   e1=new EdgeLin(0.,0.,1.,0.); e2=new EdgeLin(-0.5,0.,0.5,0.);
   CPPUNIT_ASSERT(e1->intersectWith(e2,v3,v1,v2));
   CPPUNIT_ASSERT_EQUAL(0,(int)v3.getNumberOfAssociations());
@@ -447,7 +448,7 @@ void QuadraticPlanarInterpTest::IntersectionEdgeOverlapUnitarySegSeg()
   CPPUNIT_ASSERT(e2->getStartNode()==v2.front()->getStartNode() && e2->getEndNode()==v2.back()->getEndNode());
   e2->decrRef(); e1->decrRef();
   v1.clear(); v2.clear(); v3.clear();
-  //Test 5 - OUT_BEFORE - INSIDE | same dir. - 90°
+  //Test 5 - OUT_BEFORE - INSIDE | same dir. - 90deg
   e1=new EdgeLin(0.,0.,0.,1.); e2=new EdgeLin(0,-0.5,0.,0.5);
   CPPUNIT_ASSERT(e1->intersectWith(e2,v3,v1,v2));
   CPPUNIT_ASSERT_EQUAL(0,(int)v3.getNumberOfAssociations());
@@ -459,7 +460,7 @@ void QuadraticPlanarInterpTest::IntersectionEdgeOverlapUnitarySegSeg()
   CPPUNIT_ASSERT(e2->getStartNode()==v2.front()->getStartNode() && e2->getEndNode()==v2.back()->getEndNode());
   e2->decrRef(); e1->decrRef();
   v1.clear(); v2.clear(); v3.clear();
-  //Test 5 - OUT_BEFORE - INSIDE | same dir. - 45°
+  //Test 5 - OUT_BEFORE - INSIDE | same dir. - 45deg
   e1=new EdgeLin(0.,0.,1.,1.); e2=new EdgeLin(-0.5,-0.5,0.5,0.5);
   CPPUNIT_ASSERT(e1->intersectWith(e2,v3,v1,v2));
   CPPUNIT_ASSERT_EQUAL(0,(int)v3.getNumberOfAssociations());
@@ -471,7 +472,7 @@ void QuadraticPlanarInterpTest::IntersectionEdgeOverlapUnitarySegSeg()
   CPPUNIT_ASSERT(e2->getStartNode()==v2.front()->getStartNode() && e2->getEndNode()==v2.back()->getEndNode());
   e2->decrRef(); e1->decrRef();
   v1.clear(); v2.clear(); v3.clear();
-  //Test 5 - OUT_BEFORE - INSIDE | opp dir. - 45°
+  //Test 5 - OUT_BEFORE - INSIDE | opp dir. - 45deg
   e1=new EdgeLin(0.,0.,1.,1.); e2=new EdgeLin(0.5,0.5,-0.5,-0.5);
   CPPUNIT_ASSERT(e1->intersectWith(e2,v3,v1,v2));
   CPPUNIT_ASSERT_EQUAL(0,(int)v3.getNumberOfAssociations());
@@ -483,7 +484,7 @@ void QuadraticPlanarInterpTest::IntersectionEdgeOverlapUnitarySegSeg()
   CPPUNIT_ASSERT(e2->getStartNode()==v2.front()->getStartNode() && e2->getEndNode()==v2.back()->getEndNode());
   e2->decrRef(); e1->decrRef();
   v1.clear(); v2.clear(); v3.clear();
-  //Test 6 - OUT_BEFORE - OUT_AFTER | same dir. - 0°
+  //Test 6 - OUT_BEFORE - OUT_AFTER | same dir. - 0deg
   e1=new EdgeLin(0.,0.,1.,0.); e2=new EdgeLin(-0.5,0.,1.5,0.);
   CPPUNIT_ASSERT(e1->intersectWith(e2,v3,v1,v2));
   CPPUNIT_ASSERT_EQUAL(0,(int)v3.getNumberOfAssociations());
@@ -496,7 +497,7 @@ void QuadraticPlanarInterpTest::IntersectionEdgeOverlapUnitarySegSeg()
   CPPUNIT_ASSERT(e2->getStartNode()==v2.front()->getStartNode() && e2->getEndNode()==v2.back()->getEndNode());
   e2->decrRef(); e1->decrRef();
   v1.clear(); v2.clear(); v3.clear();
-  //Test 6 - OUT_BEFORE - OUT_AFTER | same dir. - 90°
+  //Test 6 - OUT_BEFORE - OUT_AFTER | same dir. - 90deg
   e1=new EdgeLin(0.,0.,0.,1.); e2=new EdgeLin(0.,-0.5,0.,1.5);
   CPPUNIT_ASSERT(e1->intersectWith(e2,v3,v1,v2));
   CPPUNIT_ASSERT_EQUAL(0,(int)v3.getNumberOfAssociations());
@@ -509,7 +510,7 @@ void QuadraticPlanarInterpTest::IntersectionEdgeOverlapUnitarySegSeg()
   CPPUNIT_ASSERT(e2->getStartNode()==v2.front()->getStartNode() && e2->getEndNode()==v2.back()->getEndNode());
   e2->decrRef(); e1->decrRef();
   v1.clear(); v2.clear(); v3.clear();
-  //Test 6 - OUT_BEFORE - OUT_AFTER | same dir. - 45°
+  //Test 6 - OUT_BEFORE - OUT_AFTER | same dir. - 45deg
   e1=new EdgeLin(0.,0.,1.,1.); e2=new EdgeLin(-0.5,-0.5,1.5,1.5);
   CPPUNIT_ASSERT(e1->intersectWith(e2,v3,v1,v2));
   CPPUNIT_ASSERT_EQUAL(0,(int)v3.getNumberOfAssociations());
@@ -522,7 +523,7 @@ void QuadraticPlanarInterpTest::IntersectionEdgeOverlapUnitarySegSeg()
   CPPUNIT_ASSERT(e2->getStartNode()==v2.front()->getStartNode() && e2->getEndNode()==v2.back()->getEndNode());
   e2->decrRef(); e1->decrRef();
   v1.clear(); v2.clear(); v3.clear();
-  //Test 6 - OUT_BEFORE - OUT_AFTER | opp dir. - 45°
+  //Test 6 - OUT_BEFORE - OUT_AFTER | opp dir. - 45deg
   e1=new EdgeLin(0.,0.,1.,1.); e2=new EdgeLin(1.5,1.5,-0.5,-0.5);
   CPPUNIT_ASSERT(e1->intersectWith(e2,v3,v1,v2));
   CPPUNIT_ASSERT_EQUAL(0,(int)v3.getNumberOfAssociations());
@@ -535,7 +536,7 @@ void QuadraticPlanarInterpTest::IntersectionEdgeOverlapUnitarySegSeg()
   CPPUNIT_ASSERT(e2->getStartNode()==v2.front()->getStartNode() && e2->getEndNode()==v2.back()->getEndNode());
   e2->decrRef(); e1->decrRef();
   v1.clear(); v2.clear(); v3.clear();
-  //Test 7 - END - OUT_AFTER | same dir. - 0°
+  //Test 7 - END - OUT_AFTER | same dir. - 0deg
   e1=new EdgeLin(0.,0.,1.,0.); e2=new EdgeLin(1.,0.,1.5,0.);
   CPPUNIT_ASSERT(!e1->intersectWith(e2,v3,v1,v2));
   CPPUNIT_ASSERT_EQUAL(1,(int)v3.getNumberOfAssociations());
@@ -543,7 +544,7 @@ void QuadraticPlanarInterpTest::IntersectionEdgeOverlapUnitarySegSeg()
   CPPUNIT_ASSERT_EQUAL(0,(int)v2.size());
   e2->decrRef(); e1->decrRef();
   v1.clear(); v2.clear(); v3.clear();
-  //Test 7 - END - OUT_AFTER | opp dir. - 0°
+  //Test 7 - END - OUT_AFTER | opp dir. - 0deg
   e1=new EdgeLin(0.,0.,1.,0.); e2=new EdgeLin(1.5,0.,1.,0.);
   CPPUNIT_ASSERT(!e1->intersectWith(e2,v3,v1,v2));
   CPPUNIT_ASSERT_EQUAL(1,(int)v3.getNumberOfAssociations());
@@ -552,7 +553,7 @@ void QuadraticPlanarInterpTest::IntersectionEdgeOverlapUnitarySegSeg()
   CPPUNIT_ASSERT(e1->getEndNode()==e2->getEndNode());
   e2->decrRef(); e1->decrRef();
   v1.clear(); v2.clear(); v3.clear();
-  //Test 8 - START - END | same dir. - 0°
+  //Test 8 - START - END | same dir. - 0deg
   e1=new EdgeLin(0.,0.,0.7,0.); e2=new EdgeLin(0.,0.,0.7,0.);
   CPPUNIT_ASSERT(e1->intersectWith(e2,v3,v1,v2));
   CPPUNIT_ASSERT_EQUAL(2,(int)v3.getNumberOfAssociations());
@@ -564,7 +565,7 @@ void QuadraticPlanarInterpTest::IntersectionEdgeOverlapUnitarySegSeg()
   CPPUNIT_ASSERT(e2->getStartNode()==v2.front()->getStartNode() && e2->getEndNode()==v2.back()->getEndNode());
   e2->decrRef(); e1->decrRef();
   v1.clear(); v2.clear(); v3.clear();
-  //Test 8 - START - END | same dir. - 90°
+  //Test 8 - START - END | same dir. - 90deg
   e1=new EdgeLin(0.,0.,0.,0.7); e2=new EdgeLin(0.,0.,0.,0.7);
   CPPUNIT_ASSERT(e1->intersectWith(e2,v3,v1,v2));
   CPPUNIT_ASSERT_EQUAL(2,(int)v3.getNumberOfAssociations());
@@ -576,7 +577,7 @@ void QuadraticPlanarInterpTest::IntersectionEdgeOverlapUnitarySegSeg()
   CPPUNIT_ASSERT(e2->getStartNode()==v2.front()->getStartNode() && e2->getEndNode()==v2.back()->getEndNode());
   e2->decrRef(); e1->decrRef();
   v1.clear(); v2.clear(); v3.clear();
-  //Test 8 - START - END | same dir. - 45°
+  //Test 8 - START - END | same dir. - 45deg
   e1=new EdgeLin(0.,0.,0.7,0.7); e2=new EdgeLin(0.,0.,0.7,0.7);
   CPPUNIT_ASSERT(e1->intersectWith(e2,v3,v1,v2));
   CPPUNIT_ASSERT_EQUAL(2,(int)v3.getNumberOfAssociations());
@@ -588,7 +589,7 @@ void QuadraticPlanarInterpTest::IntersectionEdgeOverlapUnitarySegSeg()
   CPPUNIT_ASSERT(e2->getStartNode()==v2.front()->getStartNode() && e2->getEndNode()==v2.back()->getEndNode());
   e2->decrRef(); e1->decrRef();
   v1.clear(); v2.clear(); v3.clear();
-  //Test 8 - START - END | opp. dir. - 45°
+  //Test 8 - START - END | opp. dir. - 45deg
   e1=new EdgeLin(0.,0.,0.7,0.7); e2=new EdgeLin(0.7,0.7,0.,0.);
   CPPUNIT_ASSERT(e1->intersectWith(e2,v3,v1,v2));
   CPPUNIT_ASSERT_EQUAL(2,(int)v3.getNumberOfAssociations());
@@ -609,7 +610,7 @@ void QuadraticPlanarInterpTest::IntersectionEdgeOverlapUnitarySegSeg()
   CPPUNIT_ASSERT(e2->getEndNode()==e1->getStartNode());
   e2->decrRef(); e1->decrRef();
   v1.clear(); v2.clear(); v3.clear();
-  //Test 10 - START - OUT_AFTER | same dir. - 0°
+  //Test 10 - START - OUT_AFTER | same dir. - 0deg
   e1=new EdgeLin(0.,0.,0.7,0.); e2=new EdgeLin(0.,0.,1.,0.);
   CPPUNIT_ASSERT(e1->intersectWith(e2,v3,v1,v2));
   CPPUNIT_ASSERT_EQUAL(1,(int)v3.getNumberOfAssociations());
@@ -622,7 +623,7 @@ void QuadraticPlanarInterpTest::IntersectionEdgeOverlapUnitarySegSeg()
   CPPUNIT_ASSERT(e2->getStartNode()==v2.front()->getStartNode() && e2->getEndNode()==v2.back()->getEndNode());
   e2->decrRef(); e1->decrRef();
   v1.clear(); v2.clear(); v3.clear();
-  //Test 10 - START - OUT_AFTER | same dir. - 90°
+  //Test 10 - START - OUT_AFTER | same dir. - 90deg
   e1=new EdgeLin(0.,0.,0.,0.7); e2=new EdgeLin(0.,0.,0.,1.);
   CPPUNIT_ASSERT(e1->intersectWith(e2,v3,v1,v2));
   CPPUNIT_ASSERT_EQUAL(1,(int)v3.getNumberOfAssociations());
@@ -635,7 +636,7 @@ void QuadraticPlanarInterpTest::IntersectionEdgeOverlapUnitarySegSeg()
   CPPUNIT_ASSERT(e2->getStartNode()==v2.front()->getStartNode() && e2->getEndNode()==v2.back()->getEndNode());
   e2->decrRef(); e1->decrRef();
   v1.clear(); v2.clear(); v3.clear();
-  //Test 10 - START - OUT_AFTER | same dir. - 45°
+  //Test 10 - START - OUT_AFTER | same dir. - 45deg
   e1=new EdgeLin(0.,0.,0.7,0.7); e2=new EdgeLin(0.,0.,1.,1.);
   CPPUNIT_ASSERT(e1->intersectWith(e2,v3,v1,v2));
   CPPUNIT_ASSERT_EQUAL(1,(int)v3.getNumberOfAssociations());
@@ -648,7 +649,7 @@ void QuadraticPlanarInterpTest::IntersectionEdgeOverlapUnitarySegSeg()
   CPPUNIT_ASSERT(e2->getStartNode()==v2.front()->getStartNode() && e2->getEndNode()==v2.back()->getEndNode());
   e2->decrRef(); e1->decrRef();
   v1.clear(); v2.clear(); v3.clear();
-  //Test 10 - START - OUT_AFTER | opp dir. - 45°
+  //Test 10 - START - OUT_AFTER | opp dir. - 45deg
   e1=new EdgeLin(0.,0.,0.7,0.7); e2=new EdgeLin(1.,1.,0.,0.);
   CPPUNIT_ASSERT(e1->intersectWith(e2,v3,v1,v2));
   CPPUNIT_ASSERT_EQUAL(1,(int)v3.getNumberOfAssociations());
@@ -661,7 +662,7 @@ void QuadraticPlanarInterpTest::IntersectionEdgeOverlapUnitarySegSeg()
   CPPUNIT_ASSERT(e2->getStartNode()==v2.front()->getStartNode() && e2->getEndNode()==v2.back()->getEndNode());
   e2->decrRef(); e1->decrRef();
   v1.clear(); v2.clear(); v3.clear();
-  //Test 11 - INSIDE - END | same dir. - 0°
+  //Test 11 - INSIDE - END | same dir. - 0deg
   e1=new EdgeLin(0.,0.,1.,0.); e2=new EdgeLin(0.7,0.,1.,0.);
   CPPUNIT_ASSERT(e1->intersectWith(e2,v3,v1,v2));
   CPPUNIT_ASSERT_EQUAL(1,(int)v3.getNumberOfAssociations());
@@ -674,7 +675,7 @@ void QuadraticPlanarInterpTest::IntersectionEdgeOverlapUnitarySegSeg()
   CPPUNIT_ASSERT(e2->getStartNode()==v2.front()->getStartNode() && e2->getEndNode()==v2.back()->getEndNode());
   e2->decrRef(); e1->decrRef();
   v1.clear(); v2.clear(); v3.clear();
-  //Test 11 - INSIDE - END | same dir. - 90°
+  //Test 11 - INSIDE - END | same dir. - 90deg
   e1=new EdgeLin(0.,0.,0.,1.); e2=new EdgeLin(0.,0.7,0.,1.);
   CPPUNIT_ASSERT(e1->intersectWith(e2,v3,v1,v2));
   CPPUNIT_ASSERT_EQUAL(1,(int)v3.getNumberOfAssociations());
@@ -687,7 +688,7 @@ void QuadraticPlanarInterpTest::IntersectionEdgeOverlapUnitarySegSeg()
   CPPUNIT_ASSERT(e2->getStartNode()==v2.front()->getStartNode() && e2->getEndNode()==v2.back()->getEndNode());
   e2->decrRef(); e1->decrRef();
   v1.clear(); v2.clear(); v3.clear();
-  //Test 11 - INSIDE - END | same dir. - 45°
+  //Test 11 - INSIDE - END | same dir. - 45deg
   e1=new EdgeLin(0.,0.,1.,1.); e2=new EdgeLin(0.7,0.7,1.,1.);
   CPPUNIT_ASSERT(e1->intersectWith(e2,v3,v1,v2));
   CPPUNIT_ASSERT_EQUAL(1,(int)v3.getNumberOfAssociations());
@@ -700,7 +701,7 @@ void QuadraticPlanarInterpTest::IntersectionEdgeOverlapUnitarySegSeg()
   CPPUNIT_ASSERT(e2->getStartNode()==v2.front()->getStartNode() && e2->getEndNode()==v2.back()->getEndNode());
   e2->decrRef(); e1->decrRef();
   v1.clear(); v2.clear(); v3.clear();
-  //Test 11 - INSIDE - END | opp dir. - 45°
+  //Test 11 - INSIDE - END | opp dir. - 45deg
   e1=new EdgeLin(0.,0.,1.,1.); e2=new EdgeLin(1.,1.,0.7,0.7);
   CPPUNIT_ASSERT(e1->intersectWith(e2,v3,v1,v2));
   CPPUNIT_ASSERT_EQUAL(1,(int)v3.getNumberOfAssociations());
@@ -713,7 +714,7 @@ void QuadraticPlanarInterpTest::IntersectionEdgeOverlapUnitarySegSeg()
   CPPUNIT_ASSERT(e2->getStartNode()==v2.front()->getStartNode() && e2->getEndNode()==v2.back()->getEndNode());
   e2->decrRef(); e1->decrRef();
   v1.clear(); v2.clear(); v3.clear();
-  //Test 12 - OUT_BEFORE - END | same dir. - 0°
+  //Test 12 - OUT_BEFORE - END | same dir. - 0deg
   e1=new EdgeLin(0.,0.,1.,0.); e2=new EdgeLin(-0.5,0.,1.,0.);
   CPPUNIT_ASSERT(e1->intersectWith(e2,v3,v1,v2));
   CPPUNIT_ASSERT_EQUAL(1,(int)v3.getNumberOfAssociations());
@@ -726,7 +727,7 @@ void QuadraticPlanarInterpTest::IntersectionEdgeOverlapUnitarySegSeg()
   CPPUNIT_ASSERT(e2->getStartNode()==v2.front()->getStartNode() && e2->getEndNode()==v2.back()->getEndNode());
   e2->decrRef(); e1->decrRef();
   v1.clear(); v2.clear(); v3.clear();
-  //Test 12 - OUT_BEFORE - END | same dir. - 90°
+  //Test 12 - OUT_BEFORE - END | same dir. - 90deg
   e1=new EdgeLin(0.,0.,0.,1.); e2=new EdgeLin(0.,-0.5,0.,1.);
   CPPUNIT_ASSERT(e1->intersectWith(e2,v3,v1,v2));
   CPPUNIT_ASSERT_EQUAL(1,(int)v3.getNumberOfAssociations());
@@ -739,7 +740,7 @@ void QuadraticPlanarInterpTest::IntersectionEdgeOverlapUnitarySegSeg()
   CPPUNIT_ASSERT(e2->getStartNode()==v2.front()->getStartNode() && e2->getEndNode()==v2.back()->getEndNode());
   e2->decrRef(); e1->decrRef();
   v1.clear(); v2.clear(); v3.clear();
-  //Test 12 - OUT_BEFORE - END | same dir. - 45°
+  //Test 12 - OUT_BEFORE - END | same dir. - 45deg
   e1=new EdgeLin(0.,0.,1.,1.); e2=new EdgeLin(-0.5,-0.5,1.,1.);
   CPPUNIT_ASSERT(e1->intersectWith(e2,v3,v1,v2));
   CPPUNIT_ASSERT_EQUAL(1,(int)v3.getNumberOfAssociations());
@@ -752,7 +753,7 @@ void QuadraticPlanarInterpTest::IntersectionEdgeOverlapUnitarySegSeg()
   CPPUNIT_ASSERT(e2->getStartNode()==v2.front()->getStartNode() && e2->getEndNode()==v2.back()->getEndNode());
   e2->decrRef(); e1->decrRef();
   v1.clear(); v2.clear(); v3.clear();
-  //Test 12 - OUT_BEFORE - END | opp dir. - 45°
+  //Test 12 - OUT_BEFORE - END | opp dir. - 45deg
   e1=new EdgeLin(0.,0.,1.,1.); e2=new EdgeLin(1.,1.,-0.5,-0.5);
   CPPUNIT_ASSERT(e1->intersectWith(e2,v3,v1,v2));
   CPPUNIT_ASSERT_EQUAL(1,(int)v3.getNumberOfAssociations());
@@ -765,7 +766,7 @@ void QuadraticPlanarInterpTest::IntersectionEdgeOverlapUnitarySegSeg()
   CPPUNIT_ASSERT(e2->getStartNode()==v2.front()->getStartNode() && e2->getEndNode()==v2.back()->getEndNode());
   e2->decrRef(); e1->decrRef();
   v1.clear(); v2.clear(); v3.clear();
-  //Test 13 - START - INSIDE | same dir. - 0°
+  //Test 13 - START - INSIDE | same dir. - 0deg
   e1=new EdgeLin(0.,0.,1.,0.); e2=new EdgeLin(0.,0.,0.5,0.);
   CPPUNIT_ASSERT(e1->intersectWith(e2,v3,v1,v2));
   CPPUNIT_ASSERT_EQUAL(1,(int)v3.getNumberOfAssociations());
@@ -778,7 +779,7 @@ void QuadraticPlanarInterpTest::IntersectionEdgeOverlapUnitarySegSeg()
   CPPUNIT_ASSERT(e2->getStartNode()==v2.front()->getStartNode() && e2->getEndNode()==v2.back()->getEndNode());
   e2->decrRef(); e1->decrRef();
   v1.clear(); v2.clear(); v3.clear();
-  //Test 13 - START - INSIDE | same dir. - 90°
+  //Test 13 - START - INSIDE | same dir. - 90deg
   e1=new EdgeLin(0.,0.,0.,1.); e2=new EdgeLin(0.,0.,0.,0.5);
   CPPUNIT_ASSERT(e1->intersectWith(e2,v3,v1,v2));
   CPPUNIT_ASSERT_EQUAL(1,(int)v3.getNumberOfAssociations());
@@ -791,7 +792,7 @@ void QuadraticPlanarInterpTest::IntersectionEdgeOverlapUnitarySegSeg()
   CPPUNIT_ASSERT(e2->getStartNode()==v2.front()->getStartNode() && e2->getEndNode()==v2.back()->getEndNode());
   e2->decrRef(); e1->decrRef();
   v1.clear(); v2.clear(); v3.clear();
-  //Test 13 - START - INSIDE | same dir. - 45°
+  //Test 13 - START - INSIDE | same dir. - 45deg
   e1=new EdgeLin(0.,0.,1.,1.); e2=new EdgeLin(0.,0.,0.5,0.5);
   CPPUNIT_ASSERT(e1->intersectWith(e2,v3,v1,v2));
   CPPUNIT_ASSERT_EQUAL(1,(int)v3.getNumberOfAssociations());
@@ -804,7 +805,7 @@ void QuadraticPlanarInterpTest::IntersectionEdgeOverlapUnitarySegSeg()
   CPPUNIT_ASSERT(e2->getStartNode()==v2.front()->getStartNode() && e2->getEndNode()==v2.back()->getEndNode());
   e2->decrRef(); e1->decrRef();
   v1.clear(); v2.clear(); v3.clear();
-  //Test 13 - START - INSIDE | opp dir. - 45°
+  //Test 13 - START - INSIDE | opp dir. - 45deg
   e1=new EdgeLin(0.,0.,1.,1.); e2=new EdgeLin(0.5,0.5,0.,0.);
   CPPUNIT_ASSERT(e1->intersectWith(e2,v3,v1,v2));
   CPPUNIT_ASSERT_EQUAL(1,(int)v3.getNumberOfAssociations());
@@ -896,7 +897,7 @@ void QuadraticPlanarInterpTest::IntersectionEdgeOverlapUnitarySegSeg()
  */
 void QuadraticPlanarInterpTest::IntersectionPointOnlyUnitarySegSeg()
 {
-  // 0° - classical
+  // 0deg - classical
   EdgeLin *e1=new EdgeLin(0.,0.,1.,0.);
   EdgeLin *e2=new EdgeLin(0.3,0.3,0.5,-0.3);
   ComposedEdge& v1=*(new ComposedEdge);
@@ -912,7 +913,7 @@ void QuadraticPlanarInterpTest::IntersectionPointOnlyUnitarySegSeg()
   CPPUNIT_ASSERT_DOUBLES_EQUAL(0.,(*v1[0]->getEndNode())[1],ADMISSIBLE_ERROR);
   e2->decrRef(); e1->decrRef();
   v1.clear(); v2.clear(); v3.clear();
-  // 90° - classical
+  // 90deg - classical
   e1=new EdgeLin(0.,0.,0.,1.);
   e2=new EdgeLin(-0.3,0.3,0.3,0.5);
   CPPUNIT_ASSERT(e1->intersectWith(e2,v3,v1,v2));
@@ -926,21 +927,21 @@ void QuadraticPlanarInterpTest::IntersectionPointOnlyUnitarySegSeg()
   CPPUNIT_ASSERT_DOUBLES_EQUAL(0.4,(*v1[0]->getEndNode())[1],ADMISSIBLE_ERROR);
   e2->decrRef(); e1->decrRef();
   v1.clear(); v2.clear(); v3.clear();
-  //Test 1 - 0°
+  //Test 1 - 0deg
   e1=new EdgeLin(0.,0.,1.,0.); e2=new EdgeLin(0.,0.,0.,1.);
   CPPUNIT_ASSERT(!e1->intersectWith(e2,v3,v1,v2));
   CPPUNIT_ASSERT_EQUAL(1,(int)v3.getNumberOfAssociations());
   CPPUNIT_ASSERT(v3.isStart1(0)); CPPUNIT_ASSERT(v3.isStart2(0));
   e2->decrRef(); e1->decrRef();
   v1.clear(); v2.clear(); v3.clear();
-  //Test 1 - 90°
+  //Test 1 - 90deg
   e1=new EdgeLin(0.,0.,0.,1.); e2=new EdgeLin(0.,0.,1.,0.);
   CPPUNIT_ASSERT(!e1->intersectWith(e2,v3,v1,v2));
   CPPUNIT_ASSERT_EQUAL(1,(int)v3.getNumberOfAssociations());
   CPPUNIT_ASSERT(v3.isStart1(0)); CPPUNIT_ASSERT(v3.isStart2(0));
   e2->decrRef(); e1->decrRef();
   v1.clear(); v2.clear(); v3.clear();
-  //Test 1 - 45°
+  //Test 1 - 45deg
   e1=new EdgeLin(0.,0.,1.,1.); e2=new EdgeLin(0.,0.,1.,-1.);
   CPPUNIT_ASSERT(!e1->intersectWith(e2,v3,v1,v2));
   CPPUNIT_ASSERT_EQUAL(1,(int)v3.getNumberOfAssociations());
index 87b0ba653e27a42b3c817bf8b3c4bb6a76a0b56d..06f648ddb9482b54cac7a99f6823bf569bb6d9b7 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 320130acb7c142b40a70620ae219207a6b7ce4e6..0a169fb60653e4b790b9fd77f7f2886df98fd52e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -158,9 +158,9 @@ void QuadraticPlanarInterpTest::IntersectArcCircleBase()
       intersector=new ArcCArcCIntersector(*e1,*e2);
       bool order;
       bool obvious,areOverlapped;
-      intersector->areOverlappedOrOnlyColinears(0,obvious,areOverlapped);
+      intersector->areOverlappedOrOnlyColinears(obvious,areOverlapped);
       CPPUNIT_ASSERT(!obvious && !areOverlapped);
-      CPPUNIT_ASSERT(intersector->intersect(0,v4,order,v3)); CPPUNIT_ASSERT(!order);
+      CPPUNIT_ASSERT(intersector->intersect(v4,order,v3)); CPPUNIT_ASSERT(!order);
       CPPUNIT_ASSERT_EQUAL(2,(int)v4.size()); CPPUNIT_ASSERT_EQUAL(0,(int)v3.getNumberOfAssociations());
       CPPUNIT_ASSERT_DOUBLES_EQUAL(e1->getRadius(),Node::distanceBtw2Pt(e1->getCenter(),(*(v4[0]))),ADMISSIBLE_ERROR);
       CPPUNIT_ASSERT_DOUBLES_EQUAL(e2->getRadius(),Node::distanceBtw2Pt(e2->getCenter(),(*(v4[0]))),ADMISSIBLE_ERROR);
@@ -183,9 +183,9 @@ void QuadraticPlanarInterpTest::IntersectArcCircleBase()
       intersector=new ArcCArcCIntersector(*e1,*e2);
       bool order;
       bool obvious,areOverlapped;
-      intersector->areOverlappedOrOnlyColinears(0,obvious,areOverlapped);
+      intersector->areOverlappedOrOnlyColinears(obvious,areOverlapped);
       CPPUNIT_ASSERT(!obvious && !areOverlapped);
-      CPPUNIT_ASSERT(intersector->intersect(0,v4,order,v3)); CPPUNIT_ASSERT(order);
+      CPPUNIT_ASSERT(intersector->intersect(v4,order,v3)); CPPUNIT_ASSERT(order);
       CPPUNIT_ASSERT_EQUAL(2,(int)v4.size()); CPPUNIT_ASSERT_EQUAL(0,(int)v3.getNumberOfAssociations());
       CPPUNIT_ASSERT_DOUBLES_EQUAL(e1->getRadius(),Node::distanceBtw2Pt(e1->getCenter(),(*(v4[0]))),ADMISSIBLE_ERROR);
       CPPUNIT_ASSERT_DOUBLES_EQUAL(e2->getRadius(),Node::distanceBtw2Pt(e2->getCenter(),(*(v4[0]))),ADMISSIBLE_ERROR);
@@ -208,9 +208,9 @@ void QuadraticPlanarInterpTest::IntersectArcCircleBase()
       intersector=new ArcCArcCIntersector(*e1,*e2);
       bool order;
       bool obvious,areOverlapped;
-      intersector->areOverlappedOrOnlyColinears(0,obvious,areOverlapped);
+      intersector->areOverlappedOrOnlyColinears(obvious,areOverlapped);
       CPPUNIT_ASSERT(!obvious && !areOverlapped);
-      CPPUNIT_ASSERT(intersector->intersect(0,v4,order,v3)); CPPUNIT_ASSERT(order);
+      CPPUNIT_ASSERT(intersector->intersect(v4,order,v3)); CPPUNIT_ASSERT(order);
       CPPUNIT_ASSERT_EQUAL(2,(int)v4.size()); CPPUNIT_ASSERT_EQUAL(0,(int)v3.getNumberOfAssociations());
       CPPUNIT_ASSERT_DOUBLES_EQUAL(e1->getRadius(),Node::distanceBtw2Pt(e1->getCenter(),(*(v4[0]))),ADMISSIBLE_ERROR);
       CPPUNIT_ASSERT_DOUBLES_EQUAL(e2->getRadius(),Node::distanceBtw2Pt(e2->getCenter(),(*(v4[0]))),ADMISSIBLE_ERROR);
@@ -233,9 +233,9 @@ void QuadraticPlanarInterpTest::IntersectArcCircleBase()
       intersector=new ArcCArcCIntersector(*e1,*e2);
       bool order;
       bool obvious,areOverlapped;
-      intersector->areOverlappedOrOnlyColinears(0,obvious,areOverlapped);
+      intersector->areOverlappedOrOnlyColinears(obvious,areOverlapped);
       CPPUNIT_ASSERT(!obvious && !areOverlapped);
-      CPPUNIT_ASSERT(intersector->intersect(0,v4,order,v3)); CPPUNIT_ASSERT(!order);
+      CPPUNIT_ASSERT(intersector->intersect(v4,order,v3)); CPPUNIT_ASSERT(!order);
       CPPUNIT_ASSERT_EQUAL(2,(int)v4.size()); CPPUNIT_ASSERT_EQUAL(0,(int)v3.getNumberOfAssociations());
       CPPUNIT_ASSERT_DOUBLES_EQUAL(e1->getRadius(),Node::distanceBtw2Pt(e1->getCenter(),(*(v4[0]))),ADMISSIBLE_ERROR);
       CPPUNIT_ASSERT_DOUBLES_EQUAL(e2->getRadius(),Node::distanceBtw2Pt(e2->getCenter(),(*(v4[0]))),ADMISSIBLE_ERROR);
@@ -258,9 +258,9 @@ void QuadraticPlanarInterpTest::IntersectArcCircleBase()
       intersector=new ArcCArcCIntersector(*e1,*e2);
       bool order;
       bool obvious,areOverlapped;
-      intersector->areOverlappedOrOnlyColinears(0,obvious,areOverlapped);
+      intersector->areOverlappedOrOnlyColinears(obvious,areOverlapped);
       CPPUNIT_ASSERT(!obvious && !areOverlapped);
-      CPPUNIT_ASSERT(intersector->intersect(0,v4,order,v3)); CPPUNIT_ASSERT(!order);
+      CPPUNIT_ASSERT(intersector->intersect(v4,order,v3)); CPPUNIT_ASSERT(!order);
       CPPUNIT_ASSERT_EQUAL(2,(int)v4.size()); CPPUNIT_ASSERT_EQUAL(0,(int)v3.getNumberOfAssociations());
       CPPUNIT_ASSERT_DOUBLES_EQUAL(e1->getRadius(),Node::distanceBtw2Pt(e1->getCenter(),(*(v4[0]))),ADMISSIBLE_ERROR);
       CPPUNIT_ASSERT_DOUBLES_EQUAL(e2->getRadius(),Node::distanceBtw2Pt(e2->getCenter(),(*(v4[0]))),ADMISSIBLE_ERROR);
@@ -283,9 +283,9 @@ void QuadraticPlanarInterpTest::IntersectArcCircleBase()
       intersector=new ArcCArcCIntersector(*e1,*e2);
       bool order;
       bool obvious,areOverlapped;
-      intersector->areOverlappedOrOnlyColinears(0,obvious,areOverlapped);
+      intersector->areOverlappedOrOnlyColinears(obvious,areOverlapped);
       CPPUNIT_ASSERT(!obvious && !areOverlapped);
-      CPPUNIT_ASSERT(intersector->intersect(0,v4,order,v3)); CPPUNIT_ASSERT(order);
+      CPPUNIT_ASSERT(intersector->intersect(v4,order,v3)); CPPUNIT_ASSERT(order);
       CPPUNIT_ASSERT_EQUAL(2,(int)v4.size()); CPPUNIT_ASSERT_EQUAL(0,(int)v3.getNumberOfAssociations());
       CPPUNIT_ASSERT_DOUBLES_EQUAL(e1->getRadius(),Node::distanceBtw2Pt(e1->getCenter(),(*(v4[0]))),ADMISSIBLE_ERROR);
       CPPUNIT_ASSERT_DOUBLES_EQUAL(e2->getRadius(),Node::distanceBtw2Pt(e2->getCenter(),(*(v4[0]))),ADMISSIBLE_ERROR);
@@ -308,9 +308,9 @@ void QuadraticPlanarInterpTest::IntersectArcCircleBase()
       intersector=new ArcCArcCIntersector(*e1,*e2);
       bool order;
       bool obvious,areOverlapped;
-      intersector->areOverlappedOrOnlyColinears(0,obvious,areOverlapped);
+      intersector->areOverlappedOrOnlyColinears(obvious,areOverlapped);
       CPPUNIT_ASSERT(!obvious && !areOverlapped);
-      CPPUNIT_ASSERT(intersector->intersect(0,v4,order,v3)); CPPUNIT_ASSERT(order);
+      CPPUNIT_ASSERT(intersector->intersect(v4,order,v3)); CPPUNIT_ASSERT(order);
       CPPUNIT_ASSERT_EQUAL(2,(int)v4.size()); CPPUNIT_ASSERT_EQUAL(0,(int)v3.getNumberOfAssociations());
       CPPUNIT_ASSERT_DOUBLES_EQUAL(e1->getRadius(),Node::distanceBtw2Pt(e1->getCenter(),(*(v4[0]))),ADMISSIBLE_ERROR);
       CPPUNIT_ASSERT_DOUBLES_EQUAL(e2->getRadius(),Node::distanceBtw2Pt(e2->getCenter(),(*(v4[0]))),ADMISSIBLE_ERROR);
@@ -333,9 +333,9 @@ void QuadraticPlanarInterpTest::IntersectArcCircleBase()
       intersector=new ArcCArcCIntersector(*e1,*e2);
       bool order;
       bool obvious,areOverlapped;
-      intersector->areOverlappedOrOnlyColinears(0,obvious,areOverlapped);
+      intersector->areOverlappedOrOnlyColinears(obvious,areOverlapped);
       CPPUNIT_ASSERT(!obvious && !areOverlapped);
-      CPPUNIT_ASSERT(intersector->intersect(0,v4,order,v3)); CPPUNIT_ASSERT(!order);
+      CPPUNIT_ASSERT(intersector->intersect(v4,order,v3)); CPPUNIT_ASSERT(!order);
       CPPUNIT_ASSERT_EQUAL(2,(int)v4.size()); CPPUNIT_ASSERT_EQUAL(0,(int)v3.getNumberOfAssociations());
       CPPUNIT_ASSERT_DOUBLES_EQUAL(e1->getRadius(),Node::distanceBtw2Pt(e1->getCenter(),(*(v4[0]))),ADMISSIBLE_ERROR);
       CPPUNIT_ASSERT_DOUBLES_EQUAL(e2->getRadius(),Node::distanceBtw2Pt(e2->getCenter(),(*(v4[0]))),ADMISSIBLE_ERROR);
@@ -359,9 +359,9 @@ void QuadraticPlanarInterpTest::IntersectArcCircleBase()
       intersector=new ArcCArcCIntersector(*e1,*e2);
       bool order;
       bool obvious,areOverlapped;
-      intersector->areOverlappedOrOnlyColinears(0,obvious,areOverlapped);
+      intersector->areOverlappedOrOnlyColinears(obvious,areOverlapped);
       CPPUNIT_ASSERT(!obvious && !areOverlapped);
-      CPPUNIT_ASSERT(intersector->intersect(0,v4,order,v3)); CPPUNIT_ASSERT(order); // order has no sense here because v4.size() expected to 1 but for valgrind serenity test.
+      CPPUNIT_ASSERT(intersector->intersect(v4,order,v3)); CPPUNIT_ASSERT(order); // order has no sense here because v4.size() expected to 1 but for valgrind serenity test.
       CPPUNIT_ASSERT_EQUAL(1,(int)v4.size()); CPPUNIT_ASSERT_EQUAL(0,(int)v3.getNumberOfAssociations());
       CPPUNIT_ASSERT_DOUBLES_EQUAL(e1->getRadius(),Node::distanceBtw2Pt(e1->getCenter(),(*(v4[0]))),ADMISSIBLE_ERROR);
       CPPUNIT_ASSERT_DOUBLES_EQUAL(e2->getRadius(),Node::distanceBtw2Pt(e2->getCenter(),(*(v4[0]))),ADMISSIBLE_ERROR);
@@ -381,9 +381,9 @@ void QuadraticPlanarInterpTest::IntersectArcCircleBase()
       intersector=new ArcCArcCIntersector(*e1,*e2);
       bool order;
       bool obvious,areOverlapped;
-      intersector->areOverlappedOrOnlyColinears(0,obvious,areOverlapped);
+      intersector->areOverlappedOrOnlyColinears(obvious,areOverlapped);
       CPPUNIT_ASSERT(!obvious && !areOverlapped);
-      CPPUNIT_ASSERT(!intersector->intersect(0,v4,order,v3)); CPPUNIT_ASSERT_EQUAL(0,(int)v4.size()); CPPUNIT_ASSERT_EQUAL(2,(int)v3.getNumberOfAssociations());
+      CPPUNIT_ASSERT(!intersector->intersect(v4,order,v3)); CPPUNIT_ASSERT_EQUAL(0,(int)v4.size()); CPPUNIT_ASSERT_EQUAL(2,(int)v3.getNumberOfAssociations());
       CPPUNIT_ASSERT(e1->getStartNode()==e2->getEndNode()); CPPUNIT_ASSERT(e2->getStartNode()==e1->getEndNode());
       v4.clear(); v3.clear();
       delete intersector; e2->decrRef(); e1->decrRef();
@@ -397,9 +397,9 @@ void QuadraticPlanarInterpTest::IntersectArcCircleBase()
       intersector=new ArcCArcCIntersector(*e1,*e2);
       bool order;
       bool obvious,areOverlapped;
-      intersector->areOverlappedOrOnlyColinears(0,obvious,areOverlapped);
+      intersector->areOverlappedOrOnlyColinears(obvious,areOverlapped);
       CPPUNIT_ASSERT(!obvious && !areOverlapped);
-      CPPUNIT_ASSERT(!intersector->intersect(0,v4,order,v3)); CPPUNIT_ASSERT_EQUAL(0,(int)v4.size()); CPPUNIT_ASSERT_EQUAL(2,(int)v3.getNumberOfAssociations());
+      CPPUNIT_ASSERT(!intersector->intersect(v4,order,v3)); CPPUNIT_ASSERT_EQUAL(0,(int)v4.size()); CPPUNIT_ASSERT_EQUAL(2,(int)v3.getNumberOfAssociations());
       CPPUNIT_ASSERT(e1->getStartNode()==e2->getStartNode()); CPPUNIT_ASSERT(e2->getEndNode()==e1->getEndNode());
       v4.clear(); v3.clear();
       delete intersector; e2->decrRef(); e1->decrRef();
@@ -414,9 +414,9 @@ void QuadraticPlanarInterpTest::IntersectArcCircleBase()
       intersector=new ArcCArcCIntersector(*e1,*e2);
       bool order;
       bool obvious,areOverlapped;
-      intersector->areOverlappedOrOnlyColinears(0,obvious,areOverlapped);
+      intersector->areOverlappedOrOnlyColinears(obvious,areOverlapped);
       CPPUNIT_ASSERT(!obvious && !areOverlapped);
-      CPPUNIT_ASSERT(intersector->intersect(0,v4,order,v3));
+      CPPUNIT_ASSERT(intersector->intersect(v4,order,v3));
       CPPUNIT_ASSERT(order); CPPUNIT_ASSERT_EQUAL(1,(int)v4.size()); CPPUNIT_ASSERT_EQUAL(1,(int)v3.getNumberOfAssociations());
       CPPUNIT_ASSERT(e1->getStartNode()==e2->getStartNode()); CPPUNIT_ASSERT(e1->getEndNode()==v4[0]);
       v4[0]->decrRef();
@@ -433,9 +433,9 @@ void QuadraticPlanarInterpTest::IntersectArcCircleBase()
       intersector=new ArcCArcCIntersector(*e1,*e2);
       bool order;
       bool obvious,areOverlapped;
-      intersector->areOverlappedOrOnlyColinears(0,obvious,areOverlapped);
+      intersector->areOverlappedOrOnlyColinears(obvious,areOverlapped);
       CPPUNIT_ASSERT(!obvious && !areOverlapped);
-      CPPUNIT_ASSERT(intersector->intersect(0,v4,order,v3)); CPPUNIT_ASSERT(order); CPPUNIT_ASSERT_EQUAL(2,(int)v4.size()); CPPUNIT_ASSERT_EQUAL(0,(int)v3.getNumberOfAssociations());
+      CPPUNIT_ASSERT(intersector->intersect(v4,order,v3)); CPPUNIT_ASSERT(order); CPPUNIT_ASSERT_EQUAL(2,(int)v4.size()); CPPUNIT_ASSERT_EQUAL(0,(int)v3.getNumberOfAssociations());
       CPPUNIT_ASSERT(e1->getStartNode()==v4[0]); CPPUNIT_ASSERT(e1->getEndNode()==v4[1]);
       v4[0]->decrRef(); v4[1]->decrRef();
       v4.clear(); v3.clear();
@@ -457,9 +457,9 @@ void QuadraticPlanarInterpTest::IntersectArcCircleBase()
       intersector=new ArcCArcCIntersector(*e1,*e2);
       bool order;
       bool obvious,areOverlapped;
-      intersector->areOverlappedOrOnlyColinears(0,obvious,areOverlapped);
+      intersector->areOverlappedOrOnlyColinears(obvious,areOverlapped);
       CPPUNIT_ASSERT(!obvious && !areOverlapped);
-      CPPUNIT_ASSERT(intersector->intersect(0,v4,order,v3)); CPPUNIT_ASSERT(order); CPPUNIT_ASSERT_EQUAL(1,(int)v4.size()); CPPUNIT_ASSERT_EQUAL(0,(int)v3.getNumberOfAssociations());
+      CPPUNIT_ASSERT(intersector->intersect(v4,order,v3)); CPPUNIT_ASSERT(order); CPPUNIT_ASSERT_EQUAL(1,(int)v4.size()); CPPUNIT_ASSERT_EQUAL(0,(int)v3.getNumberOfAssociations());
       CPPUNIT_ASSERT(e1->getStartNode()==v4[0]);
       v4[0]->decrRef();
       v4.clear(); v3.clear();
@@ -481,9 +481,9 @@ void QuadraticPlanarInterpTest::IntersectArcCircleBase()
       intersector=new ArcCArcCIntersector(*e1,*e2);
       bool order;
       bool obvious,areOverlapped;
-      intersector->areOverlappedOrOnlyColinears(0,obvious,areOverlapped);
+      intersector->areOverlappedOrOnlyColinears(obvious,areOverlapped);
       CPPUNIT_ASSERT(!obvious && !areOverlapped);
-      CPPUNIT_ASSERT(intersector->intersect(0,v4,order,v3)); CPPUNIT_ASSERT(order); CPPUNIT_ASSERT_EQUAL(2,(int)v4.size()); CPPUNIT_ASSERT_EQUAL(0,(int)v3.getNumberOfAssociations());
+      CPPUNIT_ASSERT(intersector->intersect(v4,order,v3)); CPPUNIT_ASSERT(order); CPPUNIT_ASSERT_EQUAL(2,(int)v4.size()); CPPUNIT_ASSERT_EQUAL(0,(int)v3.getNumberOfAssociations());
       CPPUNIT_ASSERT(e1->getStartNode()==v4[0]);
       v4[0]->decrRef(); v4[1]->decrRef();
       v4.clear(); v3.clear();
@@ -609,33 +609,33 @@ void QuadraticPlanarInterpTest::IntersectArcCircleSegumentBase()
   EdgeIntersector *intersector=new ArcCSegIntersector(*e1,*e2);
   bool order;
   bool obvious,areOverlapped;
-  intersector->areOverlappedOrOnlyColinears(0,obvious,areOverlapped);
+  intersector->areOverlappedOrOnlyColinears(obvious,areOverlapped);
   CPPUNIT_ASSERT(!obvious && !areOverlapped);
   std::vector<Node *> v4;
   MergePoints v3;
-  CPPUNIT_ASSERT(intersector->intersect(0,v4,order,v3)); CPPUNIT_ASSERT(!order); CPPUNIT_ASSERT_EQUAL(2,(int)v4.size()); CPPUNIT_ASSERT_EQUAL(0,(int)v3.getNumberOfAssociations());
+  CPPUNIT_ASSERT(intersector->intersect(v4,order,v3)); CPPUNIT_ASSERT(!order); CPPUNIT_ASSERT_EQUAL(2,(int)v4.size()); CPPUNIT_ASSERT_EQUAL(0,(int)v3.getNumberOfAssociations());
   CPPUNIT_ASSERT_DOUBLES_EQUAL(2.,(*v4[0])[0],1e-10); CPPUNIT_ASSERT_DOUBLES_EQUAL(4.3,(*v4[0])[1],1e-10);
   CPPUNIT_ASSERT_DOUBLES_EQUAL(-0.3,(*v4[1])[0],1e-10); CPPUNIT_ASSERT_DOUBLES_EQUAL(2.,(*v4[1])[1],1e-10);
   v4[0]->decrRef(); v4[1]->decrRef(); e2->decrRef(); v3.clear(); v4.clear(); delete intersector;
   //
   e2=new EdgeLin(3.,5.3,-1.3,1.);
   intersector=new ArcCSegIntersector(*e1,*e2);
-  intersector->areOverlappedOrOnlyColinears(0,obvious,areOverlapped); CPPUNIT_ASSERT(!obvious && !areOverlapped);
-  CPPUNIT_ASSERT(intersector->intersect(0,v4,order,v3)); CPPUNIT_ASSERT(order); CPPUNIT_ASSERT_EQUAL(2,(int)v4.size()); CPPUNIT_ASSERT_EQUAL(0,(int)v3.getNumberOfAssociations());
+  intersector->areOverlappedOrOnlyColinears(obvious,areOverlapped); CPPUNIT_ASSERT(!obvious && !areOverlapped);
+  CPPUNIT_ASSERT(intersector->intersect(v4,order,v3)); CPPUNIT_ASSERT(order); CPPUNIT_ASSERT_EQUAL(2,(int)v4.size()); CPPUNIT_ASSERT_EQUAL(0,(int)v3.getNumberOfAssociations());
   CPPUNIT_ASSERT_DOUBLES_EQUAL(2.,(*v4[0])[0],1e-10); CPPUNIT_ASSERT_DOUBLES_EQUAL(4.3,(*v4[0])[1],1e-10);
   CPPUNIT_ASSERT_DOUBLES_EQUAL(-0.3,(*v4[1])[0],1e-10); CPPUNIT_ASSERT_DOUBLES_EQUAL(2.,(*v4[1])[1],1e-10);
   v4[0]->decrRef(); v4[1]->decrRef(); e2->decrRef(); v3.clear(); v4.clear(); delete intersector;
   // tangent intersection
   e2=new EdgeLin(-1.,4.3,3.,4.3);
   intersector=new ArcCSegIntersector(*e1,*e2);
-  intersector->areOverlappedOrOnlyColinears(0,obvious,areOverlapped); CPPUNIT_ASSERT(!obvious && !areOverlapped);
-  CPPUNIT_ASSERT(intersector->intersect(0,v4,order,v3)); CPPUNIT_ASSERT(order); CPPUNIT_ASSERT_EQUAL(1,(int)v4.size()); CPPUNIT_ASSERT_EQUAL(0,(int)v3.getNumberOfAssociations());
+  intersector->areOverlappedOrOnlyColinears(obvious,areOverlapped); CPPUNIT_ASSERT(!obvious && !areOverlapped);
+  CPPUNIT_ASSERT(intersector->intersect(v4,order,v3)); CPPUNIT_ASSERT(order); CPPUNIT_ASSERT_EQUAL(1,(int)v4.size()); CPPUNIT_ASSERT_EQUAL(0,(int)v3.getNumberOfAssociations());
   CPPUNIT_ASSERT_DOUBLES_EQUAL(2.,(*v4[0])[0],1e-10); CPPUNIT_ASSERT_DOUBLES_EQUAL(4.3,(*v4[0])[1],1e-10);
   v4[0]->decrRef(); e2->decrRef(); v3.clear(); delete intersector;
   // no intersection
   e2=new EdgeLin(-2.,-2.,-1.,-3.);
   intersector=new ArcCSegIntersector(*e1,*e2);
-  intersector->areOverlappedOrOnlyColinears(0,obvious,areOverlapped); CPPUNIT_ASSERT(obvious && !areOverlapped);
+  intersector->areOverlappedOrOnlyColinears(obvious,areOverlapped); CPPUNIT_ASSERT(obvious && !areOverlapped);
   e2->decrRef(); v3.clear(); delete intersector;
   //
   e1->decrRef();
index 6bd1e3ed83b6740112c2cd7d6eb00b31dee14409..64f725534f9745b1da50db6f9f2f97b7344354b2 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 96dd67eed10fd923adf980d9e3286f42ac8e63a0..50efd5acb39c1b5c22063066c8efa5af76ffa791 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index c84321d437f9f8f04d5752af5326df312d8ebf1d..3f4b82633d44fa213740bd0388dd1a8d58cbbeb0 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 80cd3770e00153e01a3d9da3dafeb3b4ea137a8a..8ed9e2694ddb4a929ff029dc73a9f296b5f27530 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 3faf45ec94a1b377e34323346a50b7bef4edb6f6..61ff2121eb2365253db897a92172288af62d8b88 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 15228cbe69c4f005368e8392ffb54d09a79828db..cb3d85725eb0600acdad425d3b78ea97b7008f47 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 08ea36beb7498387e6e62c8964f5e8b9927e9a52..71e3f4d598572e03423eb694e8942569c94421eb 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index b0ee27d2413a3cf9c89932875c76b1e581715198..ed6e9ea2f7bf11a7534b50f6ac3f525ebe8a4148 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 149c74dd90779e79b0d2f76cf56c45cffa231f93..b0609a8c0ff4aa7b53062f1220f327b021d2d253 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index e25aec49cde4937d606eef3e6c91fc43c2ee1f0f..2b0443eb22348d4622b13910f67e2024ba60a65f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 9677175da6cf9dd6ab8f2df43cf2071f3a920fad..7cc0e220475daa108f04958b1c1fb7ca2b404292 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 72361f92c239586d65cad92743a0d54afc667b99..b70a40620bfe41636f2529164d4e5d970fbd3c56 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index f07e32591e4647ba8d047e8dc2c65ab700529449..1f7e19b5480b3e03d8a6262ee8c360159c48fe9b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 4cc591f27b05c7efe0c82c7d584a2027d7eb16fa..64a74e236f354cf9e86aecdad72ecc878248d73f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 267e65d4e8a8972f2713e8df41cc4a214ab146f6..8bda580dbe10944b52502d604bbfc09d494c20fa 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 10d3b32fe33e1e73702d43f6fbcf74ebcde742b4..98bd5e21a371ca8f6e596cbe6ad0a35e2effe9c4 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 1d5a83ecd84079de781be688a6afd5dea5d947bc..4cd9d59b21789fddf9e14c9afdd8ea362107c4b8 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 851685eaae4fc49f86dafa4fd1243aba79f952a6..0b1df04a08e60f0dff9adbf19536b4c424703138 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 3657620b1902f3b30198afd956568156a4e2c8ca..5c542100340181fe9e3e53c25bd67dc086a592dc 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 899c7fd18334e8ddf4260e9a44a2b12a7a0bd05e..7bfa98126f00f6af6d0d2569ccbba3d316b0257c 100755 (executable)
@@ -1,5 +1,5 @@
 #! /bin/env python
-# Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+# Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 577f2fdfb1c684eeddbda0ef173daac228d30831..93597a1fa78b4868e131fce6a227918e6ceb06cf 100755 (executable)
@@ -1,5 +1,5 @@
 #!/bin/bash
-# Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+# Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index d668ac8c26e2a45153cc75ebc814c103a72f3fb4..04e0b5b3ec88ab787468611b8b042fb70963ed49 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2016  CEA/DEN, EDF R&D
+# Copyright (C) 2012-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index b680659fa521a152a962a8f2546bb16d5533fd2f..ff32e25a130849b8a06fd381ee4c3ad1eaab35d1 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -24,6 +24,8 @@
 #include "MEDCouplingRefCountObject.hxx"
 #include "InterpKernelException.hxx"
 
+#include <vector>
+
 namespace MEDCoupling
 {
   template<class T>
@@ -80,6 +82,16 @@ namespace MEDCoupling
     return ret;
   }
 
+  template<class T>
+  typename std::vector<const T *> ToConstVect(const typename std::vector< MCAuto<T> >& vec)
+  {
+    std::size_t sz(vec.size());
+    std::vector<const T *> ret(sz);
+    for(std::size_t i=0;i<sz;i++)
+      ret[i]=(const T *)vec[i];
+    return ret;
+  }
+  
   template<class T>
   class MCConstAuto
   {
index dd04b6822bce496303fad9ee4b4f9958757e5fe6..90ee8943993cedc12d615dec8a4f31102c490d13 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 01e2dd1f963d2f6aefca18eea7eae8abda05eb1f..17d7bef26fd0f04dbfaf60304436e990cf806596 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2017  CEA/DEN, EDF R&D
+// Copyright (C) 2017-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 #ifndef __MEDCOUPLING_MCTYPE_HXX__
 #define __MEDCOUPLING_MCTYPE_HXX__
 
+#include <cstdint>
+#include <stddef.h>
+
 namespace MEDCoupling
 {
-  typedef long Int64;
-  typedef int Int32;
-  typedef int mcIdType;
+  using Int64 = std::int64_t;
+  using Int32 = std::int32_t;
+#ifndef MEDCOUPLING_USE_64BIT_IDS
+  using mcIdType = std::int32_t;
+#else
+  using mcIdType = std::int64_t;
+#endif
+  inline mcIdType ToIdType(std::size_t val) { return mcIdType(val); }
 }
 
 #define DataArrayInt DataArrayInt32
index 5b6208fb314bfd7fd0f66b6410cb2d9418073804..44dd7ae875ffe6af7baa4283a69c4a9aaf93f7b7 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index fa91db76d0b6e709aa51f0a95799ae5560c114d2..074ec79873bfeaccb6ace255602c90744c0b8289 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -892,7 +892,7 @@ void MEDCoupling1SGTUMesh::renumberCells(const int *old2NewBg, bool check)
 {
   int nbCells=getNumberOfCells();
   MCAuto<DataArrayInt> o2n=DataArrayInt::New();
-  o2n->useArray(old2NewBg,false,C_DEALLOC,nbCells,1);
+  o2n->useArray(old2NewBg,false,DeallocType::C_DEALLOC,nbCells,1);
   if(check)
     o2n=o2n->checkAndPreparePermutation();
   //
@@ -1580,7 +1580,7 @@ void MEDCoupling1SGTUMesh::getReverseNodalConnectivity(DataArrayInt *revNodal, D
   checkFullyDefined();
   int nbOfNodes=getNumberOfNodes();
   int *revNodalIndxPtr=(int *)malloc((nbOfNodes+1)*sizeof(int));
-  revNodalIndx->useArray(revNodalIndxPtr,true,C_DEALLOC,nbOfNodes+1,1);
+  revNodalIndx->useArray(revNodalIndxPtr,true,DeallocType::C_DEALLOC,nbOfNodes+1,1);
   std::fill(revNodalIndxPtr,revNodalIndxPtr+nbOfNodes+1,0);
   const int *conn=_conn->begin();
   int nbOfCells=getNumberOfCells();
@@ -1605,7 +1605,7 @@ void MEDCoupling1SGTUMesh::getReverseNodalConnectivity(DataArrayInt *revNodal, D
   std::transform(revNodalIndxPtr+1,revNodalIndxPtr+nbOfNodes+1,revNodalIndxPtr,revNodalIndxPtr+1,std::plus<int>());
   conn=_conn->begin();
   int *revNodalPtr=(int *)malloc((nbOfEltsInRevNodal)*sizeof(int));
-  revNodal->useArray(revNodalPtr,true,C_DEALLOC,nbOfEltsInRevNodal,1);
+  revNodal->useArray(revNodalPtr,true,DeallocType::C_DEALLOC,nbOfEltsInRevNodal,1);
   std::fill(revNodalPtr,revNodalPtr+nbOfEltsInRevNodal,-1);
   for(int eltId=0;eltId<nbOfCells;eltId++)
     {
@@ -2714,7 +2714,7 @@ void MEDCoupling1DGTUMesh::renumberCells(const int *old2NewBg, bool check)
 {
   int nbCells=getNumberOfCells();
   MCAuto<DataArrayInt> o2n=DataArrayInt::New();
-  o2n->useArray(old2NewBg,false,C_DEALLOC,nbCells,1);
+  o2n->useArray(old2NewBg,false,DeallocType::C_DEALLOC,nbCells,1);
   if(check)
     o2n=o2n->checkAndPreparePermutation();
   //
@@ -2851,7 +2851,7 @@ MEDCouplingPointSet *MEDCoupling1DGTUMesh::buildPartOfMySelfKeepCoords(const int
   MCAuto<MEDCoupling1DGTUMesh> ret(new MEDCoupling1DGTUMesh(getName(),*_cm));
   ret->setCoords(_coords);
   DataArrayInt *c=0,*ci=0;
-  MEDCouplingUMesh::ExtractFromIndexedArrays(begin,end,_conn,_conn_indx,c,ci);
+  DataArrayInt::ExtractFromIndexedArrays(begin,end,_conn,_conn_indx,c,ci);
   MCAuto<DataArrayInt> cSafe(c),ciSafe(ci);
   ret->setNodalConnectivity(c,ci);
   return ret.retn();
@@ -2863,7 +2863,7 @@ MEDCouplingPointSet *MEDCoupling1DGTUMesh::buildPartOfMySelfKeepCoordsSlice(int
   MCAuto<MEDCoupling1DGTUMesh> ret(new MEDCoupling1DGTUMesh(getName(),*_cm));
   ret->setCoords(_coords);
   DataArrayInt *c=0,*ci=0;
-  MEDCouplingUMesh::ExtractFromIndexedArraysSlice(start,end,step,_conn,_conn_indx,c,ci);
+  DataArrayInt::ExtractFromIndexedArraysSlice(start,end,step,_conn,_conn_indx,c,ci);
   MCAuto<DataArrayInt> cSafe(c),ciSafe(ci);
   ret->setNodalConnectivity(c,ci);
   return ret.retn();
@@ -2893,7 +2893,7 @@ void MEDCoupling1DGTUMesh::getReverseNodalConnectivity(DataArrayInt *revNodal, D
   checkFullyDefined();
   int nbOfNodes=getNumberOfNodes();
   int *revNodalIndxPtr=(int *)malloc((nbOfNodes+1)*sizeof(int));
-  revNodalIndx->useArray(revNodalIndxPtr,true,C_DEALLOC,nbOfNodes+1,1);
+  revNodalIndx->useArray(revNodalIndxPtr,true,DeallocType::C_DEALLOC,nbOfNodes+1,1);
   std::fill(revNodalIndxPtr,revNodalIndxPtr+nbOfNodes+1,0);
   const int *conn=_conn->begin(),*conni=_conn_indx->begin();
   int nbOfCells=getNumberOfCells();
@@ -2928,7 +2928,7 @@ void MEDCoupling1DGTUMesh::getReverseNodalConnectivity(DataArrayInt *revNodal, D
   std::transform(revNodalIndxPtr+1,revNodalIndxPtr+nbOfNodes+1,revNodalIndxPtr,revNodalIndxPtr+1,std::plus<int>());
   conn=_conn->begin();
   int *revNodalPtr=(int *)malloc((nbOfEltsInRevNodal)*sizeof(int));
-  revNodal->useArray(revNodalPtr,true,C_DEALLOC,nbOfEltsInRevNodal,1);
+  revNodal->useArray(revNodalPtr,true,DeallocType::C_DEALLOC,nbOfEltsInRevNodal,1);
   std::fill(revNodalPtr,revNodalPtr+nbOfEltsInRevNodal,-1);
   for(int eltId=0;eltId<nbOfCells;eltId++)
     {
index e8ae6a50a036543f9afe1ed96000135c9c057415..9c238cf4504e11655b31f3d323a87b30b67c9c66 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -180,7 +180,7 @@ namespace MEDCoupling
     template<class MAPCLS>
     void renumberNodesInConnT(const MAPCLS& newNodeNumbersO2N);
   private:
-    MCAuto<DataArrayInt> _conn;
+    MCAuto<DataArrayIdType> _conn;
   public:
     static const int HEXA8_FACE_PAIRS[6];
   };
@@ -274,8 +274,8 @@ namespace MEDCoupling
     template<class MAPCLS>
     void renumberNodesInConnT(const MAPCLS& newNodeNumbersO2N);
   private:
-    MCAuto<DataArrayInt> _conn_indx;
-    MCAuto<DataArrayInt> _conn;
+    MCAuto<DataArrayIdType> _conn_indx;
+    MCAuto<DataArrayIdType> _conn;
   };
 }
 
index e6ee85403589a20dc2470a027d42165345ca4676..99fa524d457d62b50b72eaba3d01b5a309985755 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2018  CEA/DEN, EDF R&D
+// Copyright (C) 2018-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index f1e5081063602d275239c63230c8d1f5791c936b..f20dbba1fb7d7db1583f9cbefe66a77e9efe1ad7 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index e8565077c281ccc23970777c36e3da70fd29f328..4e818db7ed36b72c60dd33856ecfdc974798928e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index d5a7c5a96b6fcb33d58b151ce05bd51e86a3dd42..bad815c4f2e7f8c90051f10ca8df1c7586fa6491 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 8f17528ea43acb572c33dc0f4054786c01ccf8bc..e97618ed6fd46a66467670c6687a21c0c26cdba5 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index d9722e0115f32d4e6b16b0f666692a74ae84f035..c4ea2728f68554f70c82a004038e97781100f732 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index fdc4ceb8c58e76a8706b95b0a81c85074238c26e..ad4e74aa9135116aef5f2d9fb8e7636410ca0762 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 1f7fc08919a2ab46b1dacc1847099b806e0f513b..1ca531a99cef21c166feccd15d773dee3d6caea1 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 7c15664904701288fbd94bda0c742623ca0d7acc..05d29452a4af5968a30cef8a2873dbe0e5267a7e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 96cfe27b8dbd503cdd75120eb38ffbba1f24a5f9..23d4204b42ca0cfdff06979c5daea73e13fe833a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 4ade501ce25b424b7d175f795a1dcb727211f48c..441e3b179472891e3b128d8795bf29510bf2524e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 94c0a12fad091179c86d4e2c1fc3586e300646dd..a6eda85b2a6de7f11ae4a954e90f00ad3ec53b54 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -114,7 +114,9 @@ bool MEDCouplingField::areCompatibleForMerge(const MEDCouplingField *other) cons
 {
   if(!other)
     throw INTERP_KERNEL::Exception("MEDCouplingField::areCompatibleForMerge : input field is NULL !");
-  if(!_type->isEqual(other->_type,1.))
+  if(!_type || !other->_type)
+    throw INTERP_KERNEL::Exception("MEDCouplingField::areCompatibleForMerge : this or other has a nullptr spatial discretization !");
+  if(_type->getEnum()!=other->_type->getEnum())
     return false;
   if(_nature!=other->_nature)
     return false;
index d29efca747d2906456e9f977a6e1c800339c3e6e..942d5c6cc34e397494698c8dfde26f8c5dbc6366 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 92bed51db1a58cfae044871c51b9383aa0e01126..419218f6db9b260a1bd430e94d47f1eebf055e04 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -476,6 +476,20 @@ void MEDCouplingFieldDiscretization::RenumberEntitiesFromN2OArr(const int *new2O
     }
 }
 
+template<class FIELD_DISC>
+MCAuto<MEDCouplingFieldDiscretization> MEDCouplingFieldDiscretization::EasyAggregate(std::vector<const MEDCouplingFieldDiscretization *>& fds)
+{
+  if(fds.empty())
+    throw INTERP_KERNEL::Exception("MEDCouplingFieldDiscretization::aggregate : input array is empty");
+  for(const MEDCouplingFieldDiscretization * it : fds)
+    {
+      const FIELD_DISC *itc(dynamic_cast<const FIELD_DISC *>(it));
+      if(!itc)
+        throw INTERP_KERNEL::Exception("MEDCouplingFieldDiscretization::aggregate : same field discretization expected for all input discretizations !");
+    }
+  return fds[0]->clone();
+}
+
 MEDCouplingFieldDiscretization::~MEDCouplingFieldDiscretization()
 {
 }
@@ -763,6 +777,11 @@ MEDCouplingMesh *MEDCouplingFieldDiscretizationP0::buildSubMeshDataRange(const M
   return ret.retn();
 }
 
+MCAuto<MEDCouplingFieldDiscretization> MEDCouplingFieldDiscretizationP0::aggregate(std::vector<const MEDCouplingFieldDiscretization *>& fds) const
+{
+  return EasyAggregate<MEDCouplingFieldDiscretizationP0>(fds);
+}
+
 int MEDCouplingFieldDiscretizationOnNodes::getNumberOfTuples(const MEDCouplingMesh *mesh) const
 {
   if(!mesh)
@@ -1040,7 +1059,8 @@ void MEDCouplingFieldDiscretizationP1::getValueInCell(const MEDCouplingMesh *mes
   for(std::size_t i=0;i<nbOfNodes;i++)
     vec[i]=&coo[i*spaceDim];
   INTERP_KERNEL::AutoPtr<double> tmp=new double[nbOfNodes];
-  INTERP_KERNEL::barycentric_coords(vec,loc,tmp);
+  INTERP_KERNEL::NormalizedCellType ct(mesh->getTypeOfCell(cellId));
+  INTERP_KERNEL::barycentric_coords(ct,vec,loc,tmp);
   int sz=arr->getNumberOfComponents();
   INTERP_KERNEL::AutoPtr<double> tmp2=new double[sz];
   std::fill(res,res+sz,0.);
@@ -1082,6 +1102,11 @@ void MEDCouplingFieldDiscretizationP1::reprQuickOverview(std::ostream& stream) c
   stream << "P1 spatial discretization.";
 }
 
+MCAuto<MEDCouplingFieldDiscretization> MEDCouplingFieldDiscretizationP1::aggregate(std::vector<const MEDCouplingFieldDiscretization *>& fds) const
+{
+  return EasyAggregate<MEDCouplingFieldDiscretizationP1>(fds);
+}
+
 MEDCouplingFieldDiscretizationPerCell::MEDCouplingFieldDiscretizationPerCell():_discr_per_cell(0)
 {
 }
@@ -1116,6 +1141,12 @@ MEDCouplingFieldDiscretizationPerCell::MEDCouplingFieldDiscretizationPerCell(con
     }
 }
 
+MEDCouplingFieldDiscretizationPerCell::MEDCouplingFieldDiscretizationPerCell(DataArrayInt *dpc):_discr_per_cell(dpc)
+{
+  if(_discr_per_cell)
+    _discr_per_cell->incrRef();
+}
+
 void MEDCouplingFieldDiscretizationPerCell::updateTime() const
 {
   if(_discr_per_cell)
@@ -1822,7 +1853,7 @@ DataArrayInt *MEDCouplingFieldDiscretizationGauss::computeTupleIdsToSelectFromCe
   if(_discr_per_cell->getNumberOfTuples()!=nbOfCells)
     throw INTERP_KERNEL::Exception("MEDCouplingFieldDiscretizationGauss::computeTupleIdsToSelectFromCellIds : mismatch of nb of tuples of cell ids array and number of cells !");
   nbOfNodesPerCell->computeOffsetsFull();
-  MCAuto<DataArrayInt> sel=DataArrayInt::New(); sel->useArray(startCellIds,false,CPP_DEALLOC,(int)std::distance(startCellIds,endCellIds),1);
+  MCAuto<DataArrayInt> sel=DataArrayInt::New(); sel->useArray(startCellIds,false,DeallocType::CPP_DEALLOC,(int)std::distance(startCellIds,endCellIds),1);
   return sel->buildExplicitArrByRanges(nbOfNodesPerCell);
 }
 
@@ -1843,6 +1874,50 @@ void MEDCouplingFieldDiscretizationGauss::renumberValuesOnCellsR(const MEDCoupli
   throw INTERP_KERNEL::Exception("Number of cells has changed and becomes higher with some cells that have been split ! Unable to conserve the Gauss field !");
 }
 
+MCAuto<MEDCouplingFieldDiscretization> MEDCouplingFieldDiscretizationGauss::aggregate(std::vector<const MEDCouplingFieldDiscretization *>& fds) const
+{
+  if(fds.empty())
+    throw INTERP_KERNEL::Exception("MEDCouplingFieldDiscretizationGauss::aggregate : input array is empty");
+  std::vector<MEDCouplingGaussLocalization> loc;//store the localizations for the output GaussDiscretization object
+  std::vector< MCAuto<DataArrayInt> > discPerCells(fds.size());
+  std::size_t i(0);
+  for(auto it=fds.begin();it!=fds.end();++it,++i)
+    {
+      const MEDCouplingFieldDiscretizationGauss *itc(dynamic_cast<const MEDCouplingFieldDiscretizationGauss *>(*it));
+      if(!itc)
+        throw INTERP_KERNEL::Exception("MEDCouplingFieldDiscretizationGauss::aggregate : same field discretization expected for all input discretizations !");
+      //
+      std::vector<MEDCouplingGaussLocalization> loc2(itc->_loc);
+      std::vector<int> newLocId(loc2.size());
+      for(std::size_t j=0;j<loc2.size();++j)
+        {
+          std::size_t k(0);
+          for(;k<loc.size();++k)
+            {
+              if(loc2[j].isEqual(loc[k],1e-10))
+                {
+                  newLocId[j]=(int)k;
+                  break;
+                }
+            }
+          if(k==loc.size())// current loc2[j]
+            {
+              newLocId[j]=(int)loc.size();
+              loc.push_back(loc2[j]);
+            }
+        }
+      const DataArrayInt *dpc(itc->_discr_per_cell);
+      if(!dpc)
+        throw INTERP_KERNEL::Exception("MEDCouplingFieldDiscretizationGauss::aggregate : Presence of nullptr array of disc per cell !");
+      MCAuto<DataArrayInt> dpc2(dpc->deepCopy());
+      dpc2->transformWithIndArr(newLocId.data(),newLocId.data()+newLocId.size());
+      discPerCells[i]=dpc2;
+    }
+  MCAuto<DataArrayInt> dpc3(DataArrayInt::Aggregate(ToConstVect(discPerCells)));
+  MCAuto<MEDCouplingFieldDiscretizationGauss> ret(new MEDCouplingFieldDiscretizationGauss(dpc3,loc));
+  return DynamicCast<MEDCouplingFieldDiscretizationGauss,MEDCouplingFieldDiscretization>(ret);
+}
+
 void MEDCouplingFieldDiscretizationGauss::setGaussLocalizationOnType(const MEDCouplingMesh *mesh, INTERP_KERNEL::NormalizedCellType type, const std::vector<double>& refCoo,
                                                                      const std::vector<double>& gsCoo, const std::vector<double>& wg)
 {
@@ -2702,7 +2777,7 @@ DataArrayInt *MEDCouplingFieldDiscretizationGaussNE::computeTupleIdsToSelectFrom
     throw INTERP_KERNEL::Exception("MEDCouplingFieldDiscretizationGaussNE::computeTupleIdsToSelectFromCellIds : null mesh !");
   MCAuto<DataArrayInt> nbOfNodesPerCell=mesh->computeNbOfNodesPerCell();
   nbOfNodesPerCell->computeOffsetsFull();
-  MCAuto<DataArrayInt> sel=DataArrayInt::New(); sel->useArray(startCellIds,false,CPP_DEALLOC,(int)std::distance(startCellIds,endCellIds),1);
+  MCAuto<DataArrayInt> sel=DataArrayInt::New(); sel->useArray(startCellIds,false,DeallocType::CPP_DEALLOC,(int)std::distance(startCellIds,endCellIds),1);
   return sel->buildExplicitArrByRanges(nbOfNodesPerCell);
 }
 
@@ -2718,6 +2793,11 @@ void MEDCouplingFieldDiscretizationGaussNE::renumberValuesOnCells(double epsOnVa
   throw INTERP_KERNEL::Exception("Not implemented yet !");
 }
 
+MCAuto<MEDCouplingFieldDiscretization> MEDCouplingFieldDiscretizationGaussNE::aggregate(std::vector<const MEDCouplingFieldDiscretization *>& fds) const
+{
+  return EasyAggregate<MEDCouplingFieldDiscretizationGaussNE>(fds);
+}
+
 void MEDCouplingFieldDiscretizationGaussNE::renumberValuesOnCellsR(const MEDCouplingMesh *mesh, const int *new2old, int newSz, DataArrayDouble *arr) const
 {
   throw INTERP_KERNEL::Exception("Not implemented yet !");
@@ -2813,6 +2893,11 @@ void MEDCouplingFieldDiscretizationKriging::reprQuickOverview(std::ostream& stre
   stream << "Kriging spatial discretization.";
 }
 
+MCAuto<MEDCouplingFieldDiscretization> MEDCouplingFieldDiscretizationKriging::aggregate(std::vector<const MEDCouplingFieldDiscretization *>& fds) const
+{
+  return EasyAggregate<MEDCouplingFieldDiscretizationKriging>(fds);
+}
+
 /*!
  * Returns the matrix of size nbRows = \a nbOfTargetPoints and \a nbCols = \a nbCols. This matrix is useful if 
  * 
@@ -2826,7 +2911,7 @@ DataArrayDouble *MEDCouplingFieldDiscretizationKriging::computeEvaluationMatrixO
   MCAuto<DataArrayDouble> coords=getLocalizationOfDiscValues(mesh);
   int nbOfPts(coords->getNumberOfTuples()),dimension(coords->getNumberOfComponents());
   MCAuto<DataArrayDouble> locArr=DataArrayDouble::New();
-  locArr->useArray(loc,false,CPP_DEALLOC,nbOfTargetPoints,dimension);
+  locArr->useArray(loc,false,DeallocType::CPP_DEALLOC,nbOfTargetPoints,dimension);
   nbCols=nbOfPts;
   //
   MCAuto<DataArrayDouble> matrix2=coords->buildEuclidianDistanceDenseMatrixWith(locArr);
index 37362a8a0662c42e0052923e3cd917314bb32f62..51736bc19f768883a01fff76cc13c0e629cd093c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -87,6 +87,7 @@ namespace MEDCoupling
     MEDCOUPLING_EXPORT virtual void renumberValuesOnNodes(double epsOnVals, const int *old2New, int newNbOfNodes, DataArrayDouble *arr) const = 0;
     MEDCOUPLING_EXPORT virtual void renumberValuesOnCells(double epsOnVals, const MEDCouplingMesh *mesh, const int *old2New, int newSz, DataArrayDouble *arr) const = 0;
     MEDCOUPLING_EXPORT virtual void renumberValuesOnCellsR(const MEDCouplingMesh *mesh, const int *new2old, int newSz, DataArrayDouble *arr) const = 0;
+    MEDCOUPLING_EXPORT virtual MCAuto<MEDCouplingFieldDiscretization> aggregate(std::vector<const MEDCouplingFieldDiscretization *>& fds) const = 0;
     MEDCOUPLING_EXPORT virtual void getSerializationIntArray(DataArrayInt *& arr) const;
     MEDCOUPLING_EXPORT virtual void getTinySerializationIntInformation(std::vector<int>& tinyInfo) const;
     MEDCOUPLING_EXPORT virtual void getTinySerializationDbleInformation(std::vector<double>& tinyInfo) const;
@@ -111,6 +112,8 @@ namespace MEDCoupling
     MEDCOUPLING_EXPORT MEDCouplingFieldDiscretization();
     MEDCOUPLING_EXPORT static void RenumberEntitiesFromO2NArr(double epsOnVals, const int *old2NewPtr, int newNbOfEntity, DataArrayDouble *arr, const std::string& msg);
     MEDCOUPLING_EXPORT static void RenumberEntitiesFromN2OArr(const int *new2OldPtr, int new2OldSz, DataArrayDouble *arr, const std::string& msg);
+    template<class FIELD_DISC>
+    static MCAuto<MEDCouplingFieldDiscretization> EasyAggregate(std::vector<const MEDCouplingFieldDiscretization *>& fds);
   protected:
     double _precision;
     static const double DFLT_PRECISION;
@@ -142,6 +145,7 @@ namespace MEDCoupling
     MEDCOUPLING_EXPORT void renumberValuesOnNodes(double epsOnVals, const int *old2New, int newNbOfNodes, DataArrayDouble *arr) const;
     MEDCOUPLING_EXPORT void renumberValuesOnCells(double epsOnVals, const MEDCouplingMesh *mesh, const int *old2New, int newSz, DataArrayDouble *arr) const;
     MEDCOUPLING_EXPORT void renumberValuesOnCellsR(const MEDCouplingMesh *mesh, const int *new2old, int newSz, DataArrayDouble *arr) const;
+    MEDCOUPLING_EXPORT MCAuto<MEDCouplingFieldDiscretization> aggregate(std::vector<const MEDCouplingFieldDiscretization *>& fds) const override;
     MEDCOUPLING_EXPORT MEDCouplingMesh *buildSubMeshData(const MEDCouplingMesh *mesh, const int *start, const int *end, DataArrayInt *&di) const;
     MEDCOUPLING_EXPORT MEDCouplingMesh *buildSubMeshDataRange(const MEDCouplingMesh *mesh, int beginCellIds, int endCellIds, int stepCellIds, int& beginOut, int& endOut, int& stepOut, DataArrayInt *&di) const;
     MEDCOUPLING_EXPORT DataArrayInt *computeTupleIdsToSelectFromCellIds(const MEDCouplingMesh *mesh, const int *startCellIds, const int *endCellIds) const;
@@ -187,6 +191,7 @@ namespace MEDCoupling
     MEDCOUPLING_EXPORT void getValueOn(const DataArrayDouble *arr, const MEDCouplingMesh *mesh, const double *loc, double *res) const;
     MEDCOUPLING_EXPORT DataArrayDouble *getValueOnMulti(const DataArrayDouble *arr, const MEDCouplingMesh *mesh, const double *loc, int nbOfPoints) const;
     MEDCOUPLING_EXPORT void reprQuickOverview(std::ostream& stream) const;
+    MEDCOUPLING_EXPORT MCAuto<MEDCouplingFieldDiscretization> aggregate(std::vector<const MEDCouplingFieldDiscretization *>& fds) const override;
   public:
     static const char REPR[];
     static const TypeOfField TYPE;
@@ -209,6 +214,7 @@ namespace MEDCoupling
     MEDCouplingFieldDiscretizationPerCell();
     MEDCouplingFieldDiscretizationPerCell(const MEDCouplingFieldDiscretizationPerCell& other, const int *startCellIds, const int *endCellIds);
     MEDCouplingFieldDiscretizationPerCell(const MEDCouplingFieldDiscretizationPerCell& other, int beginCellIds, int endCellIds, int stepCellIds);
+    MEDCouplingFieldDiscretizationPerCell(DataArrayInt *dpc);
     ~MEDCouplingFieldDiscretizationPerCell();
     void updateTime() const;
     std::size_t getHeapMemorySizeWithoutChildren() const;
@@ -220,7 +226,7 @@ namespace MEDCoupling
   protected:
     void buildDiscrPerCellIfNecessary(const MEDCouplingMesh *mesh);
   protected:
-    DataArrayInt *_discr_per_cell;
+    DataArrayIdType *_discr_per_cell;
     static const int DFT_INVALID_LOCID_VALUE;
   };
 
@@ -265,6 +271,7 @@ namespace MEDCoupling
     MEDCOUPLING_EXPORT void renumberValuesOnNodes(double epsOnVals, const int *old2New, int newNbOfNodes, DataArrayDouble *arr) const;
     MEDCOUPLING_EXPORT void renumberValuesOnCells(double epsOnVals, const MEDCouplingMesh *mesh, const int *old2New, int newSz, DataArrayDouble *arr) const;
     MEDCOUPLING_EXPORT void renumberValuesOnCellsR(const MEDCouplingMesh *mesh, const int *new2old, int newSz, DataArrayDouble *arr) const;
+    MEDCOUPLING_EXPORT MCAuto<MEDCouplingFieldDiscretization> aggregate(std::vector<const MEDCouplingFieldDiscretization *>& fds) const override;
     MEDCOUPLING_EXPORT void setGaussLocalizationOnType(const MEDCouplingMesh *mesh, INTERP_KERNEL::NormalizedCellType type, const std::vector<double>& refCoo,
                                                        const std::vector<double>& gsCoo, const std::vector<double>& wg);
     MEDCOUPLING_EXPORT void setGaussLocalizationOnCells(const MEDCouplingMesh *mesh, const int *begin, const int *end, const std::vector<double>& refCoo,
@@ -284,6 +291,7 @@ namespace MEDCoupling
   protected:
     MEDCouplingFieldDiscretizationGauss(const MEDCouplingFieldDiscretizationGauss& other, const int *startCellIds=0, const int *endCellIds=0);
     MEDCouplingFieldDiscretizationGauss(const MEDCouplingFieldDiscretizationGauss& other, int beginCellIds, int endCellIds, int stepCellIds);
+    MEDCouplingFieldDiscretizationGauss(DataArrayInt *dpc, const std::vector<MEDCouplingGaussLocalization>& loc):MEDCouplingFieldDiscretizationPerCell(dpc),_loc(loc) { }
     void zipGaussLocalizations();
     int getOffsetOfCell(int cellId) const;
     void checkLocalizationId(int locId) const;
@@ -330,6 +338,7 @@ namespace MEDCoupling
     MEDCOUPLING_EXPORT void renumberValuesOnNodes(double epsOnVals, const int *old2New, int newNbOfNodes, DataArrayDouble *arr) const;
     MEDCOUPLING_EXPORT void renumberValuesOnCells(double epsOnVals, const MEDCouplingMesh *mesh, const int *old2New, int newSz, DataArrayDouble *arr) const;
     MEDCOUPLING_EXPORT void renumberValuesOnCellsR(const MEDCouplingMesh *mesh, const int *new2old, int newSz, DataArrayDouble *arr) const;
+    MEDCOUPLING_EXPORT MCAuto<MEDCouplingFieldDiscretization> aggregate(std::vector<const MEDCouplingFieldDiscretization *>& fds) const override;
     MEDCOUPLING_EXPORT void reprQuickOverview(std::ostream& stream) const;
     MEDCOUPLING_EXPORT static const double *GetWeightArrayFromGeometricType(INTERP_KERNEL::NormalizedCellType geoType, std::size_t& lgth);
     MEDCOUPLING_EXPORT static const double *GetRefCoordsFromGeometricType(INTERP_KERNEL::NormalizedCellType geoType, std::size_t& lgth);
@@ -409,6 +418,7 @@ namespace MEDCoupling
     MEDCOUPLING_EXPORT void getValueOn(const DataArrayDouble *arr, const MEDCouplingMesh *mesh, const double *loc, double *res) const;
     MEDCOUPLING_EXPORT DataArrayDouble *getValueOnMulti(const DataArrayDouble *arr, const MEDCouplingMesh *mesh, const double *loc, int nbOfPoints) const;
     MEDCOUPLING_EXPORT void reprQuickOverview(std::ostream& stream) const;
+    MEDCOUPLING_EXPORT MCAuto<MEDCouplingFieldDiscretization> aggregate(std::vector<const MEDCouplingFieldDiscretization *>& fds) const override;
   public://specific part
     MEDCOUPLING_EXPORT DataArrayDouble *computeEvaluationMatrixOnGivenPts(const MEDCouplingMesh *mesh, const double *loc, int nbOfTargetPoints, int& nbCols) const;
     MEDCOUPLING_EXPORT DataArrayDouble *computeInverseMatrix(const MEDCouplingMesh *mesh, int& isDrift, int& matSz) const;
index 6e6d5dc21c5c55c1b0e7802e9846071fa86940a4..3c877f2b470f9009587f74a281e3ec048b6ee3cd 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -2361,24 +2361,9 @@ void MEDCouplingFieldDouble::sortPerTuple(bool asc)
  */
 MEDCouplingFieldDouble *MEDCouplingFieldDouble::MergeFields(const MEDCouplingFieldDouble *f1, const MEDCouplingFieldDouble *f2)
 {
-  if(!f1->areCompatibleForMerge(f2))
-    throw INTERP_KERNEL::Exception("Fields are not compatible. Unable to apply MergeFields on them ! Check support mesh, field nature, and spatial and time discretisation.");
-  const MEDCouplingMesh *m1(f1->getMesh()),*m2(f2->getMesh());
-  if(!f1->timeDiscr())
-    throw INTERP_KERNEL::Exception("MEDCouplingFieldDouble::MergeFields : no time discr of f1 !");
-  if(!f1->_type)
-    throw INTERP_KERNEL::Exception("MEDCouplingFieldDouble::MergeFields : no spatial discr of f1 !");
-  MEDCouplingTimeDiscretization *td(f1->timeDiscr()->aggregate(f2->timeDiscr()));
-  td->copyTinyAttrFrom(*f1->timeDiscr());
-  MCAuto<MEDCouplingFieldDouble> ret(new MEDCouplingFieldDouble(f1->getNature(),td,f1->_type->clone()));
-  ret->setName(f1->getName());
-  ret->setDescription(f1->getDescription());
-  if(m1)
-    {
-      MCAuto<MEDCouplingMesh> m=m1->mergeMyselfWith(m2);
-      ret->setMesh(m);
-    }
-  return ret.retn();
+  std::vector<const MEDCouplingFieldDouble *> a(2);
+  a[0]=f1; a[1]=f2;
+  return MergeFields(a);
 }
 
 /*!
@@ -2402,29 +2387,36 @@ MEDCouplingFieldDouble *MEDCouplingFieldDouble::MergeFields(const MEDCouplingFie
  */
 MEDCouplingFieldDouble *MEDCouplingFieldDouble::MergeFields(const std::vector<const MEDCouplingFieldDouble *>& a)
 {
-  if(a.size()<1)
-    throw INTERP_KERNEL::Exception("FieldDouble::MergeFields : size of array must be >= 1 !");
+  if(a.empty())
+    throw INTERP_KERNEL::Exception("FieldDouble::MergeFields : input array is empty !");
   std::vector< MCAuto<MEDCouplingUMesh> > ms(a.size());
   std::vector< const MEDCouplingUMesh *> ms2(a.size());
   std::vector< const MEDCouplingTimeDiscretization *> tds(a.size());
-  std::vector<const MEDCouplingFieldDouble *>::const_iterator it=a.begin();
-  const MEDCouplingFieldDouble *ref=(*it++);
+  std::vector< const MEDCouplingFieldDouble *>::const_iterator it=a.begin();
+  std::vector<const MEDCouplingFieldDiscretization *> fds(a.size());
+  const MEDCouplingFieldDouble *ref((*it++));
   if(!ref)
-    throw INTERP_KERNEL::Exception("MEDCouplingFieldDouble::MergeFields : presence of NULL instance in first place of input vector !");
+    throw INTERP_KERNEL::Exception("MEDCouplingFieldDouble::MergeFields : presence of nullptr instance in first place of input vector !");
+  if(!ref->getDiscretization())
+    throw INTERP_KERNEL::Exception("MEDCouplingFieldDouble::MergeFields : nullptr spatial discretization !");
   for(;it!=a.end();it++)
     if(!ref->areCompatibleForMerge(*it))
       throw INTERP_KERNEL::Exception("Fields are not compatible. Unable to apply MergeFields on them! Check support mesh, field nature, and spatial and time discretisation.");
   for(int i=0;i<(int)a.size();i++)
     {
+      if(!a[i])
+        throw INTERP_KERNEL::Exception("MEDCouplingFieldDouble::MergeFields : presence of nullptr instance in input vector !");
       if(a[i]->getMesh())
         { ms[i]=a[i]->getMesh()->buildUnstructured(); ms2[i]=ms[i]; }
       else
         { ms[i]=0; ms2[i]=0; }
       tds[i]=a[i]->timeDiscr();
+      fds[i]=a[i]->getDiscretization();
     }
   MEDCouplingTimeDiscretization *td(tds[0]->aggregate(tds));
+  MCAuto<MEDCouplingFieldDiscretization> fda(fds[0]->aggregate(fds));
   td->copyTinyAttrFrom(*(a[0]->timeDiscr()));
-  MCAuto<MEDCouplingFieldDouble> ret(new MEDCouplingFieldDouble(a[0]->getNature(),td,a[0]->_type->clone()));
+  MCAuto<MEDCouplingFieldDouble> ret(new MEDCouplingFieldDouble(a[0]->getNature(),td,fda.retn()));
   ret->setName(a[0]->getName());
   ret->setDescription(a[0]->getDescription());
   if(ms2[0])
index 051d4a5e2295d6c9ee4bf019e447dd3be556a1eb..1ed1a122f9ad2bfc2a73cc39e3df776e3665a3c4 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -132,16 +132,16 @@ namespace MEDCoupling
     MEDCOUPLING_EXPORT static MEDCouplingFieldDouble *MinFields(const MEDCouplingFieldDouble *f1, const MEDCouplingFieldDouble *f2);
     MEDCOUPLING_EXPORT MEDCouplingFieldDouble *min(const MEDCouplingFieldDouble& other) const { return MinFields(this,&other); }
     MEDCOUPLING_EXPORT MEDCouplingFieldDouble *negate() const;
-    MEDCOUPLING_EXPORT MEDCouplingFieldDouble *operator+(const MEDCouplingFieldDouble& other) const throw(INTERP_KERNEL::Exception) { return AddFields(this,&other); }
+    MEDCOUPLING_EXPORT MEDCouplingFieldDouble *operator+(const MEDCouplingFieldDouble& other) const { return AddFields(this,&other); }
     MEDCOUPLING_EXPORT const MEDCouplingFieldDouble &operator+=(const MEDCouplingFieldDouble& other);
     MEDCOUPLING_EXPORT static MEDCouplingFieldDouble *AddFields(const MEDCouplingFieldDouble *f1, const MEDCouplingFieldDouble *f2);
-    MEDCOUPLING_EXPORT MEDCouplingFieldDouble *operator-(const MEDCouplingFieldDouble& other) const throw(INTERP_KERNEL::Exception) { return SubstractFields(this,&other); }
+    MEDCOUPLING_EXPORT MEDCouplingFieldDouble *operator-(const MEDCouplingFieldDouble& other) const { return SubstractFields(this,&other); }
     MEDCOUPLING_EXPORT const MEDCouplingFieldDouble &operator-=(const MEDCouplingFieldDouble& other);
     MEDCOUPLING_EXPORT static MEDCouplingFieldDouble *SubstractFields(const MEDCouplingFieldDouble *f1, const MEDCouplingFieldDouble *f2);
-    MEDCouplingFieldDouble *operator*(const MEDCouplingFieldDouble& other) const throw(INTERP_KERNEL::Exception) { return MultiplyFields(this,&other); }
+    MEDCouplingFieldDouble *operator*(const MEDCouplingFieldDouble& other) const { return MultiplyFields(this,&other); }
     MEDCOUPLING_EXPORT const MEDCouplingFieldDouble &operator*=(const MEDCouplingFieldDouble& other);
     MEDCOUPLING_EXPORT static MEDCouplingFieldDouble *MultiplyFields(const MEDCouplingFieldDouble *f1, const MEDCouplingFieldDouble *f2);
-    MEDCOUPLING_EXPORT MEDCouplingFieldDouble *operator/(const MEDCouplingFieldDouble& other) const throw(INTERP_KERNEL::Exception) { return DivideFields(this,&other); }
+    MEDCOUPLING_EXPORT MEDCouplingFieldDouble *operator/(const MEDCouplingFieldDouble& other) const { return DivideFields(this,&other); }
     MEDCOUPLING_EXPORT const MEDCouplingFieldDouble &operator/=(const MEDCouplingFieldDouble& other);
     MEDCOUPLING_EXPORT static MEDCouplingFieldDouble *DivideFields(const MEDCouplingFieldDouble *f1, const MEDCouplingFieldDouble *f2);
     MEDCOUPLING_EXPORT MEDCouplingFieldDouble *operator^(const MEDCouplingFieldDouble& other) const;
index 2e7c7ddefd9f7b628fc61e785f54e595857e75a4..8fbc9ef69a52081f2b838b443e3c5473867bf8e7 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2017  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 043bc0251b3883bd9b7b4ba4aa6665458aee6a93..276f99783c0a34a057ff039769668ffff8b18b29 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2017  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index f2b4bd089f8072c978f067ff8d4724e50db9f0ca..42aa53538f68c9dbea7ce4f3a206f3805942d827 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 60ab3deadaf40d241b5f764af266e327c79dcc49..f661334ddcd0784bc915aac5dfc24a5214951120 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 8f6ae5f010de492ec3fd2ed8b934854efa16ca09..b3e8c5f54c42ee15bf2e9c2e0fd2695c1538fcf5 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 3c9c0a9f0295ffb81f9dce58b5b0848025ebb857..8effb02bfdc7151332b94a634aa7cf77f5f9de58 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 933a577f117399e5cdb4ab5f90dbd7d8289e5f21..b1635504bad22d4cc71bb74b77e8221de6c94dcc 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016  CEA/DEN, EDF R&D
+// Copyright (C) 2016-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 7c5a2f6ab2fc89f3d99af24762b650c78c6ef0fa..7b8e53c4db7156542cf14c3337cfec67d0f6df36 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016  CEA/DEN, EDF R&D
+// Copyright (C) 2016-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index a9871a43dba95729246d7dfff5fd40a3fcbb8659..423593f40f98d59c9f20bd8cf3bd331d08273550 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 43a19c887b381345289aec6e4a8504af4cc9818b..c5c0986f563e15ed95b3697a36d112bf644ba256 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index e5a5a413c001768ce071bbc6d8253b671f8561c1..f5af4895b383b0f4c31873c8d9eed69538d6e93c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index feea93284a218e51adadd8b98f14f2df474c3652..6cd8595990c92694d0b053c8fb3b0c22df341077 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 6ba02d4a028c28aeb404120a8d67d4563977ee67..73017d575562a43a743564ccd787940ec458e4f0 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 362cb980339a5fbc26fc8b7499c267f2fd7d823c..df0972e7b9efc20e2fdb5190e29d4085bf4f2707 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -118,7 +118,7 @@ namespace MEDCoupling
     int _space_dim;
     double _origin[3];
     double _dxyz[3];
-    int _structure[3];
+    mcIdType _structure[3];
     std::string _axis_unit;
   };
 }
index 47c10f1ea369a9d30ac60b91b68ec1b4dd9c0ce6..afeabb2eb7ca425dc162a7c7b3f2b0ad161c3ca6 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 9a5b1cfe3b5a758ccee43bba97912aab4540c6c5..68b084a77ec7e80c10219bd9b148a9d5e25fccf1 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 1a43583ea11565804cc1b960a6d32088742fd419..6248b4ee6030231db020634fecbaa83ad6186e79 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index b20e45461af92cc112d645de3492b8395126abe7..b39cd225ebcd7e55b5920f9936808bd2b4602ab4 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 593b2eef196c409e297bcd78e53f334bcc49f56d..ec5d5da9eae2fc45083046793232e36cf2c144f7 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -132,8 +132,8 @@ namespace MEDCoupling
     MCAuto<MEDCouplingUMesh> _mesh2D;
     MCAuto<MEDCouplingUMesh> _mesh1D;
     //! New to old 3D cell Ids Array
-    MCAuto<DataArrayInt> _mesh3D_ids;
-    int _cell_2D_id;
+    MCAuto<DataArrayIdType> _mesh3D_ids;
+    mcIdType _cell_2D_id;
   };
 }
 
index 35cc14364150ce7daf830daa0c69b5e575b1d5a4..1045e260cd104afa2a2bd7ce3ddd4730c3761b3d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 221e67b3e32a6d9ec6b35f4c88fcc29306212754..c62272be1228738512797ffaef60d731bd0716d0 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 4c7fe25e9d8c8f923085005746b56da791374d25..9e7408f26d8141bf170762498708e0c0c11b7893 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -53,6 +53,8 @@ template class MEDCoupling::DataArrayIterator<double>;
 template class MEDCoupling::DataArrayIterator<int>;
 template class MEDCoupling::DataArrayDiscrete<Int32>;
 template class MEDCoupling::DataArrayDiscreteSigned<Int32>;
+template class MEDCoupling::DataArrayDiscrete<Int64>;
+template class MEDCoupling::DataArrayDiscreteSigned<Int64>;
 template class MEDCoupling::DataArrayTuple<int>;
 template class MEDCoupling::DataArrayTuple<double>;
 template class MEDCoupling::DataArrayTuple<float>;
@@ -884,27 +886,6 @@ bool DataArrayDouble::isMonotonic(bool increasing, double eps) const
     }
 }
 
-/*!
- * Returns a textual and human readable representation of \a this instance of
- * DataArrayDouble. This text is shown when a DataArrayDouble is printed in Python.
- * \return std::string - text describing \a this DataArrayDouble.
- *
- * \sa reprNotTooLong, reprZip
- */
-std::string DataArrayDouble::repr() const
-{
-  std::ostringstream ret;
-  reprStream(ret);
-  return ret.str();
-}
-
-std::string DataArrayDouble::reprZip() const
-{
-  std::ostringstream ret;
-  reprZipStream(ret);
-  return ret.str();
-}
-
 void DataArrayDouble::writeVTK(std::ostream& ofs, int indent, const std::string& nameInFile, DataArrayByte *byteArr) const
 {
   static const char SPACE[4]={' ',' ',' ',' '};
@@ -969,10 +950,10 @@ void DataArrayDouble::reprQuickOverview(std::ostream& stream) const
   stream << "DataArrayDouble C++ instance at " << this << ". ";
   if(isAllocated())
     {
-      int nbOfCompo=(int)_info_on_compo.size();
+      std::size_t nbOfCompo(_info_on_compo.size());
       if(nbOfCompo>=1)
         {
-          int nbOfTuples=getNumberOfTuples();
+          std::size_t nbOfTuples(getNumberOfTuples());
           stream << "Number of tuples : " << nbOfTuples << ". Number of components : " << nbOfCompo << "." << std::endl;
           reprQuickOverviewData(stream,MAX_NB_OF_BYTE_IN_REPR);
         }
@@ -3678,15 +3659,6 @@ DataArrayDouble *DataArrayDoubleTuple::buildDADouble(int nbOfTuples, int nbOfCom
   return this->buildDA(nbOfTuples,nbOfCompo);
 }
 
-/*!
- * Returns a new instance of DataArrayInt. The caller is to delete this array
- * using decrRef() as it is no more needed.
- */
-DataArrayInt *DataArrayInt::New()
-{
-  return new DataArrayInt;
-}
-
 /*!
  * Returns the only one value in \a this, if and only if number of elements
  * (nb of tuples * nb of components) is equal to 1, and that \a this is allocated.
@@ -3708,27 +3680,6 @@ int DataArrayInt::intValue() const
     throw INTERP_KERNEL::Exception("DataArrayInt::intValue : DataArrayInt instance is not allocated !");
 }
 
-/*!
- * Returns an integer value characterizing \a this array, which is useful for a quick
- * comparison of many instances of DataArrayInt.
- *  \return int - the hash value.
- *  \throw If \a this is not allocated.
- */
-int DataArrayInt::getHashCode() const
-{
-  checkAllocated();
-  std::size_t nbOfElems=getNbOfElems();
-  int ret=nbOfElems*65536;
-  int delta=3;
-  if(nbOfElems>48)
-    delta=nbOfElems/8;
-  int ret0=0;
-  const int *pt=begin();
-  for(std::size_t i=0;i<nbOfElems;i+=delta)
-    ret0+=pt[i] & 0x1FFF;
-  return ret+ret0;
-}
-
 /*!
  * Returns a full copy of \a this. For more info on copying data arrays see
  * \ref MEDCouplingArrayBasicsCopyDeep.
@@ -3739,143 +3690,6 @@ DataArrayInt32 *DataArrayInt32::deepCopy() const
   return new DataArrayInt32(*this);
 }
 
-/*!
- * Returns a textual and human readable representation of \a this instance of
- * DataArrayInt. This text is shown when a DataArrayInt is printed in Python.
- * \return std::string - text describing \a this DataArrayInt.
- *
- * \sa reprNotTooLong, reprZip
- */
-std::string DataArrayInt::repr() const
-{
-  std::ostringstream ret;
-  reprStream(ret);
-  return ret.str();
-}
-
-std::string DataArrayInt::reprZip() const
-{
-  std::ostringstream ret;
-  reprZipStream(ret);
-  return ret.str();
-}
-
-void DataArrayInt::writeVTK(std::ostream& ofs, int indent, const std::string& type, const std::string& nameInFile, DataArrayByte *byteArr) const
-{
-  static const char SPACE[4]={' ',' ',' ',' '};
-  checkAllocated();
-  std::string idt(indent,' ');
-  ofs << idt << "<DataArray type=\"" << type << "\" Name=\"" << nameInFile << "\" NumberOfComponents=\"" << getNumberOfComponents() << "\"";
-  if(byteArr)
-    {
-      ofs << " format=\"appended\" offset=\"" << byteArr->getNumberOfTuples() << "\">";
-      if(std::string(type)=="Int32")
-        {
-          const char *data(reinterpret_cast<const char *>(begin()));
-          std::size_t sz(getNbOfElems()*sizeof(int));
-          byteArr->insertAtTheEnd(data,data+sz);
-          byteArr->insertAtTheEnd(SPACE,SPACE+4);
-        }
-      else if(std::string(type)=="Int8")
-        {
-          INTERP_KERNEL::AutoPtr<char> tmp(new char[getNbOfElems()]);
-          std::copy(begin(),end(),(char *)tmp);
-          byteArr->insertAtTheEnd((char *)tmp,(char *)tmp+getNbOfElems());
-          byteArr->insertAtTheEnd(SPACE,SPACE+4);
-        }
-      else if(std::string(type)=="UInt8")
-        {
-          INTERP_KERNEL::AutoPtr<unsigned char> tmp(new unsigned char[getNbOfElems()]);
-          std::copy(begin(),end(),(unsigned char *)tmp);
-          byteArr->insertAtTheEnd((unsigned char *)tmp,(unsigned char *)tmp+getNbOfElems());
-          byteArr->insertAtTheEnd(SPACE,SPACE+4);
-        }
-      else
-        throw INTERP_KERNEL::Exception("DataArrayInt::writeVTK : Only Int32, Int8 and UInt8 supported !");
-    }
-  else
-    {
-      ofs << " RangeMin=\"" << getMinValueInArray() << "\" RangeMax=\"" << getMaxValueInArray() << "\" format=\"ascii\">\n" << idt;
-      std::copy(begin(),end(),std::ostream_iterator<int>(ofs," "));
-    }
-  ofs << std::endl << idt << "</DataArray>\n";
-}
-
-void DataArrayInt::reprCppStream(const std::string& varName, std::ostream& stream) const
-{
-  int nbTuples=getNumberOfTuples(),nbComp=getNumberOfComponents();
-  const int *data=getConstPointer();
-  stream << "DataArrayInt *" << varName << "=DataArrayInt::New();" << std::endl;
-  if(nbTuples*nbComp>=1)
-    {
-      stream << "const int " << varName << "Data[" << nbTuples*nbComp << "]={";
-      std::copy(data,data+nbTuples*nbComp-1,std::ostream_iterator<int>(stream,","));
-      stream << data[nbTuples*nbComp-1] << "};" << std::endl;
-      stream << varName << "->useArray(" << varName << "Data,false,CPP_DEALLOC," << nbTuples << "," << nbComp << ");" << std::endl;
-    }
-  else
-    stream << varName << "->alloc(" << nbTuples << "," << nbComp << ");" << std::endl;
-  stream << varName << "->setName(\"" << getName() << "\");" << std::endl;
-}
-
-/*!
- * Method that gives a quick overvien of \a this for python.
- */
-void DataArrayInt::reprQuickOverview(std::ostream& stream) const
-{
-  static const std::size_t MAX_NB_OF_BYTE_IN_REPR=300;
-  stream << "DataArrayInt C++ instance at " << this << ". ";
-  if(isAllocated())
-    {
-      int nbOfCompo=(int)_info_on_compo.size();
-      if(nbOfCompo>=1)
-        {
-          int nbOfTuples=getNumberOfTuples();
-          stream << "Number of tuples : " << nbOfTuples << ". Number of components : " << nbOfCompo << "." << std::endl;
-          reprQuickOverviewData(stream,MAX_NB_OF_BYTE_IN_REPR);
-        }
-      else
-        stream << "Number of components : 0.";
-    }
-  else
-    stream << "*** No data allocated ****";
-}
-
-void DataArrayInt::reprQuickOverviewData(std::ostream& stream, std::size_t maxNbOfByteInRepr) const
-{
-  const int *data=begin();
-  int nbOfTuples=getNumberOfTuples();
-  int nbOfCompo=(int)_info_on_compo.size();
-  std::ostringstream oss2; oss2 << "[";
-  std::string oss2Str(oss2.str());
-  bool isFinished=true;
-  for(int i=0;i<nbOfTuples && isFinished;i++)
-    {
-      if(nbOfCompo>1)
-        {
-          oss2 << "(";
-          for(int j=0;j<nbOfCompo;j++,data++)
-            {
-              oss2 << *data;
-              if(j!=nbOfCompo-1) oss2 << ", ";
-            }
-          oss2 << ")";
-        }
-      else
-        oss2 << *data++;
-      if(i!=nbOfTuples-1) oss2 << ", ";
-      std::string oss3Str(oss2.str());
-      if(oss3Str.length()<maxNbOfByteInRepr)
-        oss2Str=oss3Str;
-      else
-        isFinished=false;
-    }
-  stream << oss2Str;
-  if(!isFinished)
-    stream << "... ";
-  stream << "]";
-}
-
 /*!
  * Computes distribution of values of \a this one-dimensional array between given value
  * ranges (casts). This method is typically useful for entity number splitting by types,
@@ -4022,60 +3836,6 @@ bool DataArrayInt::isRange(int& strt, int& sttoopp, int& stteepp) const
     }
 }
 
-
-/*!
- * Modifies in place \a this one-dimensional array so that each value \a v = \a indArrBg[ \a v ],
- * i.e. a current value is used as in index to get a new value from \a indArrBg.
- *  \param [in] indArrBg - pointer to the first element of array of new values to assign
- *         to \a this array.
- *  \param [in] indArrEnd - specifies the end of the array \a indArrBg, so that
- *              the last value of \a indArrBg is \a indArrEnd[ -1 ].
- *  \throw If \a this->getNumberOfComponents() != 1
- *  \throw If any value of \a this can't be used as a valid index for
- *         [\a indArrBg, \a indArrEnd).
- *
- *  \sa changeValue, findIdForEach
- */
-void DataArrayInt::transformWithIndArr(const int *indArrBg, const int *indArrEnd)
-{
-  this->checkAllocated();
-  if(this->getNumberOfComponents()!=1)
-    throw INTERP_KERNEL::Exception("Call transformWithIndArr method on DataArrayInt with only one component, you can call 'rearrange' method before !");
-  int nbElemsIn((int)std::distance(indArrBg,indArrEnd)),nbOfTuples(getNumberOfTuples()),*pt(getPointer());
-  for(int i=0;i<nbOfTuples;i++,pt++)
-    {
-      if(*pt>=0 && *pt<nbElemsIn)
-        *pt=indArrBg[*pt];
-      else
-        {
-          std::ostringstream oss; oss << "DataArrayInt::transformWithIndArr : error on tuple #" << i << " of this value is " << *pt << ", should be in [0," << nbElemsIn << ") !";
-          throw INTERP_KERNEL::Exception(oss.str());
-        }
-    }
-  this->declareAsNew();
-}
-
-void DataArrayInt::transformWithIndArr(const MapKeyVal<int>& m)
-{
-  this->checkAllocated();
-  if(this->getNumberOfComponents()!=1)
-    throw INTERP_KERNEL::Exception("Call transformWithIndArr method on DataArrayInt with only one component, you can call 'rearrange' method before !");
-  const std::map<int,int>& dat(m.data());
-  int nbOfTuples(getNumberOfTuples()),*pt(getPointer());
-  for(int i=0;i<nbOfTuples;i++,pt++)
-    {
-      std::map<int,int>::const_iterator it(dat.find(*pt));
-      if(it!=dat.end())
-        *pt=(*it).second;
-      else
-        {
-          std::ostringstream oss; oss << "DataArrayInt::transformWithIndArr : error on tuple #" << i << " of this value is " << *pt << " not in map !";
-          throw INTERP_KERNEL::Exception(oss.str());
-        }
-    }
-  this->declareAsNew();
-}
-
 /*!
  * Creates a one-dimensional DataArrayInt (\a res) whose contents are computed from
  * values of \a this (\a a) and the given (\a indArr) arrays as follows:
@@ -4312,7 +4072,7 @@ DataArrayInt *DataArrayInt::checkAndPreparePermutation() const
   const int *pt=getConstPointer();
   int *pt2=CheckAndPreparePermutation(pt,pt+nbTuples);
   DataArrayInt *ret=DataArrayInt::New();
-  ret->useArray(pt2,true,C_DEALLOC,nbTuples,1);
+  ret->useArray(pt2,true,DeallocType::C_DEALLOC,nbTuples,1);
   return ret;
 }
 
@@ -4680,30 +4440,6 @@ DataArrayIntIterator *DataArrayInt::iterator()
   return new DataArrayIntIterator(this);
 }
 
-/*!
- * Creates a new DataArrayInt containing IDs (indices) of tuples holding value equal to a
- * given one. The ids are sorted in the ascending order.
- *  \param [in] val - the value to find within \a this.
- *  \return DataArrayInt * - a new instance of DataArrayInt. The caller is to delete this
- *          array using decrRef() as it is no more needed.
- *  \throw If \a this is not allocated.
- *  \throw If \a this->getNumberOfComponents() != 1.
- *  \sa DataArrayInt::findIdsEqualTuple
- */
-DataArrayInt *DataArrayInt::findIdsEqual(int val) const
-{
-  checkAllocated();
-  if(getNumberOfComponents()!=1)
-    throw INTERP_KERNEL::Exception("DataArrayInt::findIdsEqual : the array must have only one component, you can call 'rearrange' method before !");
-  const int *cptr(getConstPointer());
-  MCAuto<DataArrayInt> ret(DataArrayInt::New()); ret->alloc(0,1);
-  int nbOfTuples=getNumberOfTuples();
-  for(int i=0;i<nbOfTuples;i++,cptr++)
-    if(*cptr==val)
-      ret->pushBackSilent(i);
-  return ret.retn();
-}
-
 /*!
  * Creates a new DataArrayInt containing IDs (indices) of tuples holding value \b not
  * equal to a given one.
@@ -6041,7 +5777,7 @@ void DataArrayInt::computeOffsetsFull()
   ret[0]=0;
   for(int i=0;i<nbOfTuples;i++)
     ret[i+1]=work[i]+ret[i];
-  useArray(ret,true,C_DEALLOC,nbOfTuples+1,1);
+  useArray(ret,true,DeallocType::C_DEALLOC,nbOfTuples+1,1);
   declareAsNew();
 }
 
@@ -6744,6 +6480,424 @@ void DataArrayInt::powEqual(const DataArrayInt *other)
   declareAsNew();
 }
 
+/*!
+ * This method works on a pair input (\b arrIn, \b arrIndxIn) where \b arrIn indexes is in \b arrIndxIn
+ * (\ref numbering-indirect).
+ * This method returns the result of the extraction ( specified by a set of ids in [\b idsOfSelectBg , \b idsOfSelectEnd ) ).
+ * The selection of extraction is done standardly in new2old format.
+ * This method returns indexed arrays (\ref numbering-indirect) using 2 arrays (arrOut,arrIndexOut).
+ *
+ * \param [in] idsOfSelectBg begin of set of ids of the input extraction (included)
+ * \param [in] idsOfSelectEnd end of set of ids of the input extraction (excluded)
+ * \param [in] arrIn arr origin array from which the extraction will be done.
+ * \param [in] arrIndxIn is the input index array allowing to walk into \b arrIn
+ * \param [out] arrOut the resulting array
+ * \param [out] arrIndexOut the index array of the resulting array \b arrOut
+ * \sa DataArrayInt::ExtractFromIndexedArraysSlice
+ */
+void DataArrayInt::ExtractFromIndexedArrays(const int *idsOfSelectBg, const int *idsOfSelectEnd, const DataArrayInt *arrIn, const DataArrayInt *arrIndxIn,
+                                                DataArrayInt* &arrOut, DataArrayInt* &arrIndexOut)
+{
+  if(!arrIn || !arrIndxIn)
+    throw INTERP_KERNEL::Exception("DataArrayInt::ExtractFromIndexedArrays : input pointer is NULL !");
+  arrIn->checkAllocated(); arrIndxIn->checkAllocated();
+  if(arrIn->getNumberOfComponents()!=1 || arrIndxIn->getNumberOfComponents()!=1)
+    throw INTERP_KERNEL::Exception("DataArrayInt::ExtractFromIndexedArrays : input arrays must have exactly one component !");
+  std::size_t sz=std::distance(idsOfSelectBg,idsOfSelectEnd);
+  const int *arrInPtr=arrIn->begin();
+  const int *arrIndxPtr=arrIndxIn->begin();
+  int nbOfGrps=arrIndxIn->getNumberOfTuples()-1;
+  if(nbOfGrps<0)
+    throw INTERP_KERNEL::Exception("DataArrayInt::ExtractFromIndexedArrays : The format of \"arrIndxIn\" is invalid ! Its nb of tuples should be >=1 !");
+  int maxSizeOfArr=arrIn->getNumberOfTuples();
+  MCAuto<DataArrayInt> arro=DataArrayInt::New();
+  MCAuto<DataArrayInt> arrIo=DataArrayInt::New();
+  arrIo->alloc((int)(sz+1),1);
+  const int *idsIt=idsOfSelectBg;
+  int *work=arrIo->getPointer();
+  *work++=0;
+  int lgth=0;
+  for(std::size_t i=0;i<sz;i++,work++,idsIt++)
+    {
+      if(*idsIt>=0 && *idsIt<nbOfGrps)
+        lgth+=arrIndxPtr[*idsIt+1]-arrIndxPtr[*idsIt];
+      else
+        {
+          std::ostringstream oss; oss << "DataArrayInt::ExtractFromIndexedArrays : id located on pos #" << i << " value is " << *idsIt << " ! Must be in [0," << nbOfGrps << ") !";
+          throw INTERP_KERNEL::Exception(oss.str());
+        }
+      if(lgth>=work[-1])
+        *work=lgth;
+      else
+        {
+          std::ostringstream oss; oss << "DataArrayInt::ExtractFromIndexedArrays : id located on pos #" << i << " value is " << *idsIt << " and at this pos arrIndxIn[" << *idsIt;
+          oss << "+1]-arrIndxIn[" << *idsIt << "] < 0 ! The input index array is bugged !";
+          throw INTERP_KERNEL::Exception(oss.str());
+        }
+    }
+  arro->alloc(lgth,1);
+  work=arro->getPointer();
+  idsIt=idsOfSelectBg;
+  for(std::size_t i=0;i<sz;i++,idsIt++)
+    {
+      if(arrIndxPtr[*idsIt]>=0 && arrIndxPtr[*idsIt+1]<=maxSizeOfArr)
+        work=std::copy(arrInPtr+arrIndxPtr[*idsIt],arrInPtr+arrIndxPtr[*idsIt+1],work);
+      else
+        {
+          std::ostringstream oss; oss << "DataArrayInt::ExtractFromIndexedArrays : id located on pos #" << i << " value is " << *idsIt << " arrIndx[" << *idsIt << "] must be >= 0 and arrIndx[";
+          oss << *idsIt << "+1] <= " << maxSizeOfArr << " (the size of arrIn)!";
+          throw INTERP_KERNEL::Exception(oss.str());
+        }
+    }
+  arrOut=arro.retn();
+  arrIndexOut=arrIo.retn();
+}
+
+/*!
+ * This method works on a pair input (\b arrIn, \b arrIndxIn) where \b arrIn indexes is in \b arrIndxIn
+ * (\ref numbering-indirect).
+ * This method returns the result of the extraction ( specified by a set of ids with a slice given by \a idsOfSelectStart, \a idsOfSelectStop and \a idsOfSelectStep ).
+ * The selection of extraction is done standardly in new2old format.
+ * This method returns indexed arrays (\ref numbering-indirect) using 2 arrays (arrOut,arrIndexOut).
+ *
+ * \param [in] idsOfSelectStart begin of set of ids of the input extraction (included)
+ * \param [in] idsOfSelectStop end of set of ids of the input extraction (excluded)
+ * \param [in] idsOfSelectStep
+ * \param [in] arrIn arr origin array from which the extraction will be done.
+ * \param [in] arrIndxIn is the input index array allowing to walk into \b arrIn
+ * \param [out] arrOut the resulting array
+ * \param [out] arrIndexOut the index array of the resulting array \b arrOut
+ * \sa DataArrayInt::ExtractFromIndexedArrays
+ */
+void DataArrayInt::ExtractFromIndexedArraysSlice(int idsOfSelectStart, int idsOfSelectStop, int idsOfSelectStep, const DataArrayInt *arrIn, const DataArrayInt *arrIndxIn,
+                                                 DataArrayInt* &arrOut, DataArrayInt* &arrIndexOut)
+{
+  if(!arrIn || !arrIndxIn)
+    throw INTERP_KERNEL::Exception("DataArrayInt::ExtractFromIndexedArraysSlice : input pointer is NULL !");
+  arrIn->checkAllocated(); arrIndxIn->checkAllocated();
+  if(arrIn->getNumberOfComponents()!=1 || arrIndxIn->getNumberOfComponents()!=1)
+    throw INTERP_KERNEL::Exception("DataArrayInt::ExtractFromIndexedArraysSlice : input arrays must have exactly one component !");
+  int sz=DataArrayInt::GetNumberOfItemGivenBESRelative(idsOfSelectStart,idsOfSelectStop,idsOfSelectStep,"MEDCouplingUMesh::ExtractFromIndexedArraysSlice : Input slice ");
+  const int *arrInPtr=arrIn->begin();
+  const int *arrIndxPtr=arrIndxIn->begin();
+  int nbOfGrps=arrIndxIn->getNumberOfTuples()-1;
+  if(nbOfGrps<0)
+    throw INTERP_KERNEL::Exception("DataArrayInt::ExtractFromIndexedArraysSlice : The format of \"arrIndxIn\" is invalid ! Its nb of tuples should be >=1 !");
+  int maxSizeOfArr=arrIn->getNumberOfTuples();
+  MCAuto<DataArrayInt> arro=DataArrayInt::New();
+  MCAuto<DataArrayInt> arrIo=DataArrayInt::New();
+  arrIo->alloc((int)(sz+1),1);
+  int idsIt=idsOfSelectStart;
+  int *work=arrIo->getPointer();
+  *work++=0;
+  int lgth=0;
+  for(int i=0;i<sz;i++,work++,idsIt+=idsOfSelectStep)
+    {
+      if(idsIt>=0 && idsIt<nbOfGrps)
+        lgth+=arrIndxPtr[idsIt+1]-arrIndxPtr[idsIt];
+      else
+        {
+          std::ostringstream oss; oss << "DataArrayInt::ExtractFromIndexedArraysSlice : id located on pos #" << i << " value is " << idsIt << " ! Must be in [0," << nbOfGrps << ") !";
+          throw INTERP_KERNEL::Exception(oss.str());
+        }
+      if(lgth>=work[-1])
+        *work=lgth;
+      else
+        {
+          std::ostringstream oss; oss << "DataArrayInt::ExtractFromIndexedArraysSlice : id located on pos #" << i << " value is " << idsIt << " and at this pos arrIndxIn[" << idsIt;
+          oss << "+1]-arrIndxIn[" << idsIt << "] < 0 ! The input index array is bugged !";
+          throw INTERP_KERNEL::Exception(oss.str());
+        }
+    }
+  arro->alloc(lgth,1);
+  work=arro->getPointer();
+  idsIt=idsOfSelectStart;
+  for(int i=0;i<sz;i++,idsIt+=idsOfSelectStep)
+    {
+      if(arrIndxPtr[idsIt]>=0 && arrIndxPtr[idsIt+1]<=maxSizeOfArr)
+        work=std::copy(arrInPtr+arrIndxPtr[idsIt],arrInPtr+arrIndxPtr[idsIt+1],work);
+      else
+        {
+          std::ostringstream oss; oss << "DataArrayInt::ExtractFromIndexedArraysSlice : id located on pos #" << i << " value is " << idsIt << " arrIndx[" << idsIt << "] must be >= 0 and arrIndx[";
+          oss << idsIt << "+1] <= " << maxSizeOfArr << " (the size of arrIn)!";
+          throw INTERP_KERNEL::Exception(oss.str());
+        }
+    }
+  arrOut=arro.retn();
+  arrIndexOut=arrIo.retn();
+}
+
+/*!
+ * This method works on an input pair (\b arrIn, \b arrIndxIn) where \b arrIn indexes is in \b arrIndxIn.
+ * This method builds an output pair (\b arrOut,\b arrIndexOut) that is a copy from \b arrIn for all cell ids \b not \b in [ \b idsOfSelectBg , \b idsOfSelectEnd ) and for
+ * cellIds \b in [ \b idsOfSelectBg , \b idsOfSelectEnd ) a copy coming from the corresponding values in input pair (\b srcArr, \b srcArrIndex).
+ * This method is an generalization of MEDCouplingUMesh::SetPartOfIndexedArraysSameIdx that performs the same thing but by without building explicitly a result output arrays.
+ *
+ * \param [in] idsOfSelectBg begin of set of ids of the input extraction (included)
+ * \param [in] idsOfSelectEnd end of set of ids of the input extraction (excluded)
+ * \param [in] arrIn arr origin array from which the extraction will be done.
+ * \param [in] arrIndxIn is the input index array allowing to walk into \b arrIn
+ * \param [in] srcArr input array that will be used as source of copy for ids in [ \b idsOfSelectBg, \b idsOfSelectEnd )
+ * \param [in] srcArrIndex index array of \b srcArr
+ * \param [out] arrOut the resulting array
+ * \param [out] arrIndexOut the index array of the resulting array \b arrOut
+ *
+ * \sa DataArrayInt::SetPartOfIndexedArraysSameIdx
+ */
+void DataArrayInt::SetPartOfIndexedArrays(const int *idsOfSelectBg, const int *idsOfSelectEnd, const DataArrayInt *arrIn, const DataArrayInt *arrIndxIn,
+                                              const DataArrayInt *srcArr, const DataArrayInt *srcArrIndex,
+                                              DataArrayInt* &arrOut, DataArrayInt* &arrIndexOut)
+{
+  if(arrIn==0 || arrIndxIn==0 || srcArr==0 || srcArrIndex==0)
+    throw INTERP_KERNEL::Exception("DataArrayInt::SetPartOfIndexedArrays : presence of null pointer in input parameter !");
+  MCAuto<DataArrayInt> arro=DataArrayInt::New();
+  MCAuto<DataArrayInt> arrIo=DataArrayInt::New();
+  int nbOfTuples=arrIndxIn->getNumberOfTuples()-1;
+  std::vector<bool> v(nbOfTuples,true);
+  int offset=0;
+  const int *arrIndxInPtr=arrIndxIn->begin();
+  const int *srcArrIndexPtr=srcArrIndex->begin();
+  for(const int *it=idsOfSelectBg;it!=idsOfSelectEnd;it++,srcArrIndexPtr++)
+    {
+      if(*it>=0 && *it<nbOfTuples)
+        {
+          v[*it]=false;
+          offset+=(srcArrIndexPtr[1]-srcArrIndexPtr[0])-(arrIndxInPtr[*it+1]-arrIndxInPtr[*it]);
+        }
+      else
+        {
+          std::ostringstream oss; oss << "DataArrayInt::SetPartOfIndexedArrays : On pos #" << std::distance(idsOfSelectBg,it) << " value is " << *it << " not in [0," << nbOfTuples << ") !";
+          throw INTERP_KERNEL::Exception(oss.str());
+        }
+    }
+  srcArrIndexPtr=srcArrIndex->begin();
+  arrIo->alloc(nbOfTuples+1,1);
+  arro->alloc(arrIn->getNumberOfTuples()+offset,1);
+  const int *arrInPtr=arrIn->begin();
+  const int *srcArrPtr=srcArr->begin();
+  int *arrIoPtr=arrIo->getPointer(); *arrIoPtr++=0;
+  int *arroPtr=arro->getPointer();
+  for(int ii=0;ii<nbOfTuples;ii++,arrIoPtr++)
+    {
+      if(v[ii])
+        {
+          arroPtr=std::copy(arrInPtr+arrIndxInPtr[ii],arrInPtr+arrIndxInPtr[ii+1],arroPtr);
+          *arrIoPtr=arrIoPtr[-1]+(arrIndxInPtr[ii+1]-arrIndxInPtr[ii]);
+        }
+      else
+        {
+          std::size_t pos=std::distance(idsOfSelectBg,std::find(idsOfSelectBg,idsOfSelectEnd,ii));
+          arroPtr=std::copy(srcArrPtr+srcArrIndexPtr[pos],srcArrPtr+srcArrIndexPtr[pos+1],arroPtr);
+          *arrIoPtr=arrIoPtr[-1]+(srcArrIndexPtr[pos+1]-srcArrIndexPtr[pos]);
+        }
+    }
+  arrOut=arro.retn();
+  arrIndexOut=arrIo.retn();
+}
+
+
+/*!
+ * This method works on an input pair (\b arrIn, \b arrIndxIn) where \b arrIn indexes is in \b arrIndxIn.
+ * This method builds an output pair (\b arrOut,\b arrIndexOut) that is a copy from \b arrIn for all cell ids \b not \b in [ \b idsOfSelectBg , \b idsOfSelectEnd ) and for
+ * cellIds \b in [\b idsOfSelectBg, \b idsOfSelectEnd) a copy coming from the corresponding values in input pair (\b srcArr, \b srcArrIndex).
+ * This method is an generalization of DataArrayInt::SetPartOfIndexedArraysSameIdx that performs the same thing but by without building explicitly a result output arrays.
+ *
+ * \param [in] start begin of set of ids of the input extraction (included)
+ * \param [in] end end of set of ids of the input extraction (excluded)
+ * \param [in] step step of the set of ids in range mode.
+ * \param [in] arrIn arr origin array from which the extraction will be done.
+ * \param [in] arrIndxIn is the input index array allowing to walk into \b arrIn
+ * \param [in] srcArr input array that will be used as source of copy for ids in [\b idsOfSelectBg, \b idsOfSelectEnd)
+ * \param [in] srcArrIndex index array of \b srcArr
+ * \param [out] arrOut the resulting array
+ * \param [out] arrIndexOut the index array of the resulting array \b arrOut
+ *
+ * \sa DataArrayInt::SetPartOfIndexedArraysSameIdx DataArrayInt::SetPartOfIndexedArrays
+ */
+void DataArrayInt::SetPartOfIndexedArraysSlice(int start, int end, int step, const DataArrayInt *arrIn, const DataArrayInt *arrIndxIn,
+                                               const DataArrayInt *srcArr, const DataArrayInt *srcArrIndex,
+                                               DataArrayInt* &arrOut, DataArrayInt* &arrIndexOut)
+{
+  if(arrIn==0 || arrIndxIn==0 || srcArr==0 || srcArrIndex==0)
+    throw INTERP_KERNEL::Exception("DataArrayInt::SetPartOfIndexedArraysSlice : presence of null pointer in input parameter !");
+  MCAuto<DataArrayInt> arro=DataArrayInt::New();
+  MCAuto<DataArrayInt> arrIo=DataArrayInt::New();
+  int nbOfTuples=arrIndxIn->getNumberOfTuples()-1;
+  int offset=0;
+  const int *arrIndxInPtr=arrIndxIn->begin();
+  const int *srcArrIndexPtr=srcArrIndex->begin();
+  int nbOfElemsToSet=DataArray::GetNumberOfItemGivenBESRelative(start,end,step,"DataArrayInt::SetPartOfIndexedArraysSlice : ");
+  int it=start;
+  for(int i=0;i<nbOfElemsToSet;i++,srcArrIndexPtr++,it+=step)
+    {
+      if(it>=0 && it<nbOfTuples)
+        offset+=(srcArrIndexPtr[1]-srcArrIndexPtr[0])-(arrIndxInPtr[it+1]-arrIndxInPtr[it]);
+      else
+        {
+          std::ostringstream oss; oss << "DataArrayInt::SetPartOfIndexedArraysSlice : On pos #" << i << " value is " << it << " not in [0," << nbOfTuples << ") !";
+          throw INTERP_KERNEL::Exception(oss.str());
+        }
+    }
+  srcArrIndexPtr=srcArrIndex->begin();
+  arrIo->alloc(nbOfTuples+1,1);
+  arro->alloc(arrIn->getNumberOfTuples()+offset,1);
+  const int *arrInPtr=arrIn->begin();
+  const int *srcArrPtr=srcArr->begin();
+  int *arrIoPtr=arrIo->getPointer(); *arrIoPtr++=0;
+  int *arroPtr=arro->getPointer();
+  for(int ii=0;ii<nbOfTuples;ii++,arrIoPtr++)
+    {
+      int pos=DataArray::GetPosOfItemGivenBESRelativeNoThrow(ii,start,end,step);
+      if(pos<0)
+        {
+          arroPtr=std::copy(arrInPtr+arrIndxInPtr[ii],arrInPtr+arrIndxInPtr[ii+1],arroPtr);
+          *arrIoPtr=arrIoPtr[-1]+(arrIndxInPtr[ii+1]-arrIndxInPtr[ii]);
+        }
+      else
+        {
+          arroPtr=std::copy(srcArrPtr+srcArrIndexPtr[pos],srcArrPtr+srcArrIndexPtr[pos+1],arroPtr);
+          *arrIoPtr=arrIoPtr[-1]+(srcArrIndexPtr[pos+1]-srcArrIndexPtr[pos]);
+        }
+    }
+  arrOut=arro.retn();
+  arrIndexOut=arrIo.retn();
+}
+
+
+/*!
+ * This method works on an input pair (\b arrIn, \b arrIndxIn) where \b arrIn indexes is in \b arrIndxIn.
+ * This method is an specialization of MEDCouplingUMesh::SetPartOfIndexedArrays in the case of assignment do not modify the index in \b arrIndxIn.
+ *
+ * \param [in] idsOfSelectBg begin of set of ids of the input extraction (included)
+ * \param [in] idsOfSelectEnd end of set of ids of the input extraction (excluded)
+ * \param [in,out] arrInOut arr origin array from which the extraction will be done.
+ * \param [in] arrIndxIn is the input index array allowing to walk into \b arrIn
+ * \param [in] srcArr input array that will be used as source of copy for ids in [ \b idsOfSelectBg , \b idsOfSelectEnd )
+ * \param [in] srcArrIndex index array of \b srcArr
+ *
+ * \sa DataArrayInt::SetPartOfIndexedArrays
+ */
+void DataArrayInt::SetPartOfIndexedArraysSameIdx(const int *idsOfSelectBg, const int *idsOfSelectEnd, DataArrayInt *arrInOut, const DataArrayInt *arrIndxIn,
+                                                     const DataArrayInt *srcArr, const DataArrayInt *srcArrIndex)
+{
+  if(arrInOut==0 || arrIndxIn==0 || srcArr==0 || srcArrIndex==0)
+    throw INTERP_KERNEL::Exception("DataArrayInt::SetPartOfIndexedArraysSameIdx : presence of null pointer in input parameter !");
+  int nbOfTuples=arrIndxIn->getNumberOfTuples()-1;
+  const int *arrIndxInPtr=arrIndxIn->begin();
+  const int *srcArrIndexPtr=srcArrIndex->begin();
+  int *arrInOutPtr=arrInOut->getPointer();
+  const int *srcArrPtr=srcArr->begin();
+  for(const int *it=idsOfSelectBg;it!=idsOfSelectEnd;it++,srcArrIndexPtr++)
+    {
+      if(*it>=0 && *it<nbOfTuples)
+        {
+          if(srcArrIndexPtr[1]-srcArrIndexPtr[0]==arrIndxInPtr[*it+1]-arrIndxInPtr[*it])
+            std::copy(srcArrPtr+srcArrIndexPtr[0],srcArrPtr+srcArrIndexPtr[1],arrInOutPtr+arrIndxInPtr[*it]);
+          else
+            {
+              std::ostringstream oss; oss << "DataArrayInt::SetPartOfIndexedArraysSameIdx : On pos #" << std::distance(idsOfSelectBg,it) << " id (idsOfSelectBg[" << std::distance(idsOfSelectBg,it)<< "]) is " << *it << " arrIndxIn[id+1]-arrIndxIn[id]!=srcArrIndex[pos+1]-srcArrIndex[pos] !";
+              throw INTERP_KERNEL::Exception(oss.str());
+            }
+        }
+      else
+        {
+          std::ostringstream oss; oss << "DataArrayInt::SetPartOfIndexedArraysSameIdx : On pos #" << std::distance(idsOfSelectBg,it) << " value is " << *it << " not in [0," << nbOfTuples << ") !";
+          throw INTERP_KERNEL::Exception(oss.str());
+        }
+    }
+}
+
+/*!
+ * This method works on an input pair (\b arr, \b arrIndx) where \b arr indexes is in \b arrIndx.
+ * This method will not impact the size of inout parameter \b arrIndx but the size of \b arr will be modified in case of suppression.
+ *
+ * \param [in] idsToRemoveBg begin of set of ids to remove in \b arr (included)
+ * \param [in] idsToRemoveEnd end of set of ids to remove in \b arr (excluded)
+ * \param [in,out] arr array in which the remove operation will be done.
+ * \param [in,out] arrIndx array in the remove operation will modify
+ * \param [in] offsetForRemoval (by default 0) offset so that for each i in [0,arrIndx->getNumberOfTuples()-1) removal process will be performed in the following range [arr+arrIndx[i]+offsetForRemoval,arr+arr[i+1])
+ * \return true if \b arr and \b arrIndx have been modified, false if not.
+ */
+bool DataArrayInt::RemoveIdsFromIndexedArrays(const int *idsToRemoveBg, const int *idsToRemoveEnd, DataArrayInt *arr, DataArrayInt *arrIndx, int offsetForRemoval)
+{
+  if(!arrIndx || !arr)
+    throw INTERP_KERNEL::Exception("DataArrayInt::RemoveIdsFromIndexedArrays : some input arrays are empty !");
+  if(offsetForRemoval<0)
+    throw INTERP_KERNEL::Exception("DataArrayInt::RemoveIdsFromIndexedArrays : offsetForRemoval should be >=0 !");
+  std::set<int> s(idsToRemoveBg,idsToRemoveEnd);
+  int nbOfGrps=arrIndx->getNumberOfTuples()-1;
+  int *arrIPtr=arrIndx->getPointer();
+  *arrIPtr++=0;
+  int previousArrI=0;
+  const int *arrPtr=arr->begin();
+  std::vector<int> arrOut;//no utility to switch to DataArrayInt because copy always needed
+  for(int i=0;i<nbOfGrps;i++,arrIPtr++)
+    {
+      if(*arrIPtr-previousArrI>offsetForRemoval)
+        {
+          for(const int *work=arrPtr+previousArrI+offsetForRemoval;work!=arrPtr+*arrIPtr;work++)
+            {
+              if(s.find(*work)==s.end())
+                arrOut.push_back(*work);
+            }
+        }
+      previousArrI=*arrIPtr;
+      *arrIPtr=(int)arrOut.size();
+    }
+  if(arr->getNumberOfTuples()==arrOut.size())
+    return false;
+  arr->alloc((int)arrOut.size(),1);
+  std::copy(arrOut.begin(),arrOut.end(),arr->getPointer());
+  return true;
+}
+
+/*!
+ * This method works on an input pair (\b arrIn, \b arrIndxIn) where \b arrIn indexes is in \b arrIndxIn.
+ * This method is an specialization of MEDCouplingUMesh::SetPartOfIndexedArrays in the case of assignment do not modify the index in \b arrIndxIn.
+ *
+ * \param [in] start begin of set of ids of the input extraction (included)
+ * \param [in] end end of set of ids of the input extraction (excluded)
+ * \param [in] step step of the set of ids in range mode.
+ * \param [in,out] arrInOut arr origin array from which the extraction will be done.
+ * \param [in] arrIndxIn is the input index array allowing to walk into \b arrIn
+ * \param [in] srcArr input array that will be used as source of copy for ids in [\b idsOfSelectBg, \b idsOfSelectEnd)
+ * \param [in] srcArrIndex index array of \b srcArr
+ *
+ * \sa DataArrayInt::SetPartOfIndexedArraysSlice DataArrayInt::SetPartOfIndexedArraysSameIdx
+ */
+void DataArrayInt::SetPartOfIndexedArraysSameIdxSlice(int start, int end, int step, DataArrayInt *arrInOut, const DataArrayInt *arrIndxIn,
+                                                      const DataArrayInt *srcArr, const DataArrayInt *srcArrIndex)
+{
+  if(arrInOut==0 || arrIndxIn==0 || srcArr==0 || srcArrIndex==0)
+    throw INTERP_KERNEL::Exception("DataArrayInt::SetPartOfIndexedArraysSameIdxSlice : presence of null pointer in input parameter !");
+  int nbOfTuples=arrIndxIn->getNumberOfTuples()-1;
+  const int *arrIndxInPtr=arrIndxIn->begin();
+  const int *srcArrIndexPtr=srcArrIndex->begin();
+  int *arrInOutPtr=arrInOut->getPointer();
+  const int *srcArrPtr=srcArr->begin();
+  int nbOfElemsToSet=DataArray::GetNumberOfItemGivenBESRelative(start,end,step,"DataArrayInt::SetPartOfIndexedArraysSameIdxSlice : ");
+  int it=start;
+  for(int i=0;i<nbOfElemsToSet;i++,srcArrIndexPtr++,it+=step)
+    {
+      if(it>=0 && it<nbOfTuples)
+        {
+          if(srcArrIndexPtr[1]-srcArrIndexPtr[0]==arrIndxInPtr[it+1]-arrIndxInPtr[it])
+            std::copy(srcArrPtr+srcArrIndexPtr[0],srcArrPtr+srcArrIndexPtr[1],arrInOutPtr+arrIndxInPtr[it]);
+          else
+            {
+              std::ostringstream oss; oss << "DataArrayInt::SetPartOfIndexedArraysSameIdxSlice : On pos #" << i << " id (idsOfSelectBg[" << i << "]) is " << it << " arrIndxIn[id+1]-arrIndxIn[id]!=srcArrIndex[pos+1]-srcArrIndex[pos] !";
+              throw INTERP_KERNEL::Exception(oss.str());
+            }
+        }
+      else
+        {
+          std::ostringstream oss; oss << "DataArrayInt::SetPartOfIndexedArraysSameIdxSlice : On pos #" << i << " value is " << it << " not in [0," << nbOfTuples << ") !";
+          throw INTERP_KERNEL::Exception(oss.str());
+        }
+    }
+}
+
+
 /*!
  * Returns a C array which is a renumbering map in "Old to New" mode for the input array.
  * This map, if applied to \a start array, would make it sorted. For example, if
@@ -6916,3 +7070,8 @@ DataArrayInt *DataArrayIntTuple::buildDAInt(int nbOfTuples, int nbOfCompo) const
 {
   return this->buildDA(nbOfTuples,nbOfCompo);
 }
+
+DataArrayInt64 *DataArrayInt64::deepCopy() const
+{
+  return new DataArrayInt64(*this);
+}
index 3cc84df020426f67f8d65f08ebe5b912ea745752..15038c267b767ec0de3fb4ae249c871c7eace77b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -112,6 +112,7 @@ namespace MEDCoupling
   public:
     MEDCOUPLING_EXPORT static void CPPDeallocator(void *pt, void *param);
     MEDCOUPLING_EXPORT static void CDeallocator(void *pt, void *param);
+    MEDCOUPLING_EXPORT static void COffsetDeallocator(void *pt, void *param);
   private:
     static void DestroyPointer(T *pt, Deallocator dealloc, void *param);
     static Deallocator BuildFromType(DeallocType type);
@@ -245,7 +246,7 @@ namespace MEDCoupling
     MEDCOUPLING_EXPORT void setIJSilent(int tupleId, int compoId, T newVal) { _mem[tupleId*_info_on_compo.size()+compoId]=newVal; }
     MEDCOUPLING_EXPORT T *getPointer() { return _mem.getPointer(); declareAsNew(); }
     MEDCOUPLING_EXPORT void pack() const;
-    MEDCOUPLING_EXPORT bool isAllocated() const;
+    MEDCOUPLING_EXPORT bool isAllocated() const override;
     MEDCOUPLING_EXPORT void checkAllocated() const;
     MEDCOUPLING_EXPORT void desallocate();
     MEDCOUPLING_EXPORT void reserve(std::size_t nbOfElems);
@@ -301,8 +302,8 @@ namespace MEDCoupling
     MEDCOUPLING_EXPORT MemArray<T>& accessToMemArray() { return _mem; }
     MEDCOUPLING_EXPORT const MemArray<T>& accessToMemArray() const { return _mem; }
   protected:
-    typename Traits<T>::ArrayType *mySelectByTupleId(const int *new2OldBg, const int *new2OldEnd) const;
-    typename Traits<T>::ArrayType *mySelectByTupleId(const DataArrayInt32& di) const;
+    typename Traits<T>::ArrayType *mySelectByTupleId(const mcIdType *new2OldBg, const mcIdType *new2OldEnd) const;
+    typename Traits<T>::ArrayType *mySelectByTupleId(const DataArrayIdType& di) const;
     typename Traits<T>::ArrayType *mySelectByTupleIdSafe(const int *new2OldBg, const int *new2OldEnd) const;
     typename Traits<T>::ArrayType *myKeepSelectedComponents(const std::vector<int>& compoIds) const;
     typename Traits<T>::ArrayType *mySelectByTupleIdSafeSlice(int bg, int end2, int step) const;
@@ -352,6 +353,8 @@ namespace MEDCoupling
     MEDCOUPLING_EXPORT void reprWithoutNameStream(std::ostream& stream) const;
     MEDCOUPLING_EXPORT void reprZipWithoutNameStream(std::ostream& stream) const;
     MEDCOUPLING_EXPORT void reprNotTooLongWithoutNameStream(std::ostream& stream) const;
+    MEDCOUPLING_EXPORT std::string repr() const;
+    MEDCOUPLING_EXPORT std::string reprZip() const;
     MEDCOUPLING_EXPORT std::string reprNotTooLong() const;
     template<class U>
     MCAuto< typename Traits<U>::ArrayType > convertToOtherTypeOfArr() const;
@@ -384,7 +387,7 @@ namespace MEDCoupling
     MEDCOUPLING_EXPORT DataArrayFloat *buildNewEmptyInstance() const { return DataArrayFloat::New(); }
     MEDCOUPLING_EXPORT DataArrayFloat *selectByTupleRanges(const std::vector<std::pair<int,int> >& ranges) const { return DataArrayTemplateFP<float>::mySelectByTupleRanges(ranges); }
     MEDCOUPLING_EXPORT DataArrayFloat *keepSelectedComponents(const std::vector<int>& compoIds) const { return DataArrayTemplateFP<float>::myKeepSelectedComponents(compoIds); }
-    MEDCOUPLING_EXPORT DataArrayFloat *selectByTupleId(const int *new2OldBg, const int *new2OldEnd) const { return DataArrayTemplateFP<float>::mySelectByTupleId(new2OldBg,new2OldEnd); }
+    MEDCOUPLING_EXPORT DataArrayFloat *selectByTupleId(const mcIdType *new2OldBg, const mcIdType *new2OldEnd) const { return this->mySelectByTupleId(new2OldBg,new2OldEnd); }
     MEDCOUPLING_EXPORT DataArrayFloat *selectByTupleIdSafe(const int *new2OldBg, const int *new2OldEnd) const { return DataArrayTemplateFP<float>::mySelectByTupleIdSafe(new2OldBg,new2OldEnd); }
     MEDCOUPLING_EXPORT DataArrayFloat *selectByTupleIdSafeSlice(int bg, int end2, int step) const { return DataArrayTemplateFP<float>::mySelectByTupleIdSafeSlice(bg,end2,step); }
     MEDCOUPLING_EXPORT void reprCppStream(const std::string& varName, std::ostream& stream) const;
@@ -414,8 +417,6 @@ namespace MEDCoupling
     MEDCOUPLING_EXPORT DataArrayDouble *buildNewEmptyInstance() const { return DataArrayDouble::New(); }
     MEDCOUPLING_EXPORT void checkMonotonic(bool increasing, double eps) const;
     MEDCOUPLING_EXPORT bool isMonotonic(bool increasing, double eps) const;
-    MEDCOUPLING_EXPORT std::string repr() const;
-    MEDCOUPLING_EXPORT std::string reprZip() const;
     MEDCOUPLING_EXPORT void writeVTK(std::ostream& ofs, int indent, const std::string& nameInFile, DataArrayByte *byteArr) const;
     MEDCOUPLING_EXPORT void reprCppStream(const std::string& varName, std::ostream& stream) const;
     MEDCOUPLING_EXPORT void reprQuickOverview(std::ostream& stream) const;
@@ -423,8 +424,8 @@ namespace MEDCoupling
     MEDCOUPLING_EXPORT bool isEqual(const DataArrayDouble& other, double prec) const;
     MEDCOUPLING_EXPORT bool isEqualIfNotWhy(const DataArrayDouble& other, double prec, std::string& reason) const;
     MEDCOUPLING_EXPORT bool isEqualWithoutConsideringStr(const DataArrayDouble& other, double prec) const;
-    MEDCOUPLING_EXPORT DataArrayDouble *selectByTupleId(const int *new2OldBg, const int *new2OldEnd) const { return DataArrayTemplateFP<double>::mySelectByTupleId(new2OldBg,new2OldEnd); }
-    MEDCOUPLING_EXPORT DataArrayDouble *selectByTupleId(const DataArrayInt32& di) const { return DataArrayTemplateFP<double>::mySelectByTupleId(di); }
+    MEDCOUPLING_EXPORT DataArrayDouble *selectByTupleId(const mcIdType *new2OldBg, const mcIdType *new2OldEnd) const { return this->mySelectByTupleId(new2OldBg,new2OldEnd); }
+    MEDCOUPLING_EXPORT DataArrayDouble *selectByTupleId(const DataArrayIdType& di) const { return this->mySelectByTupleId(di); }
     MEDCOUPLING_EXPORT DataArrayDouble *selectByTupleIdSafe(const int *new2OldBg, const int *new2OldEnd) const { return DataArrayTemplateFP<double>::mySelectByTupleIdSafe(new2OldBg,new2OldEnd); }
     MEDCOUPLING_EXPORT DataArrayDouble *keepSelectedComponents(const std::vector<int>& compoIds) const { return DataArrayTemplateFP<double>::myKeepSelectedComponents(compoIds); }
     MEDCOUPLING_EXPORT DataArrayDouble *selectByTupleIdSafeSlice(int bg, int end2, int step) const { return DataArrayTemplateFP<double>::mySelectByTupleIdSafeSlice(bg,end2,step); }
@@ -527,6 +528,7 @@ namespace MEDCoupling
   class DataArrayDiscrete : public DataArrayTemplateClassic<T>
   {
   public:
+    MEDCOUPLING_EXPORT static typename Traits<T>::ArrayType *New();
     MEDCOUPLING_EXPORT bool isEqual(const DataArrayDiscrete<T>& other) const;
     MEDCOUPLING_EXPORT bool isEqualIfNotWhy(const DataArrayDiscrete<T>& other, std::string& reason) const;
     MEDCOUPLING_EXPORT bool isEqualWithoutConsideringStr(const DataArrayDiscrete<T>& other) const;
@@ -539,6 +541,14 @@ namespace MEDCoupling
     MEDCOUPLING_EXPORT bool isMonotonic(bool increasing) const;
     MEDCOUPLING_EXPORT void checkStrictlyMonotonic(bool increasing) const;
     MEDCOUPLING_EXPORT bool isStrictlyMonotonic(bool increasing) const;
+    MEDCOUPLING_EXPORT int getHashCode() const;
+    MEDCOUPLING_EXPORT void reprCppStream(const std::string& varName, std::ostream& stream) const;
+    MEDCOUPLING_EXPORT void reprQuickOverview(std::ostream& stream) const;
+    MEDCOUPLING_EXPORT void reprQuickOverviewData(std::ostream& stream, std::size_t maxNbOfByteInRepr) const;
+    MEDCOUPLING_EXPORT void writeVTK(std::ostream& ofs, int indent, const std::string& type, const std::string& nameInFile, DataArrayByte *byteArr) const;
+    MEDCOUPLING_EXPORT void transformWithIndArr(const T *indArrBg, const T *indArrEnd);
+    MEDCOUPLING_EXPORT void transformWithIndArr(const MapKeyVal<T>& m);
+    MEDCOUPLING_EXPORT DataArrayIdType *findIdsEqual(T val) const;
   protected:
     template<class ALG>
     void switchOnTupleAlg(T val, std::vector<bool>& vec, ALG algo) const;
@@ -559,21 +569,12 @@ namespace MEDCoupling
 
   class DataArrayInt32 : public DataArrayDiscreteSigned<Int32>
   {
+    friend class DataArrayDiscrete<Int32>;
   public:
-    MEDCOUPLING_EXPORT static DataArrayInt32 *New();
     MEDCOUPLING_EXPORT int intValue() const;
-    MEDCOUPLING_EXPORT int getHashCode() const;
     MEDCOUPLING_EXPORT DataArrayInt32 *deepCopy() const;//ok
     MEDCOUPLING_EXPORT DataArrayInt32 *buildNewEmptyInstance() const { return DataArrayInt32::New(); }//ok
-    MEDCOUPLING_EXPORT std::string repr() const;
-    MEDCOUPLING_EXPORT std::string reprZip() const;
-    MEDCOUPLING_EXPORT void writeVTK(std::ostream& ofs, int indent, const std::string& type, const std::string& nameInFile, DataArrayByte *byteArr) const;
-    MEDCOUPLING_EXPORT void reprCppStream(const std::string& varName, std::ostream& stream) const;
-    MEDCOUPLING_EXPORT void reprQuickOverview(std::ostream& stream) const;
-    MEDCOUPLING_EXPORT void reprQuickOverviewData(std::ostream& stream, std::size_t maxNbOfByteInRepr) const;
-    MEDCOUPLING_EXPORT void transformWithIndArr(const int *indArrBg, const int *indArrEnd);
-    MEDCOUPLING_EXPORT void transformWithIndArr(const MapKeyVal<int>& m);
-    MEDCOUPLING_EXPORT DataArrayInt32 *transformWithIndArrR(const int *indArrBg, const int *indArrEnd) const;
+    MEDCOUPLING_EXPORT DataArrayInt32 *transformWithIndArrR(const int *indArr2Bg, const int *indArrEnd) const;
     MEDCOUPLING_EXPORT void splitByValueRange(const int *arrBg, const int *arrEnd,
                                               DataArrayInt32 *& castArr, DataArrayInt32 *& rankInsideCast, DataArrayInt32 *& castsPresent) const;
     MEDCOUPLING_EXPORT bool isRange(int& strt, int& sttoopp, int& stteepp) const;
@@ -582,8 +583,8 @@ namespace MEDCoupling
     MEDCOUPLING_EXPORT MCAuto< MapKeyVal<int> > invertArrayN2O2O2NOptimized() const;
     MEDCOUPLING_EXPORT MCAuto< MapKeyVal<int> > giveN2OOptimized() const;
     MEDCOUPLING_EXPORT DataArrayInt32 *invertArrayO2N2N2OBis(int newNbOfElem) const;
-    MEDCOUPLING_EXPORT DataArrayInt32 *selectByTupleId(const int *new2OldBg, const int *new2OldEnd) const { return DataArrayTemplate<int>::mySelectByTupleId(new2OldBg,new2OldEnd); }
-    MEDCOUPLING_EXPORT DataArrayInt32 *selectByTupleId(const DataArrayInt32& di) const { return DataArrayTemplate<int>::mySelectByTupleId(di); }
+    MEDCOUPLING_EXPORT DataArrayInt32 *selectByTupleId(const mcIdType *new2OldBg, const mcIdType *new2OldEnd) const { return this->mySelectByTupleId(new2OldBg,new2OldEnd); }
+    MEDCOUPLING_EXPORT DataArrayInt32 *selectByTupleId(const DataArrayIdType& di) const { return this->mySelectByTupleId(di); }
     MEDCOUPLING_EXPORT DataArrayInt32 *selectByTupleIdSafe(const int *new2OldBg, const int *new2OldEnd) const { return DataArrayTemplate<int>::mySelectByTupleIdSafe(new2OldBg,new2OldEnd); }
     MEDCOUPLING_EXPORT DataArrayInt32 *keepSelectedComponents(const std::vector<int>& compoIds) const { return DataArrayTemplate<int>::myKeepSelectedComponents(compoIds); }
     MEDCOUPLING_EXPORT DataArrayInt32 *selectByTupleIdSafeSlice(int bg, int end2, int step) const { return DataArrayTemplate<int>::mySelectByTupleIdSafeSlice(bg,end2,step); }
@@ -599,7 +600,6 @@ namespace MEDCoupling
     MEDCOUPLING_EXPORT bool hasUniqueValues() const;
     MEDCOUPLING_EXPORT void setSelectedComponents(const DataArrayInt32 *a, const std::vector<int>& compoIds);
     MEDCOUPLING_EXPORT DataArrayInt32Iterator *iterator();
-    MEDCOUPLING_EXPORT DataArrayInt32 *findIdsEqual(int val) const;
     MEDCOUPLING_EXPORT DataArrayInt32 *findIdsNotEqual(int val) const;
     MEDCOUPLING_EXPORT DataArrayInt32 *findIdsEqualList(const int *valsBg, const int *valsEnd) const;
     MEDCOUPLING_EXPORT DataArrayInt32 *findIdsNotEqualList(const int *valsBg, const int *valsEnd) const;
@@ -663,6 +663,21 @@ namespace MEDCoupling
     MEDCOUPLING_EXPORT MemArray<int>& accessToMemArray() { return _mem; }
     MEDCOUPLING_EXPORT const MemArray<int>& accessToMemArray() const { return _mem; }
   public:
+    MEDCOUPLING_EXPORT static void ExtractFromIndexedArrays(const int *idsOfSelectBg, const int *idsOfSelectEnd, const DataArrayInt *arrIn, const DataArrayInt *arrIndxIn,
+                                                    DataArrayInt* &arrOut, DataArrayInt* &arrIndexOut);
+    MEDCOUPLING_EXPORT static void ExtractFromIndexedArraysSlice(int idsOfSelectStart, int idsOfSelectStop, int idsOfSelectStep, const DataArrayInt *arrIn, const DataArrayInt *arrIndxIn,
+                                                     DataArrayInt* &arrOut, DataArrayInt* &arrIndexOut);
+    MEDCOUPLING_EXPORT static void SetPartOfIndexedArrays(const int *idsOfSelectBg, const int *idsOfSelectEnd, const DataArrayInt *arrIn, const DataArrayInt *arrIndxIn,
+                                                  const DataArrayInt *srcArr, const DataArrayInt *srcArrIndex,
+                                                  DataArrayInt* &arrOut, DataArrayInt* &arrIndexOut);
+    MEDCOUPLING_EXPORT static void SetPartOfIndexedArraysSlice(int start, int end, int step, const DataArrayInt *arrIn, const DataArrayInt *arrIndxIn,
+                                                   const DataArrayInt *srcArr, const DataArrayInt *srcArrIndex,
+                                                   DataArrayInt* &arrOut, DataArrayInt* &arrIndexOut);
+    MEDCOUPLING_EXPORT static void SetPartOfIndexedArraysSameIdx(const int *idsOfSelectBg, const int *idsOfSelectEnd, DataArrayInt *arrInOut, const DataArrayInt *arrIndxIn,
+                                                         const DataArrayInt *srcArr, const DataArrayInt *srcArrIndex);
+    MEDCOUPLING_EXPORT static void SetPartOfIndexedArraysSameIdxSlice(int start, int end, int step, DataArrayInt *arrInOut, const DataArrayInt *arrIndxIn,
+                                                          const DataArrayInt *srcArr, const DataArrayInt *srcArrIndex);
+    MEDCOUPLING_EXPORT static bool RemoveIdsFromIndexedArrays(const int *idsToRemoveBg, const int *idsToRemoveEnd, DataArrayInt *arr, DataArrayInt *arrIndx, int offsetForRemoval=0);
     MEDCOUPLING_EXPORT static int *CheckAndPreparePermutation(const int *start, const int *end);
     MEDCOUPLING_EXPORT static DataArrayInt32 *Range(int begin, int end, int step);
   public:
@@ -677,6 +692,19 @@ namespace MEDCoupling
 
   class DataArrayInt64 : public DataArrayDiscrete<Int64>
   {
+    friend class DataArrayDiscrete<Int64>;
+  public:
+    MEDCOUPLING_EXPORT DataArrayInt64 *deepCopy() const;
+    MEDCOUPLING_EXPORT DataArrayInt64 *buildNewEmptyInstance() const { return DataArrayInt64::New(); }//ok
+    MEDCOUPLING_EXPORT DataArrayInt64 *selectByTupleId(const mcIdType *new2OldBg, const mcIdType *new2OldEnd) const { return this->mySelectByTupleId(new2OldBg,new2OldEnd); }
+    MEDCOUPLING_EXPORT DataArrayInt64 *selectByTupleId(const DataArrayIdType& di) const { return this->mySelectByTupleId(di); }
+    MEDCOUPLING_EXPORT DataArrayInt64 *selectByTupleIdSafe(const int *new2OldBg, const int *new2OldEnd) const { return DataArrayTemplate<Int64>::mySelectByTupleIdSafe(new2OldBg,new2OldEnd); }
+    MEDCOUPLING_EXPORT DataArrayInt64 *keepSelectedComponents(const std::vector<int>& compoIds) const { return DataArrayTemplate<Int64>::myKeepSelectedComponents(compoIds); }
+    MEDCOUPLING_EXPORT DataArrayInt64 *selectByTupleIdSafeSlice(int bg, int end2, int step) const { return DataArrayTemplate<Int64>::mySelectByTupleIdSafeSlice(bg,end2,step); }
+    MEDCOUPLING_EXPORT DataArrayInt64 *selectByTupleRanges(const std::vector<std::pair<int,int> >& ranges) const { return DataArrayTemplate<Int64>::mySelectByTupleRanges(ranges); }
+  private:
+    ~DataArrayInt64() { }
+    DataArrayInt64() { }
   };
   
   template<class T>
@@ -706,8 +734,8 @@ namespace MEDCoupling
     MEDCOUPLING_EXPORT std::string repr() const;
     MEDCOUPLING_EXPORT std::string reprZip() const;
     MEDCOUPLING_EXPORT DataArrayInt *convertToIntArr() const;
-    MEDCOUPLING_EXPORT DataArrayChar *selectByTupleId(const int *new2OldBg, const int *new2OldEnd) const { return DataArrayTemplate<char>::mySelectByTupleId(new2OldBg,new2OldEnd); }
-    MEDCOUPLING_EXPORT DataArrayChar *selectByTupleId(const DataArrayInt& di) const { return DataArrayTemplate<char>::mySelectByTupleId(di); }
+    MEDCOUPLING_EXPORT DataArrayChar *selectByTupleId(const mcIdType *new2OldBg, const mcIdType *new2OldEnd) const { return this->mySelectByTupleId(new2OldBg,new2OldEnd); }
+    MEDCOUPLING_EXPORT DataArrayChar *selectByTupleId(const DataArrayIdType& di) const { return this->mySelectByTupleId(di); }
     MEDCOUPLING_EXPORT DataArrayChar *selectByTupleIdSafe(const int *new2OldBg, const int *new2OldEnd) const { return DataArrayTemplate<char>::mySelectByTupleIdSafe(new2OldBg,new2OldEnd); }
     MEDCOUPLING_EXPORT DataArrayChar *keepSelectedComponents(const std::vector<int>& compoIds) const { return DataArrayTemplate<char>::myKeepSelectedComponents(compoIds); }
     MEDCOUPLING_EXPORT DataArrayChar *selectByTupleIdSafeSlice(int bg, int end2, int step) const { return DataArrayTemplate<char>::mySelectByTupleIdSafeSlice(bg,end2,step); }
index 48ac1c576fb9298c1a6f4e2a055fc949b0f9356f..570f0f8325bea011ccf7d1457146c4435f1deda6 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -58,7 +58,7 @@ namespace MEDCoupling
         _nb_of_elem_alloc=other._nb_of_elem;
         T *pointer=(T*)malloc(_nb_of_elem_alloc*sizeof(T));
         std::copy(other._pointer.getConstPointer(),other._pointer.getConstPointer()+other._nb_of_elem,pointer);
-        useArray(pointer,true,C_DEALLOC,other._nb_of_elem);
+        useArray(pointer,true,DeallocType::C_DEALLOC,other._nb_of_elem);
       }
   }
 
@@ -437,15 +437,25 @@ namespace MEDCoupling
     free(pt);
   }
 
+  template<class T>
+  void MemArray<T>::COffsetDeallocator(void *pt, void *param)
+  {
+    int64_t *offset(reinterpret_cast<int64_t *>(param));
+    char *ptcast(reinterpret_cast<char *>(pt));
+    free(ptcast+*offset);
+  }
+
   template<class T>
   typename MemArray<T>::Deallocator MemArray<T>::BuildFromType(DeallocType type)
   {
     switch(type)
     {
-      case CPP_DEALLOC:
+      case DeallocType::CPP_DEALLOC:
         return CPPDeallocator;
-      case C_DEALLOC:
+      case DeallocType::C_DEALLOC:
         return CDeallocator;
+      case DeallocType::C_DEALLOC_WITH_OFFSET:
+        return COffsetDeallocator;
       default:
         throw INTERP_KERNEL::Exception("Invalid deallocation requested ! Unrecognized enum DeallocType !");
     }
@@ -1098,17 +1108,17 @@ namespace MEDCoupling
    *          is to delete using decrRef() as it is no more needed.
    */
   template<class T>
-  typename Traits<T>::ArrayType *DataArrayTemplate<T>::mySelectByTupleId(const int *new2OldBg, const int *new2OldEnd) const
+  typename Traits<T>::ArrayType *DataArrayTemplate<T>::mySelectByTupleId(const mcIdType *new2OldBg, const mcIdType *new2OldEnd) const
   {
     checkAllocated();
     MCAuto<DataArray> ret0(buildNewEmptyInstance());
     MCAuto< typename Traits<T>::ArrayType > ret(DynamicCastSafe<DataArray,typename Traits<T>::ArrayType>(ret0));
-    int nbComp(getNumberOfComponents());
-    ret->alloc((int)std::distance(new2OldBg,new2OldEnd),nbComp);
+    std::size_t nbComp(getNumberOfComponents());
+    ret->alloc(std::distance(new2OldBg,new2OldEnd),nbComp);
     ret->copyStringInfoFrom(*this);
     T *pt(ret->getPointer());
     const T *srcPt(getConstPointer());
-    int i(0);
+    std::size_t i(0);
     for(const int *w=new2OldBg;w!=new2OldEnd;w++,i++)
       std::copy(srcPt+(*w)*nbComp,srcPt+((*w)+1)*nbComp,pt+i*nbComp);
     ret->copyStringInfoFrom(*this);
@@ -1116,9 +1126,9 @@ namespace MEDCoupling
   }
 
   template<class T>
-  typename Traits<T>::ArrayType *DataArrayTemplate<T>::mySelectByTupleId(const DataArrayInt& di) const
+  typename Traits<T>::ArrayType *DataArrayTemplate<T>::mySelectByTupleId(const DataArrayIdType& di) const
   {
-    return DataArrayTemplate<T>::mySelectByTupleId(di.begin(),di.end());
+    return this->mySelectByTupleId(di.begin(),di.end());
   }
 
   template<class T>
@@ -3107,7 +3117,7 @@ struct NotInRange
       throw INTERP_KERNEL::Exception("DataArrayDouble::fromNoInterlace : Not defined array !");
     T *tab(this->_mem.fromNoInterlace(this->getNumberOfComponents()));
     MCAuto<typename Traits<T>::ArrayType> ret(Traits<T>::ArrayType::New());
-    ret->useArray(tab,true,C_DEALLOC,this->getNumberOfTuples(),this->getNumberOfComponents());
+    ret->useArray(tab,true,DeallocType::C_DEALLOC,this->getNumberOfTuples(),this->getNumberOfComponents());
     return ret.retn();
   }
 
@@ -3128,7 +3138,7 @@ struct NotInRange
       throw INTERP_KERNEL::Exception("DataArrayDouble::toNoInterlace : Not defined array !");
     T *tab(this->_mem.toNoInterlace(this->getNumberOfComponents()));
     MCAuto<typename Traits<T>::ArrayType> ret(Traits<T>::ArrayType::New());
-    ret->useArray(tab,true,C_DEALLOC,this->getNumberOfTuples(),this->getNumberOfComponents());
+    ret->useArray(tab,true,DeallocType::C_DEALLOC,this->getNumberOfTuples(),this->getNumberOfComponents());
     return ret.retn();
   }
   
@@ -3163,7 +3173,7 @@ struct NotInRange
         w=std::copy(inp1,inp1+nbOfComp1,w);
         w=std::copy(inp2,inp2+nbOfComp2,w);
       }
-    this->useArray(newArr,true,C_DEALLOC,nbOfTuples,nbOfComp1+nbOfComp2);
+    this->useArray(newArr,true,DeallocType::C_DEALLOC,nbOfTuples,nbOfComp1+nbOfComp2);
     std::vector<int> compIds(nbOfComp2);
     for(int i=0;i<nbOfComp2;i++)
       compIds[i]=nbOfComp1+i;
@@ -3375,6 +3385,29 @@ struct NotInRange
     return ret.str();
   }
   
+  /*!
+   * Returns a textual and human readable representation of \a this instance of
+   * DataArrayInt. This text is shown when a DataArrayInt is printed in Python.
+   * \return std::string - text describing \a this DataArrayInt.
+   *
+   * \sa reprNotTooLong, reprZip
+   */
+  template<class T>
+  std::string DataArrayTemplateClassic<T>::repr() const
+  {
+    std::ostringstream ret;
+    DataArrayTemplateClassic<T>::reprStream(ret);
+    return ret.str();
+  }
+  
+  template<class T>
+  std::string DataArrayTemplateClassic<T>::reprZip() const
+  {
+    std::ostringstream ret;
+    DataArrayTemplateClassic<T>::reprZipStream(ret);
+    return ret.str();
+  }
+  
   /////////////////////////////////
   
   /*!
@@ -3428,7 +3461,17 @@ struct NotInRange
     std::string tmp;
     return isEqualIfNotWhy(other,tmp);
   }
-
+  
+  /*!
+   * Returns a new instance of DataArrayInt. The caller is to delete this array
+   * using decrRef() as it is no more needed.
+   */
+  template<class T>
+  typename Traits<T>::ArrayType *DataArrayDiscrete<T>::New()
+  {
+    return new typename Traits<T>::ArrayType;
+  }
+  
   /*!
    * Checks if values of \a this and another DataArrayInt are equal. For more info see
    * \ref MEDCouplingArrayBasicsCompare.
@@ -3452,7 +3495,8 @@ struct NotInRange
   template<class T>
   bool DataArrayDiscrete<T>::isEqualWithoutConsideringStrAndOrder(const typename Traits<T>::ArrayType& other) const
   {
-    MCAuto<DataArrayInt> a(static_cast<const typename Traits<T>::ArrayType *>(this)->deepCopy()),b(other.deepCopy());
+    MCAuto<typename Traits<T>::ArrayType> a((static_cast<const typename Traits<T>::ArrayType *>(this))->deepCopy());
+    MCAuto<typename Traits<T>::ArrayType> b((static_cast<const typename Traits<T>::ArrayType *>(&other))->deepCopy());
     a->sort();
     b->sort();
     return a->isEqualWithoutConsideringStr(*b);
@@ -3576,7 +3620,7 @@ struct NotInRange
     const T *thisPt(this->begin()),*pt(partOfThis.begin());
     MCAuto<DataArrayIdType> ret(DataArrayIdType::New());
     ret->alloc(nbTuples,1);
-    T *retPt(ret->getPointer());
+    mcIdType *retPt(ret->getPointer());
     std::map<int,mcIdType> m;
     for(std::size_t i=0;i<thisNbTuples;i++,thisPt++)
       m[*thisPt]=(mcIdType)i;
@@ -3710,6 +3754,233 @@ struct NotInRange
       }
   }
 
+  /*!
+   * Returns an integer value characterizing \a this array, which is useful for a quick
+   * comparison of many instances of DataArrayInt.
+   *  \return int - the hash value.
+   *  \throw If \a this is not allocated.
+   */
+  template<class T>
+  int DataArrayDiscrete<T>::getHashCode() const
+  {
+    this->checkAllocated();
+    std::size_t nbOfElems(this->getNbOfElems());
+    int ret=nbOfElems*65536;
+    int delta=3;
+    if(nbOfElems>48)
+      delta=nbOfElems/8;
+    T ret0(0);
+    const T *pt(this->begin());
+    for(std::size_t i=0;i<nbOfElems;i+=delta)
+      ret0+=pt[i] & 0x1FFF;
+    return ret+ret0;
+  }
+
+  template<class T>
+  void DataArrayDiscrete<T>::reprCppStream(const std::string& varName, std::ostream& stream) const
+  {
+    std::size_t nbTuples(this->getNumberOfTuples()),nbComp(this->getNumberOfComponents());
+    const T *data(this->getConstPointer());
+    stream << Traits<T>::ArrayTypeName << " *" << varName << "=" << Traits<T>::ArrayTypeName << "::New();" << std::endl;
+    if(nbTuples*nbComp>=1)
+      {
+        stream << "const int " << varName << "Data[" << nbTuples*nbComp << "]={";
+        std::copy(data,data+nbTuples*nbComp-1,std::ostream_iterator<int>(stream,","));
+        stream << data[nbTuples*nbComp-1] << "};" << std::endl;
+        stream << varName << "->useArray(" << varName << "Data,false,CPP_DEALLOC," << nbTuples << "," << nbComp << ");" << std::endl;
+      }
+    else
+      stream << varName << "->alloc(" << nbTuples << "," << nbComp << ");" << std::endl;
+    stream << varName << "->setName(\"" << this->getName() << "\");" << std::endl;
+  }
+
+  /*!
+   * Method that gives a quick overvien of \a this for python.
+   */
+  template<class T>
+  void DataArrayDiscrete<T>::reprQuickOverview(std::ostream& stream) const
+  {
+    static const std::size_t MAX_NB_OF_BYTE_IN_REPR=300;
+    stream << Traits<T>::ArrayTypeName << " C++ instance at " << this << ". ";
+    if(this->isAllocated())
+      {
+        std::size_t nbOfCompo(this->getNumberOfComponents());
+        if(nbOfCompo>=1)
+          {
+            std::size_t nbOfTuples(this->getNumberOfTuples());
+            stream << "Number of tuples : " << nbOfTuples << ". Number of components : " << nbOfCompo << "." << std::endl;
+            reprQuickOverviewData(stream,MAX_NB_OF_BYTE_IN_REPR);
+          }
+        else
+          stream << "Number of components : 0.";
+      }
+    else
+      stream << "*** No data allocated ****";
+  }
+
+  template<class T>
+  void DataArrayDiscrete<T>::reprQuickOverviewData(std::ostream& stream, std::size_t maxNbOfByteInRepr) const
+  {
+    const T *data(this->begin());
+    std::size_t nbOfTuples(this->getNumberOfTuples()),nbOfCompo(this->getNumberOfComponents());
+    std::ostringstream oss2; oss2 << "[";
+    std::string oss2Str(oss2.str());
+    bool isFinished=true;
+    for(int i=0;i<nbOfTuples && isFinished;i++)
+      {
+        if(nbOfCompo>1)
+          {
+            oss2 << "(";
+            for(int j=0;j<nbOfCompo;j++,data++)
+              {
+                oss2 << *data;
+                if(j!=nbOfCompo-1) oss2 << ", ";
+              }
+            oss2 << ")";
+          }
+        else
+          oss2 << *data++;
+        if(i!=nbOfTuples-1) oss2 << ", ";
+        std::string oss3Str(oss2.str());
+        if(oss3Str.length()<maxNbOfByteInRepr)
+          oss2Str=oss3Str;
+        else
+          isFinished=false;
+      }
+    stream << oss2Str;
+    if(!isFinished)
+      stream << "... ";
+    stream << "]";
+  }
+
+  template<class T>
+  void DataArrayDiscrete<T>::writeVTK(std::ostream& ofs, int indent, const std::string& type, const std::string& nameInFile, DataArrayByte *byteArr) const
+  {
+    static const char SPACE[4]={' ',' ',' ',' '};
+    this->checkAllocated();
+    std::string idt(indent,' ');
+    ofs << idt << "<DataArray type=\"" << type << "\" Name=\"" << nameInFile << "\" NumberOfComponents=\"" << this->getNumberOfComponents() << "\"";
+    if(byteArr)
+      {
+        ofs << " format=\"appended\" offset=\"" << byteArr->getNumberOfTuples() << "\">";
+        if(std::string(type)==Traits<T>::VTKReprStr)
+          {
+            const char *data(reinterpret_cast<const char *>(this->begin()));
+            std::size_t sz(this->getNbOfElems()*sizeof(T));
+            byteArr->insertAtTheEnd(data,data+sz);
+            byteArr->insertAtTheEnd(SPACE,SPACE+4);
+          }
+        else if(std::string(type)=="Int8")
+          {
+            INTERP_KERNEL::AutoPtr<char> tmp(new char[this->getNbOfElems()]);
+            std::copy(this->begin(),this->end(),(char *)tmp);
+            byteArr->insertAtTheEnd((char *)tmp,(char *)tmp+this->getNbOfElems());
+            byteArr->insertAtTheEnd(SPACE,SPACE+4);
+          }
+        else if(std::string(type)=="UInt8")
+          {
+            INTERP_KERNEL::AutoPtr<unsigned char> tmp(new unsigned char[this->getNbOfElems()]);
+            std::copy(this->begin(),this->end(),(unsigned char *)tmp);
+            byteArr->insertAtTheEnd((unsigned char *)tmp,(unsigned char *)tmp+this->getNbOfElems());
+            byteArr->insertAtTheEnd(SPACE,SPACE+4);
+          }
+        else
+          {
+            std::ostringstream oss;
+            oss << Traits<T>::ArrayTypeName << "::writeVTK : Only " << Traits<T>::VTKReprStr << ", Int8 and UInt8 supported !";
+            throw INTERP_KERNEL::Exception(oss.str());
+          }
+      }
+    else
+      {
+        ofs << " RangeMin=\"" << this->getMinValueInArray() << "\" RangeMax=\"" << this->getMaxValueInArray() << "\" format=\"ascii\">\n" << idt;
+        std::copy(this->begin(),this->end(),std::ostream_iterator<int>(ofs," "));
+      }
+      ofs << std::endl << idt << "</DataArray>\n";
+  }
+
+  /*!
+   * Modifies in place \a this one-dimensional array so that each value \a v = \a indArrBg[ \a v ],
+   * i.e. a current value is used as in index to get a new value from \a indArrBg.
+   *  \param [in] indArrBg - pointer to the first element of array of new values to assign
+   *         to \a this array.
+   *  \param [in] indArrEnd - specifies the end of the array \a indArrBg, so that
+   *              the last value of \a indArrBg is \a indArrEnd[ -1 ].
+   *  \throw If \a this->getNumberOfComponents() != 1
+   *  \throw If any value of \a this can't be used as a valid index for
+   *         [\a indArrBg, \a indArrEnd).
+   *
+   *  \sa changeValue, findIdForEach
+   */
+  template<class T>
+  void DataArrayDiscrete<T>::transformWithIndArr(const T *indArrBg, const T *indArrEnd)
+  {
+    this->checkAllocated();
+    if(this->getNumberOfComponents()!=1)
+      throw INTERP_KERNEL::Exception("Call transformWithIndArr method on DataArrayInt with only one component, you can call 'rearrange' method before !");
+    std::size_t nbElemsIn(std::distance(indArrBg,indArrEnd)),nbOfTuples(this->getNumberOfTuples());
+    T *pt(this->getPointer());
+    for(std::size_t i=0;i<nbOfTuples;i++,pt++)
+      {
+        if(*pt>=0 && *pt<nbElemsIn)
+          *pt=indArrBg[*pt];
+        else
+          {
+            std::ostringstream oss; oss << "DataArrayInt::transformWithIndArr : error on tuple #" << i << " of this value is " << *pt << ", should be in [0," << nbElemsIn << ") !";
+            throw INTERP_KERNEL::Exception(oss.str());
+          }
+      }
+    this->declareAsNew();
+  }
+
+  template<class T>
+  void DataArrayDiscrete<T>::transformWithIndArr(const MapKeyVal<T>& m)
+  {
+    this->checkAllocated();
+    if(this->getNumberOfComponents()!=1)
+      throw INTERP_KERNEL::Exception("Call transformWithIndArr method on DataArrayInt with only one component, you can call 'rearrange' method before !");
+    const typename std::map<T,T>& dat(m.data());
+    std::size_t nbOfTuples(this->getNumberOfTuples());
+    T *pt(this->getPointer());
+    for(std::size_t i=0;i<nbOfTuples;i++,pt++)
+      {
+        typename std::map<T,T>::const_iterator it(dat.find(*pt));
+        if(it!=dat.end())
+          *pt=(*it).second;
+        else
+          {
+            std::ostringstream oss; oss << "DataArrayInt::transformWithIndArr : error on tuple #" << i << " of this value is " << *pt << " not in map !";
+            throw INTERP_KERNEL::Exception(oss.str());
+          }
+      }
+    this->declareAsNew();
+  }
+
+  /*!
+   * Creates a new DataArrayInt containing IDs (indices) of tuples holding value equal to a
+   * given one. The ids are sorted in the ascending order.
+   *  \param [in] val - the value to find within \a this.
+   *  \return DataArrayInt * - a new instance of DataArrayInt. The caller is to delete this
+   *          array using decrRef() as it is no more needed.
+   *  \throw If \a this is not allocated.
+   *  \throw If \a this->getNumberOfComponents() != 1.
+   *  \sa DataArrayInt::findIdsEqualTuple
+   */
+  template<class T>
+  DataArrayIdType *DataArrayDiscrete<T>::findIdsEqual(T val) const
+  {
+    this->checkAllocated();
+    if(this->getNumberOfComponents()!=1)
+      throw INTERP_KERNEL::Exception("DataArrayInt::findIdsEqual : the array must have only one component, you can call 'rearrange' method before !");
+    const T *cptr(this->getConstPointer());
+    MCAuto<DataArrayIdType> ret(DataArrayIdType::New()); ret->alloc(0,1);
+    std::size_t nbOfTuples(this->getNumberOfTuples());
+    for(std::size_t i=0;i<nbOfTuples;i++,cptr++)
+      if(*cptr==val)
+        ret->pushBackSilent(ToIdType(i));
+    return ret.retn();
+  }
+
   ////////////////////////////////////
 
   /*!
index 4c44edb3bc0e1aeb12be75b1c53157469eed2bc5..36349e2a8b6dcc3c67935e767e46cf4e668dcaa9 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -185,7 +185,7 @@ void DataArrayChar::meldWith(const DataArrayChar *other)
       w=std::copy(inp1,inp1+nbOfComp1,w);
       w=std::copy(inp2,inp2+nbOfComp2,w);
     }
-  useArray(newArr,true,C_DEALLOC,nbOfTuples,nbOfComp1+nbOfComp2);
+  useArray(newArr,true,DeallocType::C_DEALLOC,nbOfTuples,nbOfComp1+nbOfComp2);
   std::vector<int> compIds(nbOfComp2);
   for(int i=0;i<nbOfComp2;i++)
     compIds[i]=nbOfComp1+i;
index c9fa547eb2e5d4d81a393fe238ed470fb4cc78c1..fd5441f85843cf82f88d53438458fe4271e67e13 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2017  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index f0799497e37698912685fe048b4c6e316253713b..af878faa5dd50a35d61db7d4e71a6a74104b5891 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 537cbd53630111422fe73af91a2b30e1c035f751..d892923018945f131ba4ad2cb1827bf74e13fbcd 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 039c8ca29dabeae3a09b3b0c93ab08223e55e428..8322da12f52491717b60507387ac2a62a8712971 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 3c16fdb1805e42c6f78f507cb84996141c54f749..e7a82b402a7b2a372fbe0f5da9a3c64156e23933 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index b95f75d1b5738b6c5657b1fa3650bf692771ae5a..aa6499c297f56f756e2f4ba9e5c30154c51ed43c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 811bc4041ae02de9632ea6bb5b0034d277c1264d..871eee043f2a63a495680a2c8349ad2ce2d31480 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 81f9d33c4f73e76b77fcd86f519fc53a0ebd6076..757b48487363d4ce35416bdb5a02949502a3ae47 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 551214d115125324fe4451c4215094d7a8874791..3b7584558e1c8dc184ab3bad80dc9beb7fa10cde 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index b5af426bd5fd08a19594abc9deaac7e7a6be5fe9..72412782ca63260f9db24e11a64175b6ff00c868 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 9bb4dd35e2d52cb9ca757c29eff4f8079867c3ae..919ae7b34c6a96e74806f5d2dcd11cf9c4dd8e4e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 111b6186cb3776cf513ac447c6d1a7bef740cd51..10d31c6a6d22d4fc7c1e69796196ad4a4e305b37 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 3f1ba3f42c00011a88e8689e997f4156eaa7a087..ce270590ad4a2df0bfd48eb4edbe2094f3622dad 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 5499eb544defe1b6787bf8681071278a0ccda99f..c675c8146b3fccdf3b4e43c4872da26bee732501 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -74,7 +74,7 @@ namespace MEDCoupling
     DataArrayPartDefinition *add2(const SlicePartDefinition *other) const;
     virtual ~DataArrayPartDefinition();
   private:
-    MCAuto<DataArrayInt> _arr;
+    MCAuto<DataArrayIdType> _arr;
   };
 
   class SlicePartDefinition : public PartDefinition
@@ -103,9 +103,9 @@ namespace MEDCoupling
     PartDefinition *add2(const SlicePartDefinition *other) const;
     virtual ~SlicePartDefinition();
   private:
-    int _start;
-    int _stop;
-    int _step;
+    mcIdType _start;
+    mcIdType _stop;
+    mcIdType _step;
   };
 }
 
index 1f8b34bccd063146c2d1da9d472ca03043ac34d9..c9c384d78ee1b4714ba2d390b7ac22f19364fc32 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -364,7 +364,7 @@ void MEDCouplingPointSet::getNodeIdsNearPoints(const double *pos, int nbOfPoints
     throw INTERP_KERNEL::Exception("MEDCouplingPointSet::getNodeIdsNearPoint : no coordiantes set !");
   int spaceDim=getSpaceDimension();
   MCAuto<DataArrayDouble> points=DataArrayDouble::New();
-  points->useArray(pos,false,CPP_DEALLOC,nbOfPoints,spaceDim);
+  points->useArray(pos,false,DeallocType::CPP_DEALLOC,nbOfPoints,spaceDim);
   _coords->computeTupleIdsNearTuples(points,eps,c,cI);
 }
 
index 61ee630dbf786d7d0ed0ec6f2621f451097ab697..7d7d38e6388429cbfb38fe0cde975396756119ce 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index da9e4ee667718b60e145468eca3337a3dccd842c..b1af9121833ff167280d9cbb0072d22602bed4db 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -20,6 +20,7 @@
 
 #include "MEDCouplingRefCountObject.hxx"
 #include "MEDCoupling_version.h"
+#include "MCType.hxx"
 
 #include "InterpKernelException.hxx"
 
@@ -53,6 +54,11 @@ int MEDCoupling::MEDCouplingSizeOfVoidStar()
   return 8*sizeof(std::size_t);
 }
 
+std::size_t MEDCoupling::MEDCouplingSizeOfIDs()
+{
+  return 8*sizeof(mcIdType);
+}
+
 /*!
  * If true is returned it is a LittleEndian machine.
  * If false it is a BigEndian machine.
index b0fb54ce1c639821b524782b87efafed864760f6..b61aa67403c0eb9ebff0b2dc61cf7c58839c5980 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 
 #include <set>
 #include <map>
+#include <atomic>
 #include <vector>
 #include <string>
 #include <cstddef>
 
 namespace MEDCoupling
 {
-  typedef enum
+  enum class DeallocType
   {
     C_DEALLOC = 2,
-    CPP_DEALLOC = 3
-  } DeallocType;
+    CPP_DEALLOC = 3,
+    C_DEALLOC_WITH_OFFSET = 4
+  };
 
   //! The various spatial discretization of a field
   typedef enum
@@ -62,6 +64,7 @@ namespace MEDCoupling
   MEDCOUPLING_EXPORT int MEDCouplingVersion();
   MEDCOUPLING_EXPORT void MEDCouplingVersionMajMinRel(int& maj, int& minor, int& releas);
   MEDCOUPLING_EXPORT int MEDCouplingSizeOfVoidStar();
+  MEDCOUPLING_EXPORT std::size_t MEDCouplingSizeOfIDs();
   MEDCOUPLING_EXPORT bool MEDCouplingByteOrder();
   MEDCOUPLING_EXPORT const char *MEDCouplingByteOrderStr();
   MEDCOUPLING_EXPORT bool IsCXX11Compiled();
@@ -95,7 +98,7 @@ namespace MEDCoupling
   protected:
     virtual ~RefCountObjectOnly();
   private:
-    mutable int _cnt;
+    mutable std::atomic<int> _cnt;
   };
 
   class RefCountObject : public RefCountObjectOnly, public BigMemoryObject
index 2aa3f3bf06e13585a80be6701eeb77d8f4e0746e..5b4d4cc9ac74ea383360e428293c4218a69bdd02 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -552,19 +552,24 @@ int MEDCouplingRemapper::prepareInterpKernelOnlyUU()
     }
   else if(srcMeshDim==2 && trgMeshDim==3 && srcSpaceDim==3)
     {
-      MEDCouplingNormalizedUnstructuredMesh<3,3> source_mesh_wrapper(src_mesh);
-      MEDCouplingNormalizedUnstructuredMesh<3,3> target_mesh_wrapper(target_mesh);
-      INTERP_KERNEL::Interpolation2D3D interpolation(*this);
-      nbCols=interpolation.interpolateMeshes(source_mesh_wrapper,target_mesh_wrapper,_matrix,method);
-      INTERP_KERNEL::Interpolation2D3D::DuplicateFacesType duplicateFaces=interpolation.retrieveDuplicateFaces();
-      if(!duplicateFaces.empty())
+      if(getIntersectionType()==INTERP_KERNEL::PointLocator)
+        throw INTERP_KERNEL::Exception("Using point locator to transfer a mesh of dim 2 to a mesh of dim 3 does not make sense: 3D centers of mass can not be localized in a mesh having mesh-dim=2, space-dim=3!!");
+      else
         {
-          std::ostringstream oss; oss << "An unexpected situation happened ! For the following 2D Cells are part of edges shared by 3D cells :\n";
-          for(std::map<int,std::set<int> >::const_iterator it=duplicateFaces.begin();it!=duplicateFaces.end();it++)
+          MEDCouplingNormalizedUnstructuredMesh<3,3> source_mesh_wrapper(src_mesh);
+          MEDCouplingNormalizedUnstructuredMesh<3,3> target_mesh_wrapper(target_mesh);
+          INTERP_KERNEL::Interpolation2D3D interpolation(*this);
+          nbCols=interpolation.interpolateMeshes(source_mesh_wrapper,target_mesh_wrapper,_matrix,method);
+          INTERP_KERNEL::Interpolation2D3D::DuplicateFacesType duplicateFaces=interpolation.retrieveDuplicateFaces();
+          if(!duplicateFaces.empty())
             {
-              oss << "2D Cell #" << (*it).first << " is part of common face of following 3D cells ids : ";
-              std::copy((*it).second.begin(),(*it).second.end(),std::ostream_iterator<int>(oss," "));
-              oss << std::endl;
+              std::ostringstream oss; oss << "An unexpected situation happened ! For the following 2D Cells are part of edges shared by 3D cells :\n";
+              for(std::map<int,std::set<int> >::const_iterator it=duplicateFaces.begin();it!=duplicateFaces.end();it++)
+                {
+                  oss << "2D Cell #" << (*it).first << " is part of common face of following 3D cells ids : ";
+                  std::copy((*it).second.begin(),(*it).second.end(),std::ostream_iterator<int>(oss," "));
+                  oss << std::endl;
+                }
             }
         }
     }
index 5d7ac9da8105a2c0a49884084efe2e7cec2b0a79..39343614194a20458f8c43a19d07cb5445468e54 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -25,6 +25,7 @@
 #include "MEDCouplingTimeLabel.hxx"
 #include "InterpolationOptions.hxx"
 #include "MEDCouplingNatureOfField.hxx"
+#include "MCType.hxx"
 #include "MCAuto.hxx"
 
 #include "InterpKernelException.hxx"
@@ -118,9 +119,9 @@ namespace MEDCoupling
     InterpolationMatrixPolicy _interp_matrix_pol;
     NatureOfField _nature_of_deno;
     unsigned int _time_deno_update;
-    std::vector<std::map<int,double> > _matrix;
-    std::vector<std::map<int,double> > _deno_multiply;
-    std::vector<std::map<int,double> > _deno_reverse_multiply;
+    std::vector<std::map<mcIdType,double> > _matrix;
+    std::vector<std::map<mcIdType,double> > _deno_multiply;
+    std::vector<std::map<mcIdType,double> > _deno_reverse_multiply;
   };
 }
 
index e07b195c8f8da33e92b89f2e27ee7099ce298af4..d4a8c91b0faad5ea49fd1ce3c39deda492c4ecf3 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 7c7d04a03a4a482299fdc01f938b5e3283289b4a..665e7a870356aa751fd6551694dc0471d1332de2 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -110,9 +110,9 @@ namespace MEDCoupling
     void validIndex(const std::string& func, int index) const;
     void validSuperIndexAndIndex(const std::string& func, int superIndex, int index) const;
 
-    MCAuto<DataArrayInt> _super_index;
-    MCAuto<DataArrayInt> _index;
-    MCAuto<DataArrayInt> _values;
+    MCAuto<DataArrayIdType> _super_index;
+    MCAuto<DataArrayIdType> _index;
+    MCAuto<DataArrayIdType> _values;
   };
 
 }
index 4e6c45aa12f44f968e69008693c301b05d0c5e26..bdb9cdb55aa9e4ce09cc65fbce82fa587451e790 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 2184b052cdeb96cf8725ec4dd8958bedadefbd06..143ac294e33347faeb79ca44293fc10f8702f18b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 1a2b029d44349a801e237600729de45703c95e0f..7e041ce71963a35ccaa5bd6cfd9f0f6b7106f78d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index f6d877a7539136c7467a9e08faa986cfd0603a76..8e7379d972506a5d66fa796018c459ff597b3d3c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 54a0b19f0f072e8e1d1e310cde2df1e79d28144c..e66822e8741e2f466075da73c8a213363e2cb629 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 2ec3a8827b108fd78d09ee7984827c762e55c832..1b1a72b6da85d9ae1a9376cdfd56310c9385f86d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -26,7 +26,7 @@
 
 using namespace MEDCoupling;
 
-std::size_t TimeLabel::GLOBAL_TIME=0;
+std::atomic<std::size_t> TimeLabel::GLOBAL_TIME(0);
 
 TimeLabel::TimeLabel():_time(GLOBAL_TIME++)
 {
index cc138c91d35659f051194e5ae1144e918956d65c..94167b6436c6e8b7e355eb85405f78ea4f18c700 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -23,6 +23,7 @@
 
 #include "MEDCoupling.hxx"
 
+#include <atomic>
 #include <cstddef>
 
 namespace MEDCoupling
@@ -46,7 +47,7 @@ namespace MEDCoupling
     MEDCOUPLING_EXPORT void updateTimeWith(const TimeLabel& other) const;
     MEDCOUPLING_EXPORT void forceTimeOfThis(const TimeLabel& other) const;
   private:
-    static std::size_t GLOBAL_TIME;
+    static std::atomic<std::size_t> GLOBAL_TIME;
     mutable std::size_t _time;
   };
 
index 46e3f7b1fd1d31f377fca2864bbd976e948bc16a..6d040c0886be8ec0d98e12cc9193cedbf743dc42 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016  CEA/DEN, EDF R&D
+// Copyright (C) 2016-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -46,6 +46,8 @@ const char Traits<int>::NPYStr[]="INT32";
 
 const char Traits<int>::ReprStr[]="int";
 
+const char Traits<int>::VTKReprStr[]="Int32";
+
 const char Traits<char>::ArrayTypeName[]="DataArrayChar";
 
 const char Traits<Int64>::ArrayTypeName[]="DataArrayInt64";
@@ -55,3 +57,5 @@ const char Traits<Int64>::FieldTypeName[]="MEDCouplingFieldInt64";
 const char Traits<Int64>::NPYStr[]="INT64";
 
 const char Traits<Int64>::ReprStr[]="int64";
+
+const char Traits<Int64>::VTKReprStr[]="Int64";
index a14232eec8114310127d62b50cd2ca85f21d485f..e5961fe9ac00c28969fa58cf73df7cdec4d91a27 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016  CEA/DEN, EDF R&D
+// Copyright (C) 2016-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -78,6 +78,7 @@ namespace MEDCoupling
     static const char FieldTypeName[];
     static const char NPYStr[];
     static const char ReprStr[];
+    static const char VTKReprStr[];
     typedef DataArrayInt32 ArrayType;
     typedef DataArrayInt32 ArrayTypeCh;
     typedef MEDCouplingFieldInt FieldType;
@@ -91,6 +92,7 @@ namespace MEDCoupling
     static const char FieldTypeName[];
     static const char NPYStr[];
     static const char ReprStr[];
+    static const char VTKReprStr[];
     typedef DataArrayInt64 ArrayType;
     typedef DataArrayInt64 ArrayTypeCh;
     //typedef MEDCouplingFieldInt64 FieldType;
index ba293c19572278d138afb207ee80f033d86da6d4..0dfa42cd7a91a5ab16d325095fe012013b09c7d3 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -593,7 +593,7 @@ void MEDCouplingUMesh::getReverseNodalConnectivity(DataArrayInt *revNodal, DataA
   checkFullyDefined();
   int nbOfNodes(getNumberOfNodes());
   int *revNodalIndxPtr=(int *)malloc((nbOfNodes+1)*sizeof(int));
-  revNodalIndx->useArray(revNodalIndxPtr,true,C_DEALLOC,nbOfNodes+1,1);
+  revNodalIndx->useArray(revNodalIndxPtr,true,DeallocType::C_DEALLOC,nbOfNodes+1,1);
   std::fill(revNodalIndxPtr,revNodalIndxPtr+nbOfNodes+1,0);
   const int *conn(_nodal_connec->begin()),*connIndex(_nodal_connec_index->begin());
   int nbOfCells(getNumberOfCells()),nbOfEltsInRevNodal(0);
@@ -609,7 +609,7 @@ void MEDCouplingUMesh::getReverseNodalConnectivity(DataArrayInt *revNodal, DataA
     }
   std::transform(revNodalIndxPtr+1,revNodalIndxPtr+nbOfNodes+1,revNodalIndxPtr,revNodalIndxPtr+1,std::plus<int>());
   int *revNodalPtr=(int *)malloc((nbOfEltsInRevNodal)*sizeof(int));
-  revNodal->useArray(revNodalPtr,true,C_DEALLOC,nbOfEltsInRevNodal,1);
+  revNodal->useArray(revNodalPtr,true,DeallocType::C_DEALLOC,nbOfEltsInRevNodal,1);
   std::fill(revNodalPtr,revNodalPtr+nbOfEltsInRevNodal,-1);
   for(int eltId=0;eltId<nbOfCells;eltId++)
     {
@@ -2016,13 +2016,13 @@ void MEDCouplingUMesh::setPartOfMySelf(const int *cellIdsBg, const int *cellIdsE
     }
   if(easyAssign)
     {
-      MEDCouplingUMesh::SetPartOfIndexedArraysSameIdx(cellIdsBg,cellIdsEnd,_nodal_connec,_nodal_connec_index,otherOnSameCoordsThanThis._nodal_connec,otherOnSameCoordsThanThis._nodal_connec_index);
+      DataArrayInt::SetPartOfIndexedArraysSameIdx(cellIdsBg,cellIdsEnd,_nodal_connec,_nodal_connec_index,otherOnSameCoordsThanThis._nodal_connec,otherOnSameCoordsThanThis._nodal_connec_index);
       computeTypes();
     }
   else
     {
       DataArrayInt *arrOut=0,*arrIOut=0;
-      MEDCouplingUMesh::SetPartOfIndexedArrays(cellIdsBg,cellIdsEnd,_nodal_connec,_nodal_connec_index,otherOnSameCoordsThanThis._nodal_connec,otherOnSameCoordsThanThis._nodal_connec_index,
+      DataArrayInt::SetPartOfIndexedArrays(cellIdsBg,cellIdsEnd,_nodal_connec,_nodal_connec_index,otherOnSameCoordsThanThis._nodal_connec,otherOnSameCoordsThanThis._nodal_connec_index,
                                                arrOut,arrIOut);
       MCAuto<DataArrayInt> arrOutAuto(arrOut),arrIOutAuto(arrIOut);
       setConnectivity(arrOut,arrIOut,true);
@@ -2066,13 +2066,13 @@ void MEDCouplingUMesh::setPartOfMySelfSlice(int start, int end, int step, const
     }
   if(easyAssign)
     {
-      MEDCouplingUMesh::SetPartOfIndexedArraysSameIdxSlice(start,end,step,_nodal_connec,_nodal_connec_index,otherOnSameCoordsThanThis._nodal_connec,otherOnSameCoordsThanThis._nodal_connec_index);
+      DataArrayInt::SetPartOfIndexedArraysSameIdxSlice(start,end,step,_nodal_connec,_nodal_connec_index,otherOnSameCoordsThanThis._nodal_connec,otherOnSameCoordsThanThis._nodal_connec_index);
       computeTypes();
     }
   else
     {
       DataArrayInt *arrOut=0,*arrIOut=0;
-      MEDCouplingUMesh::SetPartOfIndexedArraysSlice(start,end,step,_nodal_connec,_nodal_connec_index,otherOnSameCoordsThanThis._nodal_connec,otherOnSameCoordsThanThis._nodal_connec_index,
+      DataArrayInt::SetPartOfIndexedArraysSlice(start,end,step,_nodal_connec,_nodal_connec_index,otherOnSameCoordsThanThis._nodal_connec,otherOnSameCoordsThanThis._nodal_connec_index,
                                                 arrOut,arrIOut);
       MCAuto<DataArrayInt> arrOutAuto(arrOut),arrIOutAuto(arrIOut);
       setConnectivity(arrOut,arrIOut,true);
@@ -2375,7 +2375,7 @@ void MEDCouplingUMesh::findNodesToDuplicate(const MEDCouplingUMesh& otherDimM1On
   DAInt ids(idsTmp);
   // In the neighbor information remove the connection between high dimension cells and its low level constituents which are part
   // of the frontier given in parameter (i.e. the cells of low dimension from the group delimiting the crack):
-  MEDCouplingUMesh::RemoveIdsFromIndexedArrays(ids->begin(),ids->end(),desc00,descI00);
+  DataArrayInt::RemoveIdsFromIndexedArrays(ids->begin(),ids->end(),desc00,descI00);
   DataArrayInt *tmp0=0,*tmp1=0;
   // Compute the neighbor of each cell in m0Part2, taking into account the broken link above. Two
   // cells on either side of the crack (defined by the mesh of low dimension) are not neighbor anymore.
@@ -2620,7 +2620,7 @@ void MEDCouplingUMesh::renumberCells(const int *old2NewBg, bool check)
   //
   const int *conn=_nodal_connec->getConstPointer();
   const int *connI=_nodal_connec_index->getConstPointer();
-  MCAuto<DataArrayInt> o2n=DataArrayInt::New(); o2n->useArray(array,false,C_DEALLOC,nbCells,1);
+  MCAuto<DataArrayInt> o2n=DataArrayInt::New(); o2n->useArray(array,false,DeallocType::C_DEALLOC,nbCells,1);
   MCAuto<DataArrayInt> n2o=o2n->invertArrayO2N2N2O(nbCells);
   const int *n2oPtr=n2o->begin();
   MCAuto<DataArrayInt> newConn=DataArrayInt::New();
@@ -3306,8 +3306,14 @@ MEDCouplingFieldDouble *MEDCouplingUMesh::getMeasureFieldOnNode(bool isAbs) cons
   std::string name="MeasureOnNodeOfMesh_";
   name+=getName();
   int nbNodes=getNumberOfNodes();
+  MCAuto<DataArrayDouble> nnpc;
+  {
+    MCAuto<DataArrayInt> tmp(computeNbOfNodesPerCell());
+    nnpc=tmp->convertToDblArr();
+  }
+  std::for_each(nnpc->rwBegin(),nnpc->rwEnd(),[](double& v) { v=1./v; });
+  const double *nnpcPtr(nnpc->begin());
   MCAuto<MEDCouplingFieldDouble> ret=MEDCouplingFieldDouble::New(ON_NODES);
-  double cst=1./((double)getMeshDimension()+1.);
   MCAuto<DataArrayDouble> array=DataArrayDouble::New();
   array->alloc(nbNodes,1);
   double *valsToFill=array->getPointer();
@@ -3320,7 +3326,7 @@ MEDCouplingFieldDouble *MEDCouplingUMesh::getMeasureFieldOnNode(bool isAbs) cons
   const int *daIPtr=daInd->getConstPointer();
   for(int i=0;i<nbNodes;i++)
     for(const int *cell=daPtr+daIPtr[i];cell!=daPtr+daIPtr[i+1];cell++)
-      valsToFill[i]+=cst*values[*cell];
+      valsToFill[i]+=nnpcPtr[*cell]*values[*cell];
   ret->setMesh(this);
   ret->setArray(array);
   return ret.retn();
@@ -3925,7 +3931,7 @@ double MEDCouplingUMesh::distanceToPoint(const double *ptBg, const double *ptEnd
   if((int)std::distance(ptBg,ptEnd)!=spaceDim)
     { std::ostringstream oss; oss << "MEDCouplingUMesh::distanceToPoint : input point has to have dimension equal to the space dimension of this (" << spaceDim << ") !"; throw INTERP_KERNEL::Exception(oss.str()); }
   DataArrayInt *ret1=0;
-  MCAuto<DataArrayDouble> pts=DataArrayDouble::New(); pts->useArray(ptBg,false,C_DEALLOC,1,spaceDim);
+  MCAuto<DataArrayDouble> pts=DataArrayDouble::New(); pts->useArray(ptBg,false,DeallocType::C_DEALLOC,1,spaceDim);
   MCAuto<DataArrayDouble> ret0=distanceToPoints(pts,ret1);
   MCAuto<DataArrayInt> ret1Safe(ret1);
   cellId=*ret1Safe->begin();
@@ -6413,6 +6419,8 @@ MEDCouplingMesh *MEDCouplingUMesh::mergeMyselfWith(const MEDCouplingMesh *other)
  * Returns a new DataArrayDouble holding barycenters of all cells. The barycenter is
  * computed by averaging coordinates of cell nodes, so this method is not a right
  * choice for degenerated meshes (not well oriented, cells with measure close to zero).
+ * Beware also that for quadratic meshes, degenerated arc of circles are turned into linear edges for the computation.
+ * This happens with a default detection precision of eps=1.0e-14. If you need control over this use computeCellCenterOfMassWithPrecision().
  *  \return DataArrayDouble * - a new instance of DataArrayDouble, of size \a
  *          this->getNumberOfCells() tuples per \a this->getSpaceDimension()
  *          components. The caller is to delete this array using decrRef() as it is
@@ -6420,6 +6428,7 @@ MEDCouplingMesh *MEDCouplingUMesh::mergeMyselfWith(const MEDCouplingMesh *other)
  *  \throw If the coordinates array is not set.
  *  \throw If the nodal connectivity of cells is not defined.
  *  \sa MEDCouplingUMesh::computeIsoBarycenterOfNodesPerCell
+ *  \sa MEDCouplingUMesh::computeCellCenterOfMassWithPrecision
  */
 DataArrayDouble *MEDCouplingUMesh::computeCellCenterOfMass() const
 {
@@ -6441,6 +6450,27 @@ DataArrayDouble *MEDCouplingUMesh::computeCellCenterOfMass() const
   return ret.retn();
 }
 
+
+/*!
+ * See computeCellCenterOfMass().
+ *  \param eps a precision for the detection of degenerated arc of circles.
+ *  \return DataArrayDouble * - a new instance of DataArrayDouble, of size \a
+ *          this->getNumberOfCells() tuples per \a this->getSpaceDimension()
+ *          components. The caller is to delete this array using decrRef() as it is
+ *          no more needed.
+ *  \throw If the coordinates array is not set.
+ *  \throw If the nodal connectivity of cells is not defined.
+ *  \sa MEDCouplingUMesh::computeIsoBarycenterOfNodesPerCell
+ *  \sa MEDCouplingUMesh::computeCellCenterOfMassWithPrecision
+ */
+DataArrayDouble *MEDCouplingUMesh::computeCellCenterOfMassWithPrecision(double eps) const
+{
+  INTERP_KERNEL::QuadraticPlanarPrecision prec(eps);
+  MCAuto<DataArrayDouble> ret = computeCellCenterOfMass();
+  return ret.retn();
+}
+
+
 /*!
  * This method computes for each cell in \a this, the location of the iso barycenter of nodes constituting
  * the cell. Contrary to badly named MEDCouplingUMesh::computeCellCenterOfMass method that returns the center of inertia of the
@@ -7004,26 +7034,29 @@ bool MEDCouplingUMesh::IsPolygonWellOriented(bool isQuadratic, const double *vec
   if(!isQuadratic)
     for(i=0;i<sz;i++)
       {
+        // Algorithm: sum in v the cross products of (e1, e2) where e_i it the vector between (0,0,0) and point i
+        // and e2 is linear point directly following e1 in the connectivity. All points are used.
         v[0]+=coords[3*begin[i]+1]*coords[3*begin[(i+1)%sz]+2]-coords[3*begin[i]+2]*coords[3*begin[(i+1)%sz]+1];
         v[1]+=coords[3*begin[i]+2]*coords[3*begin[(i+1)%sz]]-coords[3*begin[i]]*coords[3*begin[(i+1)%sz]+2];
         v[2]+=coords[3*begin[i]]*coords[3*begin[(i+1)%sz]+1]-coords[3*begin[i]+1]*coords[3*begin[(i+1)%sz]];
       }
   else
     {
-      // Use all points if quadratic (taking only linear points might lead to issues if the linearized version of the
+      // Same algorithm as above but also using intermediate quadratic points.
+      // (taking only linear points might lead to issues if the linearized version of the
       // polygon is not convex or self-intersecting ... see testCellOrientation4)
-      sz /= 2;
+      int hsz = sz/2;
       for(std::size_t j=0;j<sz;j++)
         {
           if (j%2)  // current point i is quadratic, next point i+1 is standard
             {
-              i = sz+j;
-              ip1 = (j+1)%sz; // ip1 = "i+1"
+              i = hsz+(j-1)/2;
+              ip1 = ((j-1)/2 + 1)%hsz; // ip1 means "i+1", i.e. next point
             }
           else      // current point i is standard, next point i+1 is quadratic
             {
-              i = j;
-              ip1 = j+sz;
+              i = j/2;
+              ip1 = j/2+hsz;
             }
           v[0]+=coords[3*begin[i]+1]*coords[3*begin[ip1]+2]-coords[3*begin[i]+2]*coords[3*begin[ip1]+1];
           v[1]+=coords[3*begin[i]+2]*coords[3*begin[ip1]]-coords[3*begin[i]]*coords[3*begin[ip1]+2];
@@ -7804,308 +7837,6 @@ bool MEDCouplingUMesh::BuildConvexEnvelopOf2DCellJarvis(const double *coords, co
     throw INTERP_KERNEL::Exception("MEDCouplingUMesh::BuildConvexEnvelopOf2DCellJarvis : invalid 2D cell connectivity !");
 }
 
-/*!
- * This method works on an input pair (\b arr, \b arrIndx) where \b arr indexes is in \b arrIndx.
- * This method will not impact the size of inout parameter \b arrIndx but the size of \b arr will be modified in case of suppression.
- *
- * \param [in] idsToRemoveBg begin of set of ids to remove in \b arr (included)
- * \param [in] idsToRemoveEnd end of set of ids to remove in \b arr (excluded)
- * \param [in,out] arr array in which the remove operation will be done.
- * \param [in,out] arrIndx array in the remove operation will modify
- * \param [in] offsetForRemoval (by default 0) offset so that for each i in [0,arrIndx->getNumberOfTuples()-1) removal process will be performed in the following range [arr+arrIndx[i]+offsetForRemoval,arr+arr[i+1])
- * \return true if \b arr and \b arrIndx have been modified, false if not.
- */
-bool MEDCouplingUMesh::RemoveIdsFromIndexedArrays(const int *idsToRemoveBg, const int *idsToRemoveEnd, DataArrayInt *arr, DataArrayInt *arrIndx, int offsetForRemoval)
-{
-  if(!arrIndx || !arr)
-    throw INTERP_KERNEL::Exception("MEDCouplingUMesh::RemoveIdsFromIndexedArrays : some input arrays are empty !");
-  if(offsetForRemoval<0)
-    throw INTERP_KERNEL::Exception("MEDCouplingUMesh::RemoveIdsFromIndexedArrays : offsetForRemoval should be >=0 !");
-  std::set<int> s(idsToRemoveBg,idsToRemoveEnd);
-  int nbOfGrps=arrIndx->getNumberOfTuples()-1;
-  int *arrIPtr=arrIndx->getPointer();
-  *arrIPtr++=0;
-  int previousArrI=0;
-  const int *arrPtr=arr->begin();
-  std::vector<int> arrOut;//no utility to switch to DataArrayInt because copy always needed
-  for(int i=0;i<nbOfGrps;i++,arrIPtr++)
-    {
-      if(*arrIPtr-previousArrI>offsetForRemoval)
-        {
-          for(const int *work=arrPtr+previousArrI+offsetForRemoval;work!=arrPtr+*arrIPtr;work++)
-            {
-              if(s.find(*work)==s.end())
-                arrOut.push_back(*work);
-            }
-        }
-      previousArrI=*arrIPtr;
-      *arrIPtr=(int)arrOut.size();
-    }
-  if(arr->getNumberOfTuples()==arrOut.size())
-    return false;
-  arr->alloc((int)arrOut.size(),1);
-  std::copy(arrOut.begin(),arrOut.end(),arr->getPointer());
-  return true;
-}
-
-/*!
- * This method works on a pair input (\b arrIn, \b arrIndxIn) where \b arrIn indexes is in \b arrIndxIn
- * (\ref numbering-indirect).
- * This method returns the result of the extraction ( specified by a set of ids in [\b idsOfSelectBg , \b idsOfSelectEnd ) ).
- * The selection of extraction is done standardly in new2old format.
- * This method returns indexed arrays (\ref numbering-indirect) using 2 arrays (arrOut,arrIndexOut).
- *
- * \param [in] idsOfSelectBg begin of set of ids of the input extraction (included)
- * \param [in] idsOfSelectEnd end of set of ids of the input extraction (excluded)
- * \param [in] arrIn arr origin array from which the extraction will be done.
- * \param [in] arrIndxIn is the input index array allowing to walk into \b arrIn
- * \param [out] arrOut the resulting array
- * \param [out] arrIndexOut the index array of the resulting array \b arrOut
- * \sa MEDCouplingUMesh::ExtractFromIndexedArraysSlice
- */
-void MEDCouplingUMesh::ExtractFromIndexedArrays(const int *idsOfSelectBg, const int *idsOfSelectEnd, const DataArrayInt *arrIn, const DataArrayInt *arrIndxIn,
-                                                DataArrayInt* &arrOut, DataArrayInt* &arrIndexOut)
-{
-  if(!arrIn || !arrIndxIn)
-    throw INTERP_KERNEL::Exception("MEDCouplingUMesh::ExtractFromIndexedArrays : input pointer is NULL !");
-  arrIn->checkAllocated(); arrIndxIn->checkAllocated();
-  if(arrIn->getNumberOfComponents()!=1 || arrIndxIn->getNumberOfComponents()!=1)
-    throw INTERP_KERNEL::Exception("MEDCouplingUMesh::ExtractFromIndexedArrays : input arrays must have exactly one component !");
-  std::size_t sz=std::distance(idsOfSelectBg,idsOfSelectEnd);
-  const int *arrInPtr=arrIn->begin();
-  const int *arrIndxPtr=arrIndxIn->begin();
-  int nbOfGrps=arrIndxIn->getNumberOfTuples()-1;
-  if(nbOfGrps<0)
-    throw INTERP_KERNEL::Exception("MEDCouplingUMesh::ExtractFromIndexedArrays : The format of \"arrIndxIn\" is invalid ! Its nb of tuples should be >=1 !");
-  int maxSizeOfArr=arrIn->getNumberOfTuples();
-  MCAuto<DataArrayInt> arro=DataArrayInt::New();
-  MCAuto<DataArrayInt> arrIo=DataArrayInt::New();
-  arrIo->alloc((int)(sz+1),1);
-  const int *idsIt=idsOfSelectBg;
-  int *work=arrIo->getPointer();
-  *work++=0;
-  int lgth=0;
-  for(std::size_t i=0;i<sz;i++,work++,idsIt++)
-    {
-      if(*idsIt>=0 && *idsIt<nbOfGrps)
-        lgth+=arrIndxPtr[*idsIt+1]-arrIndxPtr[*idsIt];
-      else
-        {
-          std::ostringstream oss; oss << "MEDCouplingUMesh::ExtractFromIndexedArrays : id located on pos #" << i << " value is " << *idsIt << " ! Must be in [0," << nbOfGrps << ") !";
-          throw INTERP_KERNEL::Exception(oss.str());
-        }
-      if(lgth>=work[-1])
-        *work=lgth;
-      else
-        {
-          std::ostringstream oss; oss << "MEDCouplingUMesh::ExtractFromIndexedArrays : id located on pos #" << i << " value is " << *idsIt << " and at this pos arrIndxIn[" << *idsIt;
-          oss << "+1]-arrIndxIn[" << *idsIt << "] < 0 ! The input index array is bugged !";
-          throw INTERP_KERNEL::Exception(oss.str());
-        }
-    }
-  arro->alloc(lgth,1);
-  work=arro->getPointer();
-  idsIt=idsOfSelectBg;
-  for(std::size_t i=0;i<sz;i++,idsIt++)
-    {
-      if(arrIndxPtr[*idsIt]>=0 && arrIndxPtr[*idsIt+1]<=maxSizeOfArr)
-        work=std::copy(arrInPtr+arrIndxPtr[*idsIt],arrInPtr+arrIndxPtr[*idsIt+1],work);
-      else
-        {
-          std::ostringstream oss; oss << "MEDCouplingUMesh::ExtractFromIndexedArrays : id located on pos #" << i << " value is " << *idsIt << " arrIndx[" << *idsIt << "] must be >= 0 and arrIndx[";
-          oss << *idsIt << "+1] <= " << maxSizeOfArr << " (the size of arrIn)!";
-          throw INTERP_KERNEL::Exception(oss.str());
-        }
-    }
-  arrOut=arro.retn();
-  arrIndexOut=arrIo.retn();
-}
-
-/*!
- * This method works on a pair input (\b arrIn, \b arrIndxIn) where \b arrIn indexes is in \b arrIndxIn
- * (\ref numbering-indirect).
- * This method returns the result of the extraction ( specified by a set of ids with a slice given by \a idsOfSelectStart, \a idsOfSelectStop and \a idsOfSelectStep ).
- * The selection of extraction is done standardly in new2old format.
- * This method returns indexed arrays (\ref numbering-indirect) using 2 arrays (arrOut,arrIndexOut).
- *
- * \param [in] idsOfSelectStart begin of set of ids of the input extraction (included)
- * \param [in] idsOfSelectStop end of set of ids of the input extraction (excluded)
- * \param [in] idsOfSelectStep
- * \param [in] arrIn arr origin array from which the extraction will be done.
- * \param [in] arrIndxIn is the input index array allowing to walk into \b arrIn
- * \param [out] arrOut the resulting array
- * \param [out] arrIndexOut the index array of the resulting array \b arrOut
- * \sa MEDCouplingUMesh::ExtractFromIndexedArrays
- */
-void MEDCouplingUMesh::ExtractFromIndexedArraysSlice(int idsOfSelectStart, int idsOfSelectStop, int idsOfSelectStep, const DataArrayInt *arrIn, const DataArrayInt *arrIndxIn,
-                                                 DataArrayInt* &arrOut, DataArrayInt* &arrIndexOut)
-{
-  if(!arrIn || !arrIndxIn)
-    throw INTERP_KERNEL::Exception("MEDCouplingUMesh::ExtractFromIndexedArraysSlice : input pointer is NULL !");
-  arrIn->checkAllocated(); arrIndxIn->checkAllocated();
-  if(arrIn->getNumberOfComponents()!=1 || arrIndxIn->getNumberOfComponents()!=1)
-    throw INTERP_KERNEL::Exception("MEDCouplingUMesh::ExtractFromIndexedArraysSlice : input arrays must have exactly one component !");
-  int sz=DataArrayInt::GetNumberOfItemGivenBESRelative(idsOfSelectStart,idsOfSelectStop,idsOfSelectStep,"MEDCouplingUMesh::ExtractFromIndexedArraysSlice : Input slice ");
-  const int *arrInPtr=arrIn->begin();
-  const int *arrIndxPtr=arrIndxIn->begin();
-  int nbOfGrps=arrIndxIn->getNumberOfTuples()-1;
-  if(nbOfGrps<0)
-    throw INTERP_KERNEL::Exception("MEDCouplingUMesh::ExtractFromIndexedArraysSlice : The format of \"arrIndxIn\" is invalid ! Its nb of tuples should be >=1 !");
-  int maxSizeOfArr=arrIn->getNumberOfTuples();
-  MCAuto<DataArrayInt> arro=DataArrayInt::New();
-  MCAuto<DataArrayInt> arrIo=DataArrayInt::New();
-  arrIo->alloc((int)(sz+1),1);
-  int idsIt=idsOfSelectStart;
-  int *work=arrIo->getPointer();
-  *work++=0;
-  int lgth=0;
-  for(int i=0;i<sz;i++,work++,idsIt+=idsOfSelectStep)
-    {
-      if(idsIt>=0 && idsIt<nbOfGrps)
-        lgth+=arrIndxPtr[idsIt+1]-arrIndxPtr[idsIt];
-      else
-        {
-          std::ostringstream oss; oss << "MEDCouplingUMesh::ExtractFromIndexedArraysSlice : id located on pos #" << i << " value is " << idsIt << " ! Must be in [0," << nbOfGrps << ") !";
-          throw INTERP_KERNEL::Exception(oss.str());
-        }
-      if(lgth>=work[-1])
-        *work=lgth;
-      else
-        {
-          std::ostringstream oss; oss << "MEDCouplingUMesh::ExtractFromIndexedArraysSlice : id located on pos #" << i << " value is " << idsIt << " and at this pos arrIndxIn[" << idsIt;
-          oss << "+1]-arrIndxIn[" << idsIt << "] < 0 ! The input index array is bugged !";
-          throw INTERP_KERNEL::Exception(oss.str());
-        }
-    }
-  arro->alloc(lgth,1);
-  work=arro->getPointer();
-  idsIt=idsOfSelectStart;
-  for(int i=0;i<sz;i++,idsIt+=idsOfSelectStep)
-    {
-      if(arrIndxPtr[idsIt]>=0 && arrIndxPtr[idsIt+1]<=maxSizeOfArr)
-        work=std::copy(arrInPtr+arrIndxPtr[idsIt],arrInPtr+arrIndxPtr[idsIt+1],work);
-      else
-        {
-          std::ostringstream oss; oss << "MEDCouplingUMesh::ExtractFromIndexedArraysSlice : id located on pos #" << i << " value is " << idsIt << " arrIndx[" << idsIt << "] must be >= 0 and arrIndx[";
-          oss << idsIt << "+1] <= " << maxSizeOfArr << " (the size of arrIn)!";
-          throw INTERP_KERNEL::Exception(oss.str());
-        }
-    }
-  arrOut=arro.retn();
-  arrIndexOut=arrIo.retn();
-}
-
-/*!
- * This method works on an input pair (\b arrIn, \b arrIndxIn) where \b arrIn indexes is in \b arrIndxIn.
- * This method builds an output pair (\b arrOut,\b arrIndexOut) that is a copy from \b arrIn for all cell ids \b not \b in [ \b idsOfSelectBg , \b idsOfSelectEnd ) and for
- * cellIds \b in [ \b idsOfSelectBg , \b idsOfSelectEnd ) a copy coming from the corresponding values in input pair (\b srcArr, \b srcArrIndex).
- * This method is an generalization of MEDCouplingUMesh::SetPartOfIndexedArraysSameIdx that performs the same thing but by without building explicitly a result output arrays.
- *
- * \param [in] idsOfSelectBg begin of set of ids of the input extraction (included)
- * \param [in] idsOfSelectEnd end of set of ids of the input extraction (excluded)
- * \param [in] arrIn arr origin array from which the extraction will be done.
- * \param [in] arrIndxIn is the input index array allowing to walk into \b arrIn
- * \param [in] srcArr input array that will be used as source of copy for ids in [ \b idsOfSelectBg, \b idsOfSelectEnd )
- * \param [in] srcArrIndex index array of \b srcArr
- * \param [out] arrOut the resulting array
- * \param [out] arrIndexOut the index array of the resulting array \b arrOut
- *
- * \sa MEDCouplingUMesh::SetPartOfIndexedArraysSameIdx
- */
-void MEDCouplingUMesh::SetPartOfIndexedArrays(const int *idsOfSelectBg, const int *idsOfSelectEnd, const DataArrayInt *arrIn, const DataArrayInt *arrIndxIn,
-                                              const DataArrayInt *srcArr, const DataArrayInt *srcArrIndex,
-                                              DataArrayInt* &arrOut, DataArrayInt* &arrIndexOut)
-{
-  if(arrIn==0 || arrIndxIn==0 || srcArr==0 || srcArrIndex==0)
-    throw INTERP_KERNEL::Exception("MEDCouplingUMesh::SetPartOfIndexedArrays : presence of null pointer in input parameter !");
-  MCAuto<DataArrayInt> arro=DataArrayInt::New();
-  MCAuto<DataArrayInt> arrIo=DataArrayInt::New();
-  int nbOfTuples=arrIndxIn->getNumberOfTuples()-1;
-  std::vector<bool> v(nbOfTuples,true);
-  int offset=0;
-  const int *arrIndxInPtr=arrIndxIn->begin();
-  const int *srcArrIndexPtr=srcArrIndex->begin();
-  for(const int *it=idsOfSelectBg;it!=idsOfSelectEnd;it++,srcArrIndexPtr++)
-    {
-      if(*it>=0 && *it<nbOfTuples)
-        {
-          v[*it]=false;
-          offset+=(srcArrIndexPtr[1]-srcArrIndexPtr[0])-(arrIndxInPtr[*it+1]-arrIndxInPtr[*it]);
-        }
-      else
-        {
-          std::ostringstream oss; oss << "MEDCouplingUMesh::SetPartOfIndexedArrays : On pos #" << std::distance(idsOfSelectBg,it) << " value is " << *it << " not in [0," << nbOfTuples << ") !";
-          throw INTERP_KERNEL::Exception(oss.str());
-        }
-    }
-  srcArrIndexPtr=srcArrIndex->begin();
-  arrIo->alloc(nbOfTuples+1,1);
-  arro->alloc(arrIn->getNumberOfTuples()+offset,1);
-  const int *arrInPtr=arrIn->begin();
-  const int *srcArrPtr=srcArr->begin();
-  int *arrIoPtr=arrIo->getPointer(); *arrIoPtr++=0;
-  int *arroPtr=arro->getPointer();
-  for(int ii=0;ii<nbOfTuples;ii++,arrIoPtr++)
-    {
-      if(v[ii])
-        {
-          arroPtr=std::copy(arrInPtr+arrIndxInPtr[ii],arrInPtr+arrIndxInPtr[ii+1],arroPtr);
-          *arrIoPtr=arrIoPtr[-1]+(arrIndxInPtr[ii+1]-arrIndxInPtr[ii]);
-        }
-      else
-        {
-          std::size_t pos=std::distance(idsOfSelectBg,std::find(idsOfSelectBg,idsOfSelectEnd,ii));
-          arroPtr=std::copy(srcArrPtr+srcArrIndexPtr[pos],srcArrPtr+srcArrIndexPtr[pos+1],arroPtr);
-          *arrIoPtr=arrIoPtr[-1]+(srcArrIndexPtr[pos+1]-srcArrIndexPtr[pos]);
-        }
-    }
-  arrOut=arro.retn();
-  arrIndexOut=arrIo.retn();
-}
-
-/*!
- * This method works on an input pair (\b arrIn, \b arrIndxIn) where \b arrIn indexes is in \b arrIndxIn.
- * This method is an specialization of MEDCouplingUMesh::SetPartOfIndexedArrays in the case of assignment do not modify the index in \b arrIndxIn.
- *
- * \param [in] idsOfSelectBg begin of set of ids of the input extraction (included)
- * \param [in] idsOfSelectEnd end of set of ids of the input extraction (excluded)
- * \param [in,out] arrInOut arr origin array from which the extraction will be done.
- * \param [in] arrIndxIn is the input index array allowing to walk into \b arrIn
- * \param [in] srcArr input array that will be used as source of copy for ids in [ \b idsOfSelectBg , \b idsOfSelectEnd )
- * \param [in] srcArrIndex index array of \b srcArr
- *
- * \sa MEDCouplingUMesh::SetPartOfIndexedArrays
- */
-void MEDCouplingUMesh::SetPartOfIndexedArraysSameIdx(const int *idsOfSelectBg, const int *idsOfSelectEnd, DataArrayInt *arrInOut, const DataArrayInt *arrIndxIn,
-                                                     const DataArrayInt *srcArr, const DataArrayInt *srcArrIndex)
-{
-  if(arrInOut==0 || arrIndxIn==0 || srcArr==0 || srcArrIndex==0)
-    throw INTERP_KERNEL::Exception("MEDCouplingUMesh::SetPartOfIndexedArraysSameIdx : presence of null pointer in input parameter !");
-  int nbOfTuples=arrIndxIn->getNumberOfTuples()-1;
-  const int *arrIndxInPtr=arrIndxIn->begin();
-  const int *srcArrIndexPtr=srcArrIndex->begin();
-  int *arrInOutPtr=arrInOut->getPointer();
-  const int *srcArrPtr=srcArr->begin();
-  for(const int *it=idsOfSelectBg;it!=idsOfSelectEnd;it++,srcArrIndexPtr++)
-    {
-      if(*it>=0 && *it<nbOfTuples)
-        {
-          if(srcArrIndexPtr[1]-srcArrIndexPtr[0]==arrIndxInPtr[*it+1]-arrIndxInPtr[*it])
-            std::copy(srcArrPtr+srcArrIndexPtr[0],srcArrPtr+srcArrIndexPtr[1],arrInOutPtr+arrIndxInPtr[*it]);
-          else
-            {
-              std::ostringstream oss; oss << "MEDCouplingUMesh::SetPartOfIndexedArraysSameIdx : On pos #" << std::distance(idsOfSelectBg,it) << " id (idsOfSelectBg[" << std::distance(idsOfSelectBg,it)<< "]) is " << *it << " arrIndxIn[id+1]-arrIndxIn[id]!=srcArrIndex[pos+1]-srcArrIndex[pos] !";
-              throw INTERP_KERNEL::Exception(oss.str());
-            }
-        }
-      else
-        {
-          std::ostringstream oss; oss << "MEDCouplingUMesh::SetPartOfIndexedArraysSameIdx : On pos #" << std::distance(idsOfSelectBg,it) << " value is " << *it << " not in [0," << nbOfTuples << ") !";
-          throw INTERP_KERNEL::Exception(oss.str());
-        }
-    }
-}
-
 /*!
  * This method works on a pair input (\b arrIn, \b arrIndxIn) where \b arr indexes is in \b arrIndxIn.
  * This method expects that these two input arrays come from the output of MEDCouplingUMesh::computeNeighborsOfCells method.
@@ -8158,118 +7889,6 @@ DataArrayInt *MEDCouplingUMesh::ComputeSpreadZoneGraduallyFromSeed(const int *se
 }
 
 
-/*!
- * This method works on an input pair (\b arrIn, \b arrIndxIn) where \b arrIn indexes is in \b arrIndxIn.
- * This method builds an output pair (\b arrOut,\b arrIndexOut) that is a copy from \b arrIn for all cell ids \b not \b in [ \b idsOfSelectBg , \b idsOfSelectEnd ) and for
- * cellIds \b in [\b idsOfSelectBg, \b idsOfSelectEnd) a copy coming from the corresponding values in input pair (\b srcArr, \b srcArrIndex).
- * This method is an generalization of MEDCouplingUMesh::SetPartOfIndexedArraysSameIdx that performs the same thing but by without building explicitly a result output arrays.
- *
- * \param [in] start begin of set of ids of the input extraction (included)
- * \param [in] end end of set of ids of the input extraction (excluded)
- * \param [in] step step of the set of ids in range mode.
- * \param [in] arrIn arr origin array from which the extraction will be done.
- * \param [in] arrIndxIn is the input index array allowing to walk into \b arrIn
- * \param [in] srcArr input array that will be used as source of copy for ids in [\b idsOfSelectBg, \b idsOfSelectEnd)
- * \param [in] srcArrIndex index array of \b srcArr
- * \param [out] arrOut the resulting array
- * \param [out] arrIndexOut the index array of the resulting array \b arrOut
- *
- * \sa MEDCouplingUMesh::SetPartOfIndexedArraysSameIdx MEDCouplingUMesh::SetPartOfIndexedArrays
- */
-void MEDCouplingUMesh::SetPartOfIndexedArraysSlice(int start, int end, int step, const DataArrayInt *arrIn, const DataArrayInt *arrIndxIn,
-                                               const DataArrayInt *srcArr, const DataArrayInt *srcArrIndex,
-                                               DataArrayInt* &arrOut, DataArrayInt* &arrIndexOut)
-{
-  if(arrIn==0 || arrIndxIn==0 || srcArr==0 || srcArrIndex==0)
-    throw INTERP_KERNEL::Exception("MEDCouplingUMesh::SetPartOfIndexedArraysSlice : presence of null pointer in input parameter !");
-  MCAuto<DataArrayInt> arro=DataArrayInt::New();
-  MCAuto<DataArrayInt> arrIo=DataArrayInt::New();
-  int nbOfTuples=arrIndxIn->getNumberOfTuples()-1;
-  int offset=0;
-  const int *arrIndxInPtr=arrIndxIn->begin();
-  const int *srcArrIndexPtr=srcArrIndex->begin();
-  int nbOfElemsToSet=DataArray::GetNumberOfItemGivenBESRelative(start,end,step,"MEDCouplingUMesh::SetPartOfIndexedArraysSlice : ");
-  int it=start;
-  for(int i=0;i<nbOfElemsToSet;i++,srcArrIndexPtr++,it+=step)
-    {
-      if(it>=0 && it<nbOfTuples)
-        offset+=(srcArrIndexPtr[1]-srcArrIndexPtr[0])-(arrIndxInPtr[it+1]-arrIndxInPtr[it]);
-      else
-        {
-          std::ostringstream oss; oss << "MEDCouplingUMesh::SetPartOfIndexedArraysSlice : On pos #" << i << " value is " << it << " not in [0," << nbOfTuples << ") !";
-          throw INTERP_KERNEL::Exception(oss.str());
-        }
-    }
-  srcArrIndexPtr=srcArrIndex->begin();
-  arrIo->alloc(nbOfTuples+1,1);
-  arro->alloc(arrIn->getNumberOfTuples()+offset,1);
-  const int *arrInPtr=arrIn->begin();
-  const int *srcArrPtr=srcArr->begin();
-  int *arrIoPtr=arrIo->getPointer(); *arrIoPtr++=0;
-  int *arroPtr=arro->getPointer();
-  for(int ii=0;ii<nbOfTuples;ii++,arrIoPtr++)
-    {
-      int pos=DataArray::GetPosOfItemGivenBESRelativeNoThrow(ii,start,end,step);
-      if(pos<0)
-        {
-          arroPtr=std::copy(arrInPtr+arrIndxInPtr[ii],arrInPtr+arrIndxInPtr[ii+1],arroPtr);
-          *arrIoPtr=arrIoPtr[-1]+(arrIndxInPtr[ii+1]-arrIndxInPtr[ii]);
-        }
-      else
-        {
-          arroPtr=std::copy(srcArrPtr+srcArrIndexPtr[pos],srcArrPtr+srcArrIndexPtr[pos+1],arroPtr);
-          *arrIoPtr=arrIoPtr[-1]+(srcArrIndexPtr[pos+1]-srcArrIndexPtr[pos]);
-        }
-    }
-  arrOut=arro.retn();
-  arrIndexOut=arrIo.retn();
-}
-
-/*!
- * This method works on an input pair (\b arrIn, \b arrIndxIn) where \b arrIn indexes is in \b arrIndxIn.
- * This method is an specialization of MEDCouplingUMesh::SetPartOfIndexedArrays in the case of assignment do not modify the index in \b arrIndxIn.
- *
- * \param [in] start begin of set of ids of the input extraction (included)
- * \param [in] end end of set of ids of the input extraction (excluded)
- * \param [in] step step of the set of ids in range mode.
- * \param [in,out] arrInOut arr origin array from which the extraction will be done.
- * \param [in] arrIndxIn is the input index array allowing to walk into \b arrIn
- * \param [in] srcArr input array that will be used as source of copy for ids in [\b idsOfSelectBg, \b idsOfSelectEnd)
- * \param [in] srcArrIndex index array of \b srcArr
- *
- * \sa MEDCouplingUMesh::SetPartOfIndexedArraysSlice MEDCouplingUMesh::SetPartOfIndexedArraysSameIdx
- */
-void MEDCouplingUMesh::SetPartOfIndexedArraysSameIdxSlice(int start, int end, int step, DataArrayInt *arrInOut, const DataArrayInt *arrIndxIn,
-                                                      const DataArrayInt *srcArr, const DataArrayInt *srcArrIndex)
-{
-  if(arrInOut==0 || arrIndxIn==0 || srcArr==0 || srcArrIndex==0)
-    throw INTERP_KERNEL::Exception("MEDCouplingUMesh::SetPartOfIndexedArraysSameIdxSlice : presence of null pointer in input parameter !");
-  int nbOfTuples=arrIndxIn->getNumberOfTuples()-1;
-  const int *arrIndxInPtr=arrIndxIn->begin();
-  const int *srcArrIndexPtr=srcArrIndex->begin();
-  int *arrInOutPtr=arrInOut->getPointer();
-  const int *srcArrPtr=srcArr->begin();
-  int nbOfElemsToSet=DataArray::GetNumberOfItemGivenBESRelative(start,end,step,"MEDCouplingUMesh::SetPartOfIndexedArraysSameIdxSlice : ");
-  int it=start;
-  for(int i=0;i<nbOfElemsToSet;i++,srcArrIndexPtr++,it+=step)
-    {
-      if(it>=0 && it<nbOfTuples)
-        {
-          if(srcArrIndexPtr[1]-srcArrIndexPtr[0]==arrIndxInPtr[it+1]-arrIndxInPtr[it])
-            std::copy(srcArrPtr+srcArrIndexPtr[0],srcArrPtr+srcArrIndexPtr[1],arrInOutPtr+arrIndxInPtr[it]);
-          else
-            {
-              std::ostringstream oss; oss << "MEDCouplingUMesh::SetPartOfIndexedArraysSameIdxSlice : On pos #" << i << " id (idsOfSelectBg[" << i << "]) is " << it << " arrIndxIn[id+1]-arrIndxIn[id]!=srcArrIndex[pos+1]-srcArrIndex[pos] !";
-              throw INTERP_KERNEL::Exception(oss.str());
-            }
-        }
-      else
-        {
-          std::ostringstream oss; oss << "MEDCouplingUMesh::SetPartOfIndexedArraysSameIdxSlice : On pos #" << i << " value is " << it << " not in [0," << nbOfTuples << ") !";
-          throw INTERP_KERNEL::Exception(oss.str());
-        }
-    }
-}
 
 /*!
  * \b this is expected to be a mesh fully defined whose spaceDim==meshDim.
index c8b48dcee4fdf3f320337dedd6e645b095bca580..25fb72c8d6eb2939a8062e1bf70b06cfc8f3023d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -234,6 +234,7 @@ namespace MEDCoupling
     //
     MEDCOUPLING_EXPORT MEDCouplingMesh *mergeMyselfWith(const MEDCouplingMesh *other) const;
     MEDCOUPLING_EXPORT DataArrayDouble *computeCellCenterOfMass() const;
+    MEDCOUPLING_EXPORT DataArrayDouble *computeCellCenterOfMassWithPrecision(double eps) const;
     MEDCOUPLING_EXPORT DataArrayDouble *computeIsoBarycenterOfNodesPerCell() const;
     MEDCOUPLING_EXPORT DataArrayDouble *getPartBarycenterAndOwner(const int *begin, const int *end) const;
     MEDCOUPLING_EXPORT DataArrayDouble *computePlaneEquationOf3DFaces() const;
@@ -265,21 +266,6 @@ namespace MEDCoupling
     MEDCOUPLING_EXPORT static void Intersect2DMeshWith1DLine(const MEDCouplingUMesh *mesh2D, const MEDCouplingUMesh *mesh1D,
                                                              double eps, MEDCouplingUMesh *&splitMesh2D, MEDCouplingUMesh *&splitMesh1D, DataArrayInt *&cellIdInMesh2D, DataArrayInt *&cellIdInMesh1D);
     MEDCOUPLING_EXPORT static bool BuildConvexEnvelopOf2DCellJarvis(const double *coords, const int *nodalConnBg, const int *nodalConnEnd, DataArrayInt *nodalConnecOut);
-    MEDCOUPLING_EXPORT static bool RemoveIdsFromIndexedArrays(const int *idsToRemoveBg, const int *idsToRemoveEnd, DataArrayInt *arr, DataArrayInt *arrIndx, int offsetForRemoval=0);
-    MEDCOUPLING_EXPORT static void ExtractFromIndexedArrays(const int *idsOfSelectBg, const int *idsOfSelectEnd, const DataArrayInt *arrIn, const DataArrayInt *arrIndxIn,
-                                                            DataArrayInt* &arrOut, DataArrayInt* &arrIndexOut);
-    MEDCOUPLING_EXPORT static void ExtractFromIndexedArraysSlice(int idsOfSelectStart, int idsOfSelectStop, int idsOfSelectStep, const DataArrayInt *arrIn, const DataArrayInt *arrIndxIn,
-                                                             DataArrayInt* &arrOut, DataArrayInt* &arrIndexOut);
-    MEDCOUPLING_EXPORT static void SetPartOfIndexedArrays(const int *idsOfSelectBg, const int *idsOfSelectEnd, const DataArrayInt *arrIn, const DataArrayInt *arrIndxIn,
-                                                          const DataArrayInt *srcArr, const DataArrayInt *srcArrIndex,
-                                                          DataArrayInt* &arrOut, DataArrayInt* &arrIndexOut);
-    MEDCOUPLING_EXPORT static void SetPartOfIndexedArraysSameIdx(const int *idsOfSelectBg, const int *idsOfSelectEnd, DataArrayInt *arrInOut, const DataArrayInt *arrIndxIn,
-                                                                 const DataArrayInt *srcArr, const DataArrayInt *srcArrIndex);
-    MEDCOUPLING_EXPORT static void SetPartOfIndexedArraysSlice(int start, int end, int step, const DataArrayInt *arrIn, const DataArrayInt *arrIndxIn,
-                                                           const DataArrayInt *srcArr, const DataArrayInt *srcArrIndex,
-                                                           DataArrayInt* &arrOut, DataArrayInt* &arrIndexOut);
-    MEDCOUPLING_EXPORT static void SetPartOfIndexedArraysSameIdxSlice(int start, int end, int step, DataArrayInt *arrInOut, const DataArrayInt *arrIndxIn,
-                                                                  const DataArrayInt *srcArr, const DataArrayInt *srcArrIndex);
     MEDCOUPLING_EXPORT static std::vector<DataArrayInt *> PartitionBySpreadZone(const DataArrayInt *arrIn, const DataArrayInt *arrIndxIn);
     MEDCOUPLING_EXPORT static DataArrayInt *ComputeSpreadZoneGradually(const DataArrayInt *arrIn, const DataArrayInt *arrIndxIn);
     MEDCOUPLING_EXPORT static DataArrayInt *ComputeSpreadZoneGraduallyFromSeed(const int *seedBg, const int *seedEnd, const DataArrayInt *arrIn, const DataArrayInt *arrIndxIn, int nbOfDepthPeeling, int& nbOfDepthPeelingPerformed);
@@ -377,8 +363,8 @@ namespace MEDCoupling
     /// @endcond
   private:
     int _mesh_dim;
-    DataArrayInt *_nodal_connec;
-    DataArrayInt *_nodal_connec_index;
+    DataArrayIdType *_nodal_connec;
+    DataArrayIdType *_nodal_connec_index;
     std::set<INTERP_KERNEL::NormalizedCellType> _types;
   public:
     static double EPS_FOR_POLYH_ORIENTATION;
index f2a692b041c5c47d3d65e6ce351d35bd9c2467c4..581cd29ca331e2fc16e23d9121678a856ed272dc 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2018  CEA/DEN, EDF R&D
+// Copyright (C) 2018-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index a96968dd35458aeb37fa7c7046f1d62accb6221a..37640b535fdcf95e0e52809e6874bb19207f5e96 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -898,9 +898,9 @@ MEDCouplingUMesh *MEDCouplingUMesh::buildPartOfMySelfKeepCoords(const int *begin
       connRetWork=std::copy(conn+connIndex[*work],conn+connIndex[*work+1],connRetWork);
     }
   MCAuto<DataArrayInt> connRetArr=DataArrayInt::New();
-  connRetArr->useArray(connRet,true,C_DEALLOC,connIndexRet[nbOfElemsRet],1);
+  connRetArr->useArray(connRet,true,DeallocType::C_DEALLOC,connIndexRet[nbOfElemsRet],1);
   MCAuto<DataArrayInt> connIndexRetArr=DataArrayInt::New();
-  connIndexRetArr->useArray(connIndexRet,true,C_DEALLOC,(int)nbOfElemsRet+1,1);
+  connIndexRetArr->useArray(connIndexRet,true,DeallocType::C_DEALLOC,(int)nbOfElemsRet+1,1);
   ret->setConnectivity(connRetArr,connIndexRetArr,false);
   ret->_types=types;
   ret->copyTinyInfoFrom(this);
index 47e6ac7ae307c656c36e30b716e67c0abe2d516e..703a2a923fca9cdaa6962dbe2a75c4e705953dd4 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index fd351a6f5aeed27dec0f3dddb6f0c18c651db68c..f2df4a04f65a43147a8eccf7317918d586efdb1c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -198,9 +198,13 @@ namespace MEDCoupling
     return ret;
   }
 
-  INTERP_KERNEL::Edge *MEDCouplingUMeshBuildQPFromEdge(INTERP_KERNEL::NormalizedCellType typ, std::map<int, std::pair<INTERP_KERNEL::Node *,bool> >& mapp2, const int *bg)
+  INTERP_KERNEL::Edge *MEDCouplingUMeshBuildQPFromEdge(INTERP_KERNEL::NormalizedCellType typ, std::map<int, INTERP_KERNEL::NodeWithUsage >& mapp2, const int *bg)
   {
     INTERP_KERNEL::Edge *ret=0;
+
+    mapp2[bg[0]].second = INTERP_KERNEL::USAGE_LINEAR;
+    mapp2[bg[1]].second = INTERP_KERNEL::USAGE_LINEAR;
+
     switch(typ)
     {
       case INTERP_KERNEL::NORM_SEG2:
@@ -220,7 +224,8 @@ namespace MEDCoupling
             ret=new INTERP_KERNEL::EdgeLin(mapp2[bg[0]].first,mapp2[bg[1]].first);
           else
             ret=new INTERP_KERNEL::EdgeArcCircle(mapp2[bg[0]].first,mapp2[bg[2]].first,mapp2[bg[1]].first);
-          mapp2[bg[2]].second=false;
+          if (mapp2[bg[2]].second != INTERP_KERNEL::USAGE_LINEAR) // switch the node usage to quadratic only if it is not used as an extreme point for another edge
+            mapp2[bg[2]].second = INTERP_KERNEL::USAGE_QUADRATIC_ONLY;
           break;
         }
       default:
@@ -239,7 +244,7 @@ namespace MEDCoupling
                                                                    std::map<INTERP_KERNEL::Node *,int>& mapp)
   {
     mapp.clear();
-    std::map<int, std::pair<INTERP_KERNEL::Node *,bool> > mapp2;//bool is for a flag specifying if node is boundary (true) or only a middle for SEG3.
+    std::map<int, INTERP_KERNEL::NodeWithUsage > mapp2;  // the last var is a flag specifying if node is an extreme node of the seg (LINEAR) or only a middle for SEG3 (QUADRATIC_ONLY).
     const double *coo=mDesc->getCoords()->getConstPointer();
     const int *c=mDesc->getNodalConnectivity()->getConstPointer();
     const int *cI=mDesc->getNodalConnectivityIndex()->getConstPointer();
@@ -249,7 +254,7 @@ namespace MEDCoupling
     for(std::set<int>::const_iterator it2=s.begin();it2!=s.end();it2++)
       {
         INTERP_KERNEL::Node *n=new INTERP_KERNEL::Node(coo[2*(*it2)],coo[2*(*it2)+1]);
-        mapp2[*it2]=std::pair<INTERP_KERNEL::Node *,bool>(n,true);
+        mapp2[*it2]=INTERP_KERNEL::NodeWithUsage(n,INTERP_KERNEL::USAGE_UNKNOWN);
       }
     INTERP_KERNEL::QuadraticPolygon *ret=new INTERP_KERNEL::QuadraticPolygon;
     for(std::vector<int>::const_iterator it=candidates.begin();it!=candidates.end();it++)
@@ -257,9 +262,60 @@ namespace MEDCoupling
         INTERP_KERNEL::NormalizedCellType typ=(INTERP_KERNEL::NormalizedCellType)c[cI[*it]];
         ret->pushBack(MEDCouplingUMeshBuildQPFromEdge(typ,mapp2,c+cI[*it]+1));
       }
-    for(std::map<int, std::pair<INTERP_KERNEL::Node *,bool> >::const_iterator it2=mapp2.begin();it2!=mapp2.end();it2++)
+    for(std::map<int, INTERP_KERNEL::NodeWithUsage >::const_iterator it2=mapp2.begin();it2!=mapp2.end();it2++)
+      {
+        if((*it2).second.second == INTERP_KERNEL::USAGE_LINEAR)
+          mapp[(*it2).second.first]=(*it2).first;
+        ((*it2).second.first)->decrRef();
+      }
+    return ret;
+  }
+
+  INTERP_KERNEL::QuadraticPolygon *MEDCouplingUMeshBuildQPFromMeshWithTree(const MEDCouplingUMesh *mDesc, const std::vector<int>& candidates,
+                                                                   std::map<INTERP_KERNEL::Node *,int>& mapp,
+                                                                   const BBTreePts<2,int> & nodeTree,
+                                                                   const std::map<int, INTERP_KERNEL::Node *>& mapRev)
+  {
+    mapp.clear();
+    std::map<int, INTERP_KERNEL::NodeWithUsage > mapp2;  // the last var is a flag specifying if node is an extreme node of the seg (LINEAR) or only a middle for SEG3 (QUADRATIC_ONLY).
+    const double *coo=mDesc->getCoords()->getConstPointer();
+    const int *c=mDesc->getNodalConnectivity()->getConstPointer();
+    const int *cI=mDesc->getNodalConnectivityIndex()->getConstPointer();
+    std::set<int> s;
+    for(std::vector<int>::const_iterator it=candidates.begin();it!=candidates.end();it++)
+      s.insert(c+cI[*it]+1,c+cI[(*it)+1]);
+    for(std::set<int>::const_iterator it2=s.begin();it2!=s.end();it2++)
+      {
+        INTERP_KERNEL::Node *n;
+        // Look for a potential node to merge
+        std::vector<int> candNode;
+        nodeTree.getElementsAroundPoint(coo+2*(*it2), candNode);
+        if (candNode.size() > 2)
+          throw INTERP_KERNEL::Exception("MEDCouplingUMesh::MEDCouplingUMeshBuildQPFromMeshWithTree(): some nodes are not properly merged (within eps) in input mesh!");
+        bool node_created=false;
+        if  (candNode.size())
+          {
+            auto itt=mapRev.find(candNode[0]);
+            if (itt != mapRev.end())  // we might hit a node which is in the coords array but not used in the connectivity in which case it won't be in the revMap
+              {
+                node_created=true;
+                n = (*itt).second;
+                n->incrRef();
+              }
+          }
+        if(!node_created)
+          n = new INTERP_KERNEL::Node(coo[2*(*it2)],coo[2*(*it2)+1]);
+        mapp2[*it2]=INTERP_KERNEL::NodeWithUsage(n,INTERP_KERNEL::USAGE_UNKNOWN);
+      }
+    INTERP_KERNEL::QuadraticPolygon *ret=new INTERP_KERNEL::QuadraticPolygon;
+    for(std::vector<int>::const_iterator it=candidates.begin();it!=candidates.end();it++)
+      {
+        INTERP_KERNEL::NormalizedCellType typ=(INTERP_KERNEL::NormalizedCellType)c[cI[*it]];
+        ret->pushBack(MEDCouplingUMeshBuildQPFromEdge(typ,mapp2,c+cI[*it]+1));  // this call will set quad points to false in the map
+      }
+    for(std::map<int, INTERP_KERNEL::NodeWithUsage >::const_iterator it2=mapp2.begin();it2!=mapp2.end();it2++)
       {
-        if((*it2).second.second)
+        if((*it2).second.second == INTERP_KERNEL::USAGE_LINEAR)
           mapp[(*it2).second.first]=(*it2).first;
         ((*it2).second.first)->decrRef();
       }
@@ -466,17 +522,17 @@ void MEDCouplingUMesh::BuildIntersectEdges(const MEDCouplingUMesh *m1, const MED
     {
       const std::vector<int>& divs=subDiv[i];
       int nnode=cI[1]-cI[0]-1;
-      std::map<int, std::pair<INTERP_KERNEL::Node *,bool> > mapp2;
+      std::map<int, INTERP_KERNEL::NodeWithUsage > mapp2;
       std::map<INTERP_KERNEL::Node *, int> mapp22;
       for(int j=0;j<nnode;j++)
         {
           INTERP_KERNEL::Node *nn=new INTERP_KERNEL::Node(coo[2*c[(*cI)+j+1]],coo[2*c[(*cI)+j+1]+1]);
           int nnid=c[(*cI)+j+1];
-          mapp2[nnid]=std::pair<INTERP_KERNEL::Node *,bool>(nn,true);
+          mapp2[nnid]=INTERP_KERNEL::NodeWithUsage(nn,INTERP_KERNEL::USAGE_UNKNOWN);
           mapp22[nn]=nnid+offset1;
         }
       INTERP_KERNEL::Edge *e=MEDCouplingUMeshBuildQPFromEdge((INTERP_KERNEL::NormalizedCellType)c[*cI],mapp2,c+(*cI)+1);
-      for(std::map<int, std::pair<INTERP_KERNEL::Node *,bool> >::const_iterator it=mapp2.begin();it!=mapp2.end();it++)
+      for(std::map<int, INTERP_KERNEL::NodeWithUsage >::const_iterator it=mapp2.begin();it!=mapp2.end();it++)
         ((*it).second.first)->decrRef();
       std::vector<INTERP_KERNEL::Node *> addNodes(divs.size());
       std::map<INTERP_KERNEL::Node *,int> mapp3;
@@ -566,8 +622,8 @@ MEDCouplingUMesh *BuildMesh1DCutFrom(const MEDCouplingUMesh *mesh1D, const std::
   MCAuto<MEDCouplingUMesh> ret(MEDCouplingUMesh::New(mesh1D->getName(),1));
   ret->setConnectivity(cOut,ciOut,true);
   MCAuto<DataArrayDouble> arr3(DataArrayDouble::New());
-  arr3->useArray(&addCoo[0],false,C_DEALLOC,(int)addCoo.size()/2,2);
-  MCAuto<DataArrayDouble> arr4(DataArrayDouble::New()); arr4->useArray(&addCooQuad[0],false,C_DEALLOC,(int)addCooQuad.size()/2,2);
+  arr3->useArray(&addCoo[0],false,DeallocType::C_DEALLOC,(int)addCoo.size()/2,2);
+  MCAuto<DataArrayDouble> arr4(DataArrayDouble::New()); arr4->useArray(&addCooQuad[0],false,DeallocType::C_DEALLOC,(int)addCooQuad.size()/2,2);
   std::vector<const DataArrayDouble *> coordss(4);
   coordss[0]=coords1; coordss[1]=mesh1D->getCoords(); coordss[2]=arr3; coordss[3]=arr4;
   MCAuto<DataArrayDouble> arr(DataArrayDouble::Aggregate(coordss));
@@ -807,10 +863,13 @@ private:
   int _iend;
   MCAuto<MEDCouplingUMesh> _mesh;
   MCAuto<INTERP_KERNEL::Edge> _edge;
-  int _left;
-  int _right;
+  int _left;    // index (local numbering) of the left 2D cell bordering the edge '_edge'
+  int _right;   // same as above, right side.
 };
 
+/*
+ * Update indices of left and right 2D cell bordering the current edge.
+ */
 void EdgeInfo::somethingHappendAt(int pos, const std::vector< MCAuto<INTERP_KERNEL::Edge> >& newLeft, const std::vector< MCAuto<INTERP_KERNEL::Edge> >& newRight)
 {
   const MEDCouplingUMesh *mesh(_mesh);
@@ -820,6 +879,8 @@ void EdgeInfo::somethingHappendAt(int pos, const std::vector< MCAuto<INTERP_KERN
     return ;
   if(_left>pos)
     { _left++; _right++; return ; }
+  if (_right > pos && _left != pos)
+    { _right++; return ; }
   if(_right==pos)
     {
       bool isLeft(std::find(newLeft.begin(),newLeft.end(),_edge)!=newLeft.end()),isRight(std::find(newRight.begin(),newRight.end(),_edge)!=newRight.end());
@@ -894,9 +955,9 @@ private:
   const CellInfo& get(int pos) const;
   CellInfo& get(int pos);
 private:
-  std::vector<CellInfo> _pool;
-  MCAuto<MEDCouplingUMesh> _ze_mesh;
-  std::vector<EdgeInfo> _edge_info;
+  std::vector<CellInfo> _pool;         // for a newly created 2D cell, the list of edges (int) and edges ptr constiuing it
+  MCAuto<MEDCouplingUMesh> _ze_mesh;   // the aggregated mesh
+  std::vector<EdgeInfo> _edge_info;    // for each new edge added when cuting the 2D cell, the information on left and right bordering 2D cell
 };
 
 VectorOfCellInfo::VectorOfCellInfo(const std::vector<int>& edges, const std::vector< MCAuto<INTERP_KERNEL::Edge> >& edgesPtr):_pool(1)
@@ -1065,7 +1126,12 @@ MEDCouplingUMesh *BuildMesh2DCutInternal(double eps, MEDCouplingUMesh *splitMesh
   else
     renumb->iota();
   //
-
+  // The 1D first piece is used to intersect the 2D cell resulting in max two 2D cells.
+  // The next 1D piece is localised (getPositionOf()) into this previous cut.
+  // The result of the next intersection replaces the former single 2D cell that has been cut in the
+  // pool. The neighbourhood information detained by pool._edge_info is also updated so that left and right
+  // adjacent 2D cell of a 1D piece is kept up to date.
+  // And so on and so forth.
   for(int iStart=0;iStart<nbCellsInSplitMesh1D;)
     {// split [0:nbCellsInSplitMesh1D) in contiguous parts [iStart:iEnd)
       int iEnd(iStart);
@@ -1230,6 +1296,7 @@ void MEDCouplingUMesh::Intersect1DMeshes(const MEDCouplingUMesh *m1Desc, const M
   colinear2.resize(nDescCell2);
   subDiv2.resize(nDescCell2);
   BBTree<SPACEDIM,int> myTree(bbox2,0,0,m2Desc->getNumberOfCells(),-eps);
+  BBTreePts<SPACEDIM,int> treeNodes2(m2Desc->getCoords()->begin(),0,0,m2Desc->getCoords()->getNumberOfTuples(),eps);
 
   std::vector<int> candidates1(1);
   int offset1(m1Desc->getNumberOfNodes());
@@ -1241,10 +1308,15 @@ void MEDCouplingUMesh::Intersect1DMeshes(const MEDCouplingUMesh *m1Desc, const M
       if(!candidates2.empty()) // candidates2 holds edges from the second mesh potentially intersecting current edge i in mesh1
         {
           std::map<INTERP_KERNEL::Node *,int> map1,map2;
+          std::map<int, INTERP_KERNEL::Node *> revMap2;
           // pol2 is not necessarily a closed polygon: just a set of (quadratic) edges (same as candidates2) in the Geometric DS format
           INTERP_KERNEL::QuadraticPolygon *pol2=MEDCouplingUMeshBuildQPFromMesh(m2Desc,candidates2,map2);
+          // Build revMap2
+          for (auto& kv : map2)
+            revMap2[kv.second] = kv.first;
           candidates1[0]=i;
-          INTERP_KERNEL::QuadraticPolygon *pol1=MEDCouplingUMeshBuildQPFromMesh(m1Desc,candidates1,map1);
+          // In the construction of pol1 we might reuse nodes from pol2, that we have identified as to be merged.
+          INTERP_KERNEL::QuadraticPolygon *pol1=MEDCouplingUMeshBuildQPFromMeshWithTree(m1Desc,candidates1,map1,treeNodes2, revMap2);
           // This following part is to avoid that some removed nodes (for example due to a merge between pol1 and pol2) are replaced by a newly created one
           // This trick guarantees that Node * are discriminant (i.e. form a unique identifier)
           std::set<INTERP_KERNEL::Node *> nodes;
@@ -1335,7 +1407,7 @@ void MEDCouplingUMesh::BuildIntersecting2DCellsFromEdges(double eps, const MEDCo
       const INTERP_KERNEL::CellModel& cm=INTERP_KERNEL::CellModel::GetCellModel(typ);
       // Populate mapp and mappRev with nodes from the current cell (i) from mesh1 - this also builds the Node* objects:
       MEDCouplingUMeshBuildQPFromMesh3(coo1,offset1,coo2,offset2,addCoords,desc1+descIndx1[i],desc1+descIndx1[i+1],intesctEdges1,/* output */mapp,mappRev);
-      // pol1 is the full cell from mesh2, in QP format, with all the additional intersecting nodes.
+      // pol1 is the full cell from mesh1, in QP format, with all the additional intersecting nodes.
       pol1.buildFromCrudeDataArray(mappRev,cm.isQuadratic(),conn1+connI1[i]+1,coo1,
           desc1+descIndx1[i],desc1+descIndx1[i+1],intesctEdges1);
       //
@@ -1348,6 +1420,8 @@ void MEDCouplingUMesh::BuildIntersecting2DCellsFromEdges(double eps, const MEDCo
       std::map<int,std::vector<INTERP_KERNEL::ElementaryEdge *> > edgesIn2ForShare; // common edges
       std::vector<INTERP_KERNEL::QuadraticPolygon> pol2s(candidates2.size());
       int ii=0;
+      // Build, for each intersecting cell candidate from mesh2, the corresponding QP.
+      // Again all the additional intersecting nodes are there.
       for(std::vector<int>::const_iterator it2=candidates2.begin();it2!=candidates2.end();it2++,ii++)
         {
           INTERP_KERNEL::NormalizedCellType typ2=(INTERP_KERNEL::NormalizedCellType)conn2[connI2[*it2]];
@@ -1358,7 +1432,13 @@ void MEDCouplingUMesh::BuildIntersecting2DCellsFromEdges(double eps, const MEDCo
           pol2s[ii].buildFromCrudeDataArray2(mappRev,cm2.isQuadratic(),conn2+connI2[*it2]+1,coo2,desc2+descIndx2[*it2],desc2+descIndx2[*it2+1],intesctEdges2,
               pol1,desc1+descIndx1[i],desc1+descIndx1[i+1],intesctEdges1,colinear2, /* output */ edgesIn2ForShare);
         }
+      // The cleaning below must be done after the full construction of all pol2s to correctly deal with shared edges:
+      for (auto &p: pol2s)
+        p.cleanDegeneratedConsecutiveEdges();
+      edgesIn2ForShare.clear();  // removing temptation to use it further since it might now contain invalid edges.
+      ///
       ii=0;
+      // Now rebuild intersected cells from all this:
       for(std::vector<int>::const_iterator it2=candidates2.begin();it2!=candidates2.end();it2++,ii++)
         {
           INTERP_KERNEL::ComposedEdge::InitLocationsWithOther(pol1,pol2s[ii]);
@@ -1720,7 +1800,7 @@ void MEDCouplingUMesh::Intersect2DMeshWith1DLine(const MEDCouplingUMesh *mesh2D,
     }
   //
   MCAuto<DataArrayDouble> addCooDa(DataArrayDouble::New());
-  addCooDa->useArray(&addCoo[0],false,C_DEALLOC,(int)addCoo.size()/2,2);
+  addCooDa->useArray(&addCoo[0],false,DeallocType::C_DEALLOC,(int)addCoo.size()/2,2);
   // Step 2: re-order newly created nodes according to the ordering found in m2
   std::vector< std::vector<int> > intersectEdge2;
   BuildIntersectEdges(m1Desc,mesh1D,addCoo,subDiv2,intersectEdge2);
@@ -1740,7 +1820,7 @@ void MEDCouplingUMesh::Intersect2DMeshWith1DLine(const MEDCouplingUMesh *mesh2D,
   if(!idsInDesc2DToBeRefined->empty())
     {
       DataArrayInt *out0(0),*outi0(0);
-      MEDCouplingUMesh::ExtractFromIndexedArrays(idsInDesc2DToBeRefined->begin(),idsInDesc2DToBeRefined->end(),dd3,dd4,out0,outi0);
+      DataArrayInt::ExtractFromIndexedArrays(idsInDesc2DToBeRefined->begin(),idsInDesc2DToBeRefined->end(),dd3,dd4,out0,outi0);
       MCAuto<DataArrayInt> outi0s(outi0);
       out0s=out0;
       out0s=out0s->buildUnique();
@@ -1977,7 +2057,7 @@ DataArrayInt *MEDCouplingUMesh::conformize2D(double eps)
   //
   MCAuto<DataArrayInt> mSafe,nSafe,oSafe,pSafe,qSafe,rSafe;
   DataArrayInt *m(0),*n(0),*o(0),*p(0),*q(0),*r(0);
-  MEDCouplingUMesh::ExtractFromIndexedArrays(ret->begin(),ret->end(),desc1,descIndx1,m,n); mSafe=m; nSafe=n;
+  DataArrayInt::ExtractFromIndexedArrays(ret->begin(),ret->end(),desc1,descIndx1,m,n); mSafe=m; nSafe=n;
   DataArrayInt::PutIntoToSkylineFrmt(intersectEdge,o,p); oSafe=o; pSafe=p;
   if(middleNeedsToBeUsed)
     { DataArrayInt::PutIntoToSkylineFrmt(middle,q,r); qSafe=q; rSafe=r; }
index 12807437dad38c6d93be14d39c999d30d8fe98c4..5730990511e993696147408609df1704ce0a8712 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2017  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 261c63724e85839b32b4d03abf99b66769a56a35..6ac76fe906e9549f418109590b526a2ddad6394b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2017  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index b742f5c68ed669b2dacff3b3dc6cd76ced740828..03f9e741017b4804f3c7e8fa31bb74370425e976 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2016  CEA/DEN, EDF R&D
+# Copyright (C) 2012-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index a1a5caa3bfafee78a9280d17270d7a82a84e8cf6..de604f7fb0a9fbb61e2796b354ed15d3976ba7a1 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2015-2016  CEA/DEN, EDF R&D
+# Copyright (C) 2015-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 73dcfae4d32111215ea0c9c3bbf799fd23167e55..6023488ed843adeba41e068590fcb43945f3d106 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index f5958a9fe3ba9935c92bc3006b3c8b102feb6d3b..1ee95f1ae4c8e7878c98a167a54b91ff908e6135 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index d3ac9fa3d62e06355e9a82ca2060a8283d77166f..65b3a6c5e86bbf241fa9b9c9fdbae1a755c1a48c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -36,7 +36,7 @@ void MEDCouplingBasicsTest1::testArray()
   const int tmp2[3]={8,9,10};
   {
     MemArray<int> mem;
-    mem.useArray(tmp1,false,CPP_DEALLOC,6);
+    mem.useArray(tmp1,false,DeallocType::CPP_DEALLOC,6);
     CPPUNIT_ASSERT(tmp1==mem.getConstPointer());
     CPPUNIT_ASSERT_THROW(mem.getPointer(),INTERP_KERNEL::Exception);
     CPPUNIT_ASSERT_THROW(mem[2]=7,INTERP_KERNEL::Exception);
@@ -47,7 +47,7 @@ void MEDCouplingBasicsTest1::testArray()
     int *tmp3=new int[6];
     std::copy(tmp1,tmp1+6,tmp3);
     MemArray<int> mem2;
-    mem2.useArray(tmp3,true,CPP_DEALLOC,6);
+    mem2.useArray(tmp3,true,DeallocType::CPP_DEALLOC,6);
     CPPUNIT_ASSERT(tmp3==mem2.getConstPointer());
     CPPUNIT_ASSERT(tmp3==mem2.getPointer());
     CPPUNIT_ASSERT_EQUAL(5,mem2[2]);
@@ -161,7 +161,7 @@ void MEDCouplingBasicsTest1::testMesh()
   CPPUNIT_ASSERT_EQUAL(nbOfCells,(int)mesh->getNumberOfCells());
   //test 0 - no copy no ownership
   DataArrayDouble *myCoords=DataArrayDouble::New();
-  myCoords->useArray(coords,false,CPP_DEALLOC,nbOfNodes,3);
+  myCoords->useArray(coords,false,DeallocType::CPP_DEALLOC,nbOfNodes,3);
   mesh->setCoords(myCoords);
   mesh->setCoords(myCoords);
   myCoords->decrRef();
@@ -171,7 +171,7 @@ void MEDCouplingBasicsTest1::testMesh()
   myCoords=DataArrayDouble::New();
   double *tmp=new double[3*nbOfNodes];
   std::copy(coords,coords+3*nbOfNodes,tmp);
-  myCoords->useArray(tmp,true,CPP_DEALLOC,nbOfNodes,3);
+  myCoords->useArray(tmp,true,DeallocType::CPP_DEALLOC,nbOfNodes,3);
   mesh->setCoords(myCoords);
   myCoords->decrRef();
   CPPUNIT_ASSERT_EQUAL(nbOfCells,(int)mesh->getNumberOfCells());
@@ -180,7 +180,7 @@ void MEDCouplingBasicsTest1::testMesh()
   myCoords=DataArrayDouble::New();
   tmp=(double *)malloc(3*nbOfNodes*sizeof(double));
   std::copy(coords,coords+3*nbOfNodes,tmp);
-  myCoords->useArray(tmp,true,C_DEALLOC,nbOfNodes,3);
+  myCoords->useArray(tmp,true,DeallocType::C_DEALLOC,nbOfNodes,3);
   mesh->setCoords(myCoords);
   myCoords->decrRef();
   CPPUNIT_ASSERT_EQUAL(nbOfNodes,mesh->getNumberOfNodes());
@@ -1373,6 +1373,7 @@ void MEDCouplingBasicsTest1::testMergeField1()
   MEDCouplingFieldDouble *f3=MEDCouplingFieldDouble::MergeFields(f1,f2);
   f3->checkConsistencyLight();
   MEDCouplingUMesh *m4=build2DTargetMeshMerged_1();
+  m4->setName(f1->getMesh()->getName());
   CPPUNIT_ASSERT(f3->getMesh()->isEqual(m4,1.e-12));
   std::string name=f3->getName();
   CPPUNIT_ASSERT(name=="MeasureOfMesh_");
@@ -1473,8 +1474,9 @@ void MEDCouplingBasicsTest1::testFillFromAnalytic()
   CPPUNIT_ASSERT_DOUBLES_EQUAL(3.6,values4[0],1.e-12);
   CPPUNIT_ASSERT_DOUBLES_EQUAL(7.2,values4[1],1.e-12);
   f1->integral(true,values4);
-  CPPUNIT_ASSERT_DOUBLES_EQUAL(0.5,values4[0],1.e-12);
-  CPPUNIT_ASSERT_DOUBLES_EQUAL(1.,values4[1],1.e-12);
+  //0.4 == 0.25/4*-0.6+(0.25/4+0.125/3)*-0.1+0.4*(0.125/3.+0.125/3)+(-0.1)*(0.25/4+0.25/4)+0.4*(0.25/4+0.125/3+0.125/3+0.25/4+0.25/4)+0.9*(0.25/4+0.125/3)+0.4*0.25/4+0.9*(0.25/4+0.25/4)+1.4*0.25/4
+  CPPUNIT_ASSERT_DOUBLES_EQUAL(0.4,values4[0],1.e-12);
+  CPPUNIT_ASSERT_DOUBLES_EQUAL(0.8,values4[1],1.e-12);
   f1->decrRef();
   //
   CPPUNIT_ASSERT_THROW(f1=m->fillFromAnalytic(ON_NODES,1,func3),INTERP_KERNEL::Exception);
@@ -1543,8 +1545,8 @@ void MEDCouplingBasicsTest1::testFillFromAnalytic2()
   CPPUNIT_ASSERT_DOUBLES_EQUAL(3.6,values4[0],1.e-12);
   CPPUNIT_ASSERT_DOUBLES_EQUAL(7.2,values4[1],1.e-12);
   f1->integral(true,values4);
-  CPPUNIT_ASSERT_DOUBLES_EQUAL(0.5,values4[0],1.e-12);
-  CPPUNIT_ASSERT_DOUBLES_EQUAL(1.,values4[1],1.e-12);
+  CPPUNIT_ASSERT_DOUBLES_EQUAL(0.4,values4[0],1.e-12);
+  CPPUNIT_ASSERT_DOUBLES_EQUAL(0.8,values4[1],1.e-12);
   f1->decrRef();
   //
   CPPUNIT_ASSERT_THROW(f1=m->fillFromAnalytic(ON_NODES,1,"1./(x-0.2)"),INTERP_KERNEL::Exception);
@@ -2284,13 +2286,13 @@ void MEDCouplingBasicsTest1::testCMesh0()
   
   DataArrayDouble* coordsX=DataArrayDouble::New();
   double arrX[4] = { -1., 1., 2., 4. };
-  coordsX->useArray(arrX,false, CPP_DEALLOC,4,1);
+  coordsX->useArray(arrX,false, DeallocType::CPP_DEALLOC,4,1);
   DataArrayDouble* coordsY=DataArrayDouble::New();
   double arrY[4] = { -2., 2., 4., 8. };
-  coordsY->useArray(arrY,false, CPP_DEALLOC,4,1);
+  coordsY->useArray(arrY,false, DeallocType::CPP_DEALLOC,4,1);
   DataArrayDouble* coordsZ=DataArrayDouble::New();
   double arrZ[4] = { -3., 3., 6., 12. };
-  coordsZ->useArray(arrZ,false, CPP_DEALLOC,4,1);
+  coordsZ->useArray(arrZ,false, DeallocType::CPP_DEALLOC,4,1);
   mesh->setCoords(coordsX,coordsY,coordsZ);
   coordsX->decrRef();
   coordsY->decrRef();
@@ -2353,37 +2355,37 @@ void MEDCouplingBasicsTest1::testCMesh1()
   mesh1=MEDCouplingCMesh::New();
   DataArrayDouble* coordsX1=DataArrayDouble::New();
   double arrX1[4] = { -1., 1., 2., 4. };
-  coordsX1->useArray(arrX1,false, CPP_DEALLOC,4,1);
+  coordsX1->useArray(arrX1,false, DeallocType::CPP_DEALLOC,4,1);
   DataArrayDouble* coordsY1=DataArrayDouble::New();
   double arrY1[4] = { -2., 2., 4., 8. };
-  coordsY1->useArray(arrY1,false, CPP_DEALLOC,4,1);
+  coordsY1->useArray(arrY1,false, DeallocType::CPP_DEALLOC,4,1);
   DataArrayDouble* coordsZ1=DataArrayDouble::New();
   double arrZ1[4] = { -3., 3., 6., 12. };
-  coordsZ1->useArray(arrZ1,false, CPP_DEALLOC,4,1);
+  coordsZ1->useArray(arrZ1,false, DeallocType::CPP_DEALLOC,4,1);
   mesh1->setCoords(coordsX1,coordsY1,coordsZ1);
   
   mesh2=MEDCouplingCMesh::New();
   DataArrayDouble* coordsX2=DataArrayDouble::New();
   double arrX2[4] = { -1., 1., 2., 4. };
-  coordsX2->useArray(arrX2,false, CPP_DEALLOC,4,1);
+  coordsX2->useArray(arrX2,false, DeallocType::CPP_DEALLOC,4,1);
   DataArrayDouble* coordsY2=DataArrayDouble::New();
   double arrY2[4] = { -2., 2., 4., 8. };
-  coordsY2->useArray(arrY2,false, CPP_DEALLOC,4,1);
+  coordsY2->useArray(arrY2,false, DeallocType::CPP_DEALLOC,4,1);
   DataArrayDouble* coordsZ2=DataArrayDouble::New();
   double arrZ2[4] = { -3., 3., 6., 12.+1e-6 };   //here is not equal
-  coordsZ2->useArray(arrZ2,false, CPP_DEALLOC,4,1);
+  coordsZ2->useArray(arrZ2,false, DeallocType::CPP_DEALLOC,4,1);
   mesh2->setCoords(coordsX2,coordsY2,coordsZ2);
   
   mesh3=MEDCouplingCMesh::New();
   DataArrayDouble* coordsX3=DataArrayDouble::New();
   double arrX3[1] = { -1.};
-  coordsX3->useArray(arrX3,false, CPP_DEALLOC,1,1);
+  coordsX3->useArray(arrX3,false, DeallocType::CPP_DEALLOC,1,1);
   DataArrayDouble* coordsY3=DataArrayDouble::New();
   double arrY3[1] = { -2.};
-  coordsY3->useArray(arrY3,false, CPP_DEALLOC,1,1);
+  coordsY3->useArray(arrY3,false, DeallocType::CPP_DEALLOC,1,1);
   DataArrayDouble* coordsZ3=DataArrayDouble::New();
   double arrZ3[1] = { -3.};
-  coordsZ3->useArray(arrZ3,false, CPP_DEALLOC,1,1);
+  coordsZ3->useArray(arrZ3,false, DeallocType::CPP_DEALLOC,1,1);
   mesh3->setCoords(coordsX3,coordsY3,coordsZ3);
   
   CPPUNIT_ASSERT_EQUAL(3,mesh1->getSpaceDimension());
@@ -2443,13 +2445,13 @@ void MEDCouplingBasicsTest1::testCMesh2()
   mesh1=MEDCouplingCMesh::New();
   DataArrayDouble* coordsX1=DataArrayDouble::New();
   double arrX1[4] = { -1., 1., 2., 4. };
-  coordsX1->useArray(arrX1,false, CPP_DEALLOC,4,1);
+  coordsX1->useArray(arrX1,false, DeallocType::CPP_DEALLOC,4,1);
   DataArrayDouble* coordsY1=DataArrayDouble::New();
   double arrY1[4] = { -2., 2., 4., 8. };
-  coordsY1->useArray(arrY1,false, CPP_DEALLOC,4,1);
+  coordsY1->useArray(arrY1,false, DeallocType::CPP_DEALLOC,4,1);
   DataArrayDouble* coordsZ1=DataArrayDouble::New();
   double arrZ1[4] = { -3., 3., 6., 12. };
-  coordsZ1->useArray(arrZ1,false, CPP_DEALLOC,4,1);
+  coordsZ1->useArray(arrZ1,false, DeallocType::CPP_DEALLOC,4,1);
   mesh1->setCoords(coordsX1,coordsY1,coordsZ1);
   
   std::vector<int> dis=mesh1->getDistributionOfTypes();
index d4fcd5a563f6ca8cdb3a048d84f721a6a0c8f8d4..a8e0bc009da87fab32f597ffa201ddfac8db9b8f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index e7d48150ce1b6eb1f43d3156e1676a7dc3fca66b..8fdca210a010c2eece4baa608d420dd066b0df65 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -2141,8 +2141,8 @@ void MEDCouplingBasicsTest2::testFillFromAnalytic3()
   CPPUNIT_ASSERT_DOUBLES_EQUAL(3.6,values4[0],1.e-12);
   CPPUNIT_ASSERT_DOUBLES_EQUAL(7.2,values4[1],1.e-12);
   f1->integral(true,values4);
-  CPPUNIT_ASSERT_DOUBLES_EQUAL(0.5,values4[0],1.e-12);
-  CPPUNIT_ASSERT_DOUBLES_EQUAL(1.,values4[1],1.e-12);
+  CPPUNIT_ASSERT_DOUBLES_EQUAL(0.4,values4[0],1.e-12);
+  CPPUNIT_ASSERT_DOUBLES_EQUAL(0.8,values4[1],1.e-12);
   f1->decrRef();
   //
   f1=MEDCouplingFieldDouble::New(ON_NODES,NO_TIME);
index 7546fb7bc2ba4c9a083f1a8dceb20245e295b42b..9a49b0e70e2ccb5eb9ac837cc14ae6dffd9a771e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 32d63dd9b939dc303fcb8ac9b526f1ac01ad2dee..17a2010419526ba5fb62cf1b6db0900f496f46d5 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 88a1c0a4e7054063fc7ef9dd81833808d917454e..212b7c16c40d46131531dd07edd711dbb05d3c81 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 1a9eded7a3ba9b70601f712f1542f1327114a44e..550dfd02eb9391da5df346e261462fc743d064f3 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -1738,13 +1738,13 @@ void MEDCouplingBasicsTest4::testChangeUnderlyingMeshWithCMesh1()
   MEDCouplingCMesh* mesh=MEDCouplingCMesh::New();
   DataArrayDouble* coordsX=DataArrayDouble::New();
   double arrX[4] = { -1., 1., 2., 4. };
-  coordsX->useArray(arrX,false, CPP_DEALLOC,4,1);
+  coordsX->useArray(arrX,false, DeallocType::CPP_DEALLOC,4,1);
   DataArrayDouble* coordsY=DataArrayDouble::New();
   double arrY[4] = { -2., 2., 4., 8. };
-  coordsY->useArray(arrY,false, CPP_DEALLOC,4,1);
+  coordsY->useArray(arrY,false, DeallocType::CPP_DEALLOC,4,1);
   DataArrayDouble* coordsZ=DataArrayDouble::New();
   double arrZ[4] = { -3., 3., 6., 12. };
-  coordsZ->useArray(arrZ,false, CPP_DEALLOC,4,1);
+  coordsZ->useArray(arrZ,false, DeallocType::CPP_DEALLOC,4,1);
   mesh->setCoords(coordsX,coordsY,coordsZ);
   coordsX->decrRef();
   coordsY->decrRef();
index 6ccac38e53410e30ed84e7e5e26ef1fd2585d3b0..f0badf7b553a1f327bc44e8540c8087e49abfad5 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 257263ad13c94c9c8f7d3a62dd06ddf1ac2cc17c..8aa080b227bc553f6768191492fe279911db874f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -657,13 +657,13 @@ void MEDCouplingBasicsTest5::testGetNodeIdsOfCell2()
   MEDCouplingCMesh *m1c=MEDCouplingCMesh::New();
   DataArrayDouble *coordsX=DataArrayDouble::New();
   double arrX[5] = { -1., 1., 2., 4., 4.5 };
-  coordsX->useArray(arrX,false, CPP_DEALLOC,5,1);
+  coordsX->useArray(arrX,false, DeallocType::CPP_DEALLOC,5,1);
   DataArrayDouble *coordsY=DataArrayDouble::New();
   double arrY[4] = { -2., 2., 4., 8. };
-  coordsY->useArray(arrY,false, CPP_DEALLOC,4,1);
+  coordsY->useArray(arrY,false, DeallocType::CPP_DEALLOC,4,1);
   DataArrayDouble *coordsZ=DataArrayDouble::New();
   double arrZ[3] = { -2., 2., 4. };
-  coordsZ->useArray(arrZ,false, CPP_DEALLOC,3,1);  
+  coordsZ->useArray(arrZ,false, DeallocType::CPP_DEALLOC,3,1);  
   // test in 1D
   m1c->setCoordsAt(0,coordsX);
   CPPUNIT_ASSERT_EQUAL(4,(int)m1c->getNumberOfCells());
@@ -1331,11 +1331,11 @@ void MEDCouplingBasicsTest5::testComputeTupleIdsToSelectFromCellIds1()
   DataArrayInt *cI=m->computeNbOfNodesPerCell();
   cI->computeOffsetsFull();
   const int sel1[3]={1,5,9};
-  DataArrayInt *sel=DataArrayInt::New(); sel->useArray(sel1,false,CPP_DEALLOC,3,1);
+  DataArrayInt *sel=DataArrayInt::New(); sel->useArray(sel1,false,DeallocType::CPP_DEALLOC,3,1);
   DataArrayInt *res=sel->buildExplicitArrByRanges(cI);
   DataArrayDouble *arr2=arr->selectByTupleIdSafe(res->begin(),res->end());
   const double expected1[30]={13.,14.,15.,16.,17.,18.,19.,20.,59.,60.,61.,62.,63.,64.,95.,96.,97.,98.,99.,100.,101.,102.,103.,104.,105.,106.,107.,108.,109.,110.};
-  DataArrayDouble *arr3=DataArrayDouble::New(); arr3->useArray(expected1,false,CPP_DEALLOC,15,2);
+  DataArrayDouble *arr3=DataArrayDouble::New(); arr3->useArray(expected1,false,DeallocType::CPP_DEALLOC,15,2);
   CPPUNIT_ASSERT(arr2->isEqual(*arr3,1e-12));
   CPPUNIT_ASSERT(arr2->isEqual(*f2->getArray(),1e-12));
   //
@@ -1559,19 +1559,19 @@ void MEDCouplingBasicsTest5::testKrSpatialDiscretization1()
 void MEDCouplingBasicsTest5::testDuplicateEachTupleNTimes1()
 {
   const double vals0[4]={9.,8.,7.,6.};
-  DataArrayDouble *d=DataArrayDouble::New(); d->useArray(vals0,false,CPP_DEALLOC,4,1); d->setInfoOnComponent(0,"mass [kg]"); d->setName("aname");
+  DataArrayDouble *d=DataArrayDouble::New(); d->useArray(vals0,false,DeallocType::CPP_DEALLOC,4,1); d->setInfoOnComponent(0,"mass [kg]"); d->setName("aname");
   DataArrayDouble *d2=d->duplicateEachTupleNTimes(3);
   const double vals1[12]={9.,9.,9.,8.,8.,8.,7.,7.,7.,6.,6.,6.};
-  DataArrayDouble *d3=DataArrayDouble::New(); d3->useArray(vals1,false,CPP_DEALLOC,4*3,1); d3->setName("aname"); d3->setInfoOnComponent(0,"mass [kg]");
+  DataArrayDouble *d3=DataArrayDouble::New(); d3->useArray(vals1,false,DeallocType::CPP_DEALLOC,4*3,1); d3->setName("aname"); d3->setInfoOnComponent(0,"mass [kg]");
   CPPUNIT_ASSERT(d2->isEqual(*d2,1e-14)); d3->decrRef();
   d->decrRef();
   d2->decrRef();
   //
   const int vals2[4]={9,8,7,6};
-  DataArrayInt *d4=DataArrayInt::New(); d4->useArray(vals2,false,CPP_DEALLOC,4,1); d4->setInfoOnComponent(0,"mass [kg]") ; d4->setName("aname");
+  DataArrayInt *d4=DataArrayInt::New(); d4->useArray(vals2,false,DeallocType::CPP_DEALLOC,4,1); d4->setInfoOnComponent(0,"mass [kg]") ; d4->setName("aname");
   DataArrayInt *d5=d4->duplicateEachTupleNTimes(3);
   const int vals3[12]={9,9,9,8,8,8,7,7,7,6,6,6};
-  DataArrayInt *d6=DataArrayInt::New(); d6->useArray(vals3,false,CPP_DEALLOC,4*3,1); d6->setName("aname"); d6->setInfoOnComponent(0,"mass [kg]");
+  DataArrayInt *d6=DataArrayInt::New(); d6->useArray(vals3,false,DeallocType::CPP_DEALLOC,4*3,1); d6->setName("aname"); d6->setInfoOnComponent(0,"mass [kg]");
   CPPUNIT_ASSERT(d5->isEqual(*d6)); d6->decrRef();
   d4->decrRef();
   d5->decrRef();
@@ -1582,15 +1582,15 @@ void MEDCouplingBasicsTest5::testIntersect2DMeshesTmp5()
   // coordinates
   DataArrayDouble *coords=DataArrayDouble::New();
   const double coordsData[376]={41,0,42,0,0,42,0,41,41.5,0,29.698484809834998,29.698484809834994,0,41.5,28.991378028648452,28.991378028648445,-42,0,-41,0,-29.698484809834994,29.698484809834998,-41.5,0,-28.991378028648445,28.991378028648452,0,-42,0,-41,-29.698484809835001,-29.698484809834994,0,-41.5,-28.991378028648455,-28.991378028648445,29.698484809834987,-29.698484809835001,28.991378028648441,-28.991378028648455,43,0,0,43,42.5,0,30.405591591021544,30.40559159102154,0,42.5,-43,0,-30.40559159102154,30.405591591021544,-42.5,0,0,-43,-30.405591591021551,-30.40559159102154,0,-42.5,30.405591591021537,-30.405591591021551,44,0,0,44,43.5,0,31.112698372208094,31.112698372208087,0,43.5,-44,0,-31.112698372208087,31.112698372208094,-43.5,0,0,-44,-31.112698372208097,-31.112698372208087,0,-43.5,31.112698372208083,-31.112698372208097,45,0,0,45,44.5,0,31.81980515339464,31.819805153394636,0,44.5,-45,0,-31.819805153394636,31.81980515339464,-44.5,0,0,-45,-31.819805153394647,-31.819805153394636,0,-44.5,31.819805153394629,-31.819805153394647,47,0,0,47,46,0,33.234018715767739,33.234018715767732,0,46,-47,0,-33.234018715767732,33.234018715767739,-46,0,0,-47,-33.234018715767739,-33.234018715767732,0,-46,33.234018715767725,-33.234018715767739,49,0,0,49,48,0,34.648232278140831,34.648232278140824,0,48,-49,0,-34.648232278140824,34.648232278140831,-48,0,0,-49,-34.648232278140839,-34.648232278140824,0,-48,34.648232278140817,-34.648232278140839,51,0,0,51,50,0,36.062445840513924,36.062445840513924,0,50,-51,0,-36.062445840513924,36.062445840513924,-50,0,0,-51,-36.062445840513931,-36.062445840513924,0,-50,36.062445840513917,-36.062445840513931,53,0,0,53,52,0,37.476659402887023,37.476659402887016,0,52,-53,0,-37.476659402887016,37.476659402887023,-52,0,0,-53,-37.47665940288703,-37.476659402887016,0,-52,37.476659402887009,-37.47665940288703,55,0,0,55,54,0,38.890872965260115,38.890872965260108,0,54,-55,0,-38.890872965260108,38.890872965260115,-54,0,0,-55,-38.890872965260122,-38.890872965260108,0,-54,38.890872965260101,-38.890872965260122,59,0,0,59,57,0,41.719300090006307,41.7193000900063,0,57,-59,0,-41.7193000900063,41.719300090006307,-57,0,0,-59,-41.719300090006314,-41.7193000900063,0,-57,41.719300090006293,-41.719300090006314,63,0,0,63,61,0,44.547727214752499,44.547727214752491,0,61,-63,0,-44.547727214752491,44.547727214752499,-61,0,0,-63,-44.547727214752506,-44.547727214752491,0,-61,44.547727214752484,-44.547727214752506,67,0,0,67,65,0,47.37615433949869,47.376154339498683,0,65,-67,0,-47.376154339498683,47.37615433949869,-65,0,0,-67,-47.376154339498697,-47.376154339498683,0,-65,47.376154339498676,-47.376154339498697,71,0,0,71,69,0,50.204581464244875,50.204581464244868,0,69,-71,0,-50.204581464244868,50.204581464244875,-69,0,0,-71,-50.204581464244889,-50.204581464244868,0,-69,50.20458146424486,-50.204581464244889,75,0,0,75,73,0,53.033008588991066,53.033008588991059,0,73,-75,0,-53.033008588991059,53.033008588991066,-73,0,0,-75,-53.033008588991073,-53.033008588991059,0,-73,53.033008588991052,-53.033008588991073,80,0,0,80,77.5,0,56.568542494923804,56.568542494923797,0,77.5,-80,0,-56.568542494923797,56.568542494923804,-77.5,0,0,-80,-56.568542494923818,-56.568542494923797,0,-77.5,56.56854249492379,-56.568542494923818};
-  coords->useArray(coordsData,false,CPP_DEALLOC,188,2);
+  coords->useArray(coordsData,false,DeallocType::CPP_DEALLOC,188,2);
   coords->setName("");
   DataArrayInt *conn=DataArrayInt::New();
   const int connData[540]={8,0,1,2,3,4,5,6,7,8,3,2,8,9,6,10,11,12,8,9,8,13,14,11,15,16,17,8,14,13,1,0,16,18,4,19,8,1,20,21,2,22,23,24,5,8,2,21,25,8,24,26,27,10,8,8,25,28,13,27,29,30,15,8,13,28,20,1,30,31,22,18,8,20,32,33,21,34,35,36,23,8,21,33,37,25,36,38,39,26,8,25,37,40,28,39,41,42,29,8,28,40,32,20,42,43,34,31,8,32,44,45,33,46,47,48,35,8,33,45,49,37,48,50,51,38,8,37,49,52,40,51,53,54,41,8,40,52,44,32,54,55,46,43,8,44,56,57,45,58,59,60,47,8,45,57,61,49,60,62,63,50,8,49,61,64,52,63,65,66,53,8,52,64,56,44,66,67,58,55,8,56,68,69,57,70,71,72,59,8,57,69,73,61,72,74,75,62,8,61,73,76,64,75,77,78,65,8,64,76,68,56,78,79,70,67,8,68,80,81,69,82,83,84,71,8,69,81,85,73,84,86,87,74,8,73,85,88,76,87,89,90,77,8,76,88,80,68,90,91,82,79,8,80,92,93,81,94,95,96,83,8,81,93,97,85,96,98,99,86,8,85,97,100,88,99,101,102,89,8,88,100,92,80,102,103,94,91,8,92,104,105,93,106,107,108,95,8,93,105,109,97,108,110,111,98,8,97,109,112,100,111,113,114,101,8,100,112,104,92,114,115,106,103,8,104,116,117,105,118,119,120,107,8,105,117,121,109,120,122,123,110,8,109,121,124,112,123,125,126,113,8,112,124,116,104,126,127,118,115,8,116,128,129,117,130,131,132,119,8,117,129,133,121,132,134,135,122,8,121,133,136,124,135,137,138,125,8,124,136,128,116,138,139,130,127,8,128,140,141,129,142,143,144,131,8,129,141,145,133,144,146,147,134,8,133,145,148,136,147,149,150,137,8,136,148,140,128,150,151,142,139,8,140,152,153,141,154,155,156,143,8,141,153,157,145,156,158,159,146,8,145,157,160,148,159,161,162,149,8,148,160,152,140,162,163,154,151,8,152,164,165,153,166,167,168,155,8,153,165,169,157,168,170,171,158,8,157,169,172,160,171,173,174,161,8,160,172,164,152,174,175,166,163,8,164,176,177,165,178,179,180,167,8,165,177,181,169,180,182,183,170,8,169,181,184,172,183,185,186,173,8,172,184,176,164,186,187,178,175};
-  conn->useArray(connData,false,CPP_DEALLOC,540,1);
+  conn->useArray(connData,false,DeallocType::CPP_DEALLOC,540,1);
   conn->setName("");
   DataArrayInt *connI=DataArrayInt::New();
   const int connIData[61]={0,9,18,27,36,45,54,63,72,81,90,99,108,117,126,135,144,153,162,171,180,189,198,207,216,225,234,243,252,261,270,279,288,297,306,315,324,333,342,351,360,369,378,387,396,405,414,423,432,441,450,459,468,477,486,495,504,513,522,531,540};
-  connI->useArray(connIData,false,CPP_DEALLOC,61,1);
+  connI->useArray(connIData,false,DeallocType::CPP_DEALLOC,61,1);
   connI->setName("");
   //
   MEDCouplingUMesh *m1=MEDCouplingUMesh::New("Fix",2);
@@ -1600,16 +1600,16 @@ void MEDCouplingBasicsTest5::testIntersect2DMeshesTmp5()
   //
   coords=DataArrayDouble::New();
   const double coordsData2[84]={46.5,-2.5,53.5,-2.5,53.5,2.5,46.5,2.5,50,-2.5,53.5,0,50,2.5,46.5,0,60.5,-2.5,60.5,2.5,57,-2.5,60.5,0,57,2.5,53.5,7.5,46.5,7.5,53.5,5,50,7.5,46.5,5,60.5,7.5,60.5,5,57,7.5,-2,47,2,47,2,53,-2,53,0,47,2,50,0,53,-2,50,6,47,6,53,4,47,6,50,4,53,2,59,-2,59,2,56,0,59,-2,56,6,59,6,56,4,59};
-  coords->useArray(coordsData2,false,CPP_DEALLOC,42,2);  
+  coords->useArray(coordsData2,false,DeallocType::CPP_DEALLOC,42,2);  
   coords->setName("");
   // connectivity
   conn=DataArrayInt::New();
   const int connData2[72]={8,0,1,2,3,4,5,6,7,8,1,8,9,2,10,11,12,5,8,3,2,13,14,6,15,16,17,8,2,9,18,13,12,19,20,15,8,21,22,23,24,25,26,27,28,8,22,29,30,23,31,32,33,26,8,24,23,34,35,27,36,37,38,8,23,30,39,34,33,40,41,36};
-  conn->useArray(connData2,false,CPP_DEALLOC,72,1);
+  conn->useArray(connData2,false,DeallocType::CPP_DEALLOC,72,1);
   conn->setName("");
   connI=DataArrayInt::New();
   const int connIData2[9]={0,9,18,27,36,45,54,63,72};
-  connI->useArray(connIData2,false,CPP_DEALLOC,9,1);
+  connI->useArray(connIData2,false,DeallocType::CPP_DEALLOC,9,1);
   connI->setName("");
   MEDCouplingUMesh *m2=MEDCouplingUMesh::New("Mobile",2);
   m2->setCoords(coords);
@@ -1647,7 +1647,7 @@ void MEDCouplingBasicsTest5::testDAIBuildUnique1()
 {
   DataArrayInt *d=DataArrayInt::New();
   const int dData[14]={1,2,2,3,3,3,3,4,5,5,7,7,7,19};
-  d->useArray(dData,false,CPP_DEALLOC,14,1);
+  d->useArray(dData,false,DeallocType::CPP_DEALLOC,14,1);
   const int expectedData[7]={1,2,3,4,5,7,19};
   //
   DataArrayInt *e=d->buildUnique();
@@ -1669,7 +1669,7 @@ void MEDCouplingBasicsTest5::testDAIPartitionByDifferentValues1()
   const int expected2_2[2]={0,2};
   const int expected2_3[4]={3,5,6,8};
   DataArrayInt *d=DataArrayInt::New();
-  d->useArray(data,false,CPP_DEALLOC,9,1);
+  d->useArray(data,false,DeallocType::CPP_DEALLOC,9,1);
   std::vector<int> f;
   static const int nbOfOutputsExpected=4;
   std::vector<DataArrayInt *> e=d->partitionByDifferentValues(f);
@@ -1702,32 +1702,32 @@ void MEDCouplingBasicsTest5::testDAICheckMonotonic1()
   const int data3[6]={-1,0,3,2,4,6};
   const int data4[6]={7,5,2,3,0,-6};
   DataArrayInt *d=DataArrayInt::New();
-  d->useArray(data1,false,CPP_DEALLOC,6,1);
+  d->useArray(data1,false,DeallocType::CPP_DEALLOC,6,1);
   CPPUNIT_ASSERT(d->isMonotonic(true));
   CPPUNIT_ASSERT(!d->isMonotonic(false));
   d->checkMonotonic(true);
   CPPUNIT_ASSERT_THROW(d->checkMonotonic(false),INTERP_KERNEL::Exception);
-  d->useArray(data2,false,CPP_DEALLOC,6,1);
+  d->useArray(data2,false,DeallocType::CPP_DEALLOC,6,1);
   CPPUNIT_ASSERT(d->isMonotonic(false));
   CPPUNIT_ASSERT(!d->isMonotonic(true));
   d->checkMonotonic(false);
   CPPUNIT_ASSERT_THROW(d->checkMonotonic(true),INTERP_KERNEL::Exception);
-  d->useArray(data3,false,CPP_DEALLOC,6,1);
+  d->useArray(data3,false,DeallocType::CPP_DEALLOC,6,1);
   CPPUNIT_ASSERT(!d->isMonotonic(false));
   CPPUNIT_ASSERT(!d->isMonotonic(true));
   CPPUNIT_ASSERT_THROW(d->checkMonotonic(true),INTERP_KERNEL::Exception);
   CPPUNIT_ASSERT_THROW(d->checkMonotonic(false),INTERP_KERNEL::Exception);
-  d->useArray(data4,false,CPP_DEALLOC,6,1);
+  d->useArray(data4,false,DeallocType::CPP_DEALLOC,6,1);
   CPPUNIT_ASSERT(!d->isMonotonic(false));
   CPPUNIT_ASSERT(!d->isMonotonic(true));
   CPPUNIT_ASSERT_THROW(d->checkMonotonic(true),INTERP_KERNEL::Exception);
   CPPUNIT_ASSERT_THROW(d->checkMonotonic(false),INTERP_KERNEL::Exception);
-  d->useArray(data4,false,CPP_DEALLOC,0,1);
+  d->useArray(data4,false,DeallocType::CPP_DEALLOC,0,1);
   CPPUNIT_ASSERT(d->isMonotonic(true));
   CPPUNIT_ASSERT(d->isMonotonic(false));
   d->checkMonotonic(true);
   d->checkMonotonic(false);
-  d->useArray(data4,false,CPP_DEALLOC,3,2);//throw because nbComp!=1
+  d->useArray(data4,false,DeallocType::CPP_DEALLOC,3,2);//throw because nbComp!=1
   CPPUNIT_ASSERT_THROW(d->isMonotonic(true),INTERP_KERNEL::Exception);
   CPPUNIT_ASSERT_THROW(d->isMonotonic(false),INTERP_KERNEL::Exception);
   CPPUNIT_ASSERT_THROW(d->checkMonotonic(true),INTERP_KERNEL::Exception);
@@ -1740,14 +1740,14 @@ void MEDCouplingBasicsTest5::testIntersect2DMeshesTmp6()
   // coordinates
   DataArrayDouble *coords=DataArrayDouble::New();
   const double coordsData[16]={2.7554552980815448e-15,45,-45,5.5109105961630896e-15,-31.819805153394636,31.81980515339464,2.8779199779962799e-15,47,2.8166876380389124e-15,46,-47,5.7558399559925599e-15,-33.234018715767732,33.234018715767739,-46,5.6333752760778247e-15};
-  coords->useArray(coordsData,false,CPP_DEALLOC,8,2);
+  coords->useArray(coordsData,false,DeallocType::CPP_DEALLOC,8,2);
   // connectivity
   DataArrayInt *conn=DataArrayInt::New();
   const int connData[9]={8,0,3,5,1,4,6,7,2};
-  conn->useArray(connData,false,CPP_DEALLOC,9,1);
+  conn->useArray(connData,false,DeallocType::CPP_DEALLOC,9,1);
   DataArrayInt *connI=DataArrayInt::New();
   const int connIData[2]={0,9};
-  connI->useArray(connIData,false,CPP_DEALLOC,2,1);
+  connI->useArray(connIData,false,DeallocType::CPP_DEALLOC,2,1);
   MEDCouplingUMesh *m1=MEDCouplingUMesh::New("Fixe",2);
   m1->setCoords(coords);
   m1->setConnectivity(conn,connI,true);
@@ -1755,14 +1755,14 @@ void MEDCouplingBasicsTest5::testIntersect2DMeshesTmp6()
   //
   coords=DataArrayDouble::New();
   const double coordsData2[26]={-7.3800475508445391,41.854329503018846,-3.7041190667754655,42.338274668899189,-3.7041190667754655,45.338274668899189,-7.3800475508445382,44.854329503018839,-5.5473631693521845,42.136406608386956,-3.7041190667754655,43.838274668899189,-5.5420833088100014,45.09630208595901,-7.3800475508445382,43.354329503018839,-3.7041190667754651,52.338274668899189,-7.3800475508445382,51.854329503018839,-3.7041190667754655,48.838274668899189,-5.5420833088100014,52.09630208595901,-7.3800475508445382,48.354329503018839};
-  coords->useArray(coordsData2,false,CPP_DEALLOC,13,2);
+  coords->useArray(coordsData2,false,DeallocType::CPP_DEALLOC,13,2);
   // connectivity
   conn=DataArrayInt::New();
   const int connData2[18]={8,0,1,2,3,4,5,6,7,8,3,2,8,9,6,10,11,12};
-  conn->useArray(connData2,false,CPP_DEALLOC,18,1);
+  conn->useArray(connData2,false,DeallocType::CPP_DEALLOC,18,1);
   connI=DataArrayInt::New();
   const int connIData2[3]={0,9,18};
-  connI->useArray(connIData2,false,CPP_DEALLOC,3,1);
+  connI->useArray(connIData2,false,DeallocType::CPP_DEALLOC,3,1);
   //
   MEDCouplingUMesh *m2=MEDCouplingUMesh::New("Mobile",2);
   m2->setCoords(coords);
@@ -1802,14 +1802,14 @@ void MEDCouplingBasicsTest5::testIntersect2DMeshesTmp7()
   // coordinates circle - SEE getCircle() on the Python side
   DataArrayDouble *coords1=DataArrayDouble::New();
   const double coordsData1[16]={0.5328427124746189, -0.08284271247461905, -0.03284271247461901, 0.4828427124746191, -0.03284271247461906, -0.082842712474619, 0.5328427124746191, 0.482842712474619};
-  coords1->useArray(coordsData1,false,CPP_DEALLOC,8,2);
+  coords1->useArray(coordsData1,false,DeallocType::CPP_DEALLOC,8,2);
   // connectivity
   DataArrayInt *conn1=DataArrayInt::New();
   const int connData1[5]={INTERP_KERNEL::NORM_QPOLYG,0,1,2,3};
-  conn1->useArray(connData1,false,CPP_DEALLOC,5,1);
+  conn1->useArray(connData1,false,DeallocType::CPP_DEALLOC,5,1);
   DataArrayInt *connI1=DataArrayInt::New();
   const int connIData1[2]={0,5};
-  connI1->useArray(connIData1,false,CPP_DEALLOC,2,1);
+  connI1->useArray(connIData1,false,DeallocType::CPP_DEALLOC,2,1);
   MEDCouplingUMesh *m1=MEDCouplingUMesh::New("circle",2);
   m1->setCoords(coords1);
   m1->setConnectivity(conn1,connI1,true);
@@ -1818,14 +1818,14 @@ void MEDCouplingBasicsTest5::testIntersect2DMeshesTmp7()
   // square
   DataArrayDouble *coords2=DataArrayDouble::New();
   const double coordsData2[8]={-0.5,-0.5,   -0.5, 0.5, 0.5, 0.5,    0.5,-0.5};
-  coords2->useArray(coordsData2,false,CPP_DEALLOC,4,2);
+  coords2->useArray(coordsData2,false,DeallocType::CPP_DEALLOC,4,2);
   // connectivity
   DataArrayInt *conn2=DataArrayInt::New();
   const int connData2[5]={INTERP_KERNEL::NORM_POLYGON, 0,1,2,3};
-  conn2->useArray(connData2,false,CPP_DEALLOC,5,1);
+  conn2->useArray(connData2,false,DeallocType::CPP_DEALLOC,5,1);
   DataArrayInt *connI2=DataArrayInt::New();
   const int connIData2[2]={0,5};
-  connI2->useArray(connIData2,false,CPP_DEALLOC,2,1);
+  connI2->useArray(connIData2,false,DeallocType::CPP_DEALLOC,2,1);
   MEDCouplingUMesh *m2=MEDCouplingUMesh::New("square",2);
   m2->setCoords(coords2);
   m2->setConnectivity(conn2,connI2,true);
@@ -1859,10 +1859,10 @@ void MEDCouplingBasicsTest5::testDAIBuildSubstractionOptimized1()
   const int tab1[7]={1,3,5,6,7,9,13};
   const int tab2[3]={3,5,9};
   const int tab3[3]={1,3,5};
-  DataArrayInt *da1=DataArrayInt::New(); da1->useArray(tab1,false,CPP_DEALLOC,7,1);
-  DataArrayInt *da2=DataArrayInt::New(); da2->useArray(tab2,false,CPP_DEALLOC,3,1);
-  DataArrayInt *da3=DataArrayInt::New(); da3->useArray(tab3,false,CPP_DEALLOC,3,1);
-  DataArrayInt *da4=DataArrayInt::New(); da4->useArray(tab1,false,CPP_DEALLOC,7,1);
+  DataArrayInt *da1=DataArrayInt::New(); da1->useArray(tab1,false,DeallocType::CPP_DEALLOC,7,1);
+  DataArrayInt *da2=DataArrayInt::New(); da2->useArray(tab2,false,DeallocType::CPP_DEALLOC,3,1);
+  DataArrayInt *da3=DataArrayInt::New(); da3->useArray(tab3,false,DeallocType::CPP_DEALLOC,3,1);
+  DataArrayInt *da4=DataArrayInt::New(); da4->useArray(tab1,false,DeallocType::CPP_DEALLOC,7,1);
   //
   DataArrayInt *a=0;
   a=da1->buildSubstractionOptimized(da2);
@@ -1893,7 +1893,7 @@ void MEDCouplingBasicsTest5::testDAIBuildSubstractionOptimized1()
 void MEDCouplingBasicsTest5::testDAIIsStrictlyMonotonic1()
 {
   const int tab1[7]={1,3,5,6,7,9,13};
-  DataArrayInt *da1=DataArrayInt::New(); da1->useArray(tab1,false,CPP_DEALLOC,7,1);
+  DataArrayInt *da1=DataArrayInt::New(); da1->useArray(tab1,false,DeallocType::CPP_DEALLOC,7,1);
   CPPUNIT_ASSERT(da1->isStrictlyMonotonic(true));
   da1->checkStrictlyMonotonic(true);
   CPPUNIT_ASSERT(da1->isMonotonic(true));
@@ -1905,7 +1905,7 @@ void MEDCouplingBasicsTest5::testDAIIsStrictlyMonotonic1()
   da1->decrRef();
   //
   int tab2[7]={1,3,5,6,6,9,13};
-  da1=DataArrayInt::New(); da1->useArray(tab2,false,CPP_DEALLOC,7,1);
+  da1=DataArrayInt::New(); da1->useArray(tab2,false,DeallocType::CPP_DEALLOC,7,1);
   CPPUNIT_ASSERT(!da1->isStrictlyMonotonic(true));
   CPPUNIT_ASSERT_THROW(da1->checkStrictlyMonotonic(true),INTERP_KERNEL::Exception);
   CPPUNIT_ASSERT(da1->isMonotonic(true));
@@ -1917,7 +1917,7 @@ void MEDCouplingBasicsTest5::testDAIIsStrictlyMonotonic1()
   da1->decrRef();
   //
   const int tab3[7]={1,3,5,6,5,9,13};
-  da1=DataArrayInt::New(); da1->useArray(tab3,false,CPP_DEALLOC,7,1);
+  da1=DataArrayInt::New(); da1->useArray(tab3,false,DeallocType::CPP_DEALLOC,7,1);
   CPPUNIT_ASSERT(!da1->isStrictlyMonotonic(true));
   CPPUNIT_ASSERT_THROW(da1->checkStrictlyMonotonic(true),INTERP_KERNEL::Exception);
   CPPUNIT_ASSERT(!da1->isMonotonic(true));
@@ -1929,7 +1929,7 @@ void MEDCouplingBasicsTest5::testDAIIsStrictlyMonotonic1()
   da1->decrRef();
   //
   const int tab4[7]={13,9,7,6,5,3,1};
-  da1=DataArrayInt::New(); da1->useArray(tab4,false,CPP_DEALLOC,7,1);
+  da1=DataArrayInt::New(); da1->useArray(tab4,false,DeallocType::CPP_DEALLOC,7,1);
   CPPUNIT_ASSERT(!da1->isStrictlyMonotonic(true));
   CPPUNIT_ASSERT_THROW(da1->checkStrictlyMonotonic(true),INTERP_KERNEL::Exception);
   CPPUNIT_ASSERT(!da1->isMonotonic(true));
@@ -1941,7 +1941,7 @@ void MEDCouplingBasicsTest5::testDAIIsStrictlyMonotonic1()
   da1->decrRef();
   //
   const int tab5[7]={13,9,6,6,5,3,1};
-  da1=DataArrayInt::New(); da1->useArray(tab5,false,CPP_DEALLOC,7,1);
+  da1=DataArrayInt::New(); da1->useArray(tab5,false,DeallocType::CPP_DEALLOC,7,1);
   CPPUNIT_ASSERT(!da1->isStrictlyMonotonic(true));
   CPPUNIT_ASSERT_THROW(da1->checkStrictlyMonotonic(true),INTERP_KERNEL::Exception);
   CPPUNIT_ASSERT(!da1->isMonotonic(true));
@@ -1953,7 +1953,7 @@ void MEDCouplingBasicsTest5::testDAIIsStrictlyMonotonic1()
   da1->decrRef();
   //
   const int tab6[7]={13,9,5,6,5,3,1};
-  da1=DataArrayInt::New(); da1->useArray(tab6,false,CPP_DEALLOC,7,1);
+  da1=DataArrayInt::New(); da1->useArray(tab6,false,DeallocType::CPP_DEALLOC,7,1);
   CPPUNIT_ASSERT(!da1->isStrictlyMonotonic(true));
   CPPUNIT_ASSERT_THROW(da1->checkStrictlyMonotonic(true),INTERP_KERNEL::Exception);
   CPPUNIT_ASSERT(!da1->isMonotonic(true));
@@ -1964,7 +1964,7 @@ void MEDCouplingBasicsTest5::testDAIIsStrictlyMonotonic1()
   CPPUNIT_ASSERT_THROW(da1->checkMonotonic(false),INTERP_KERNEL::Exception);
   da1->decrRef();
   //
-  da1=DataArrayInt::New(); da1->useArray(tab1,false,CPP_DEALLOC,0,1);
+  da1=DataArrayInt::New(); da1->useArray(tab1,false,DeallocType::CPP_DEALLOC,0,1);
   CPPUNIT_ASSERT(da1->isStrictlyMonotonic(true));
   da1->checkStrictlyMonotonic(true);
   CPPUNIT_ASSERT(da1->isMonotonic(true));
@@ -1975,7 +1975,7 @@ void MEDCouplingBasicsTest5::testDAIIsStrictlyMonotonic1()
   da1->checkMonotonic(false);
   da1->decrRef();
   //
-  da1=DataArrayInt::New(); da1->useArray(tab1,false,CPP_DEALLOC,1,1);
+  da1=DataArrayInt::New(); da1->useArray(tab1,false,DeallocType::CPP_DEALLOC,1,1);
   CPPUNIT_ASSERT(da1->isStrictlyMonotonic(true));
   da1->checkStrictlyMonotonic(true);
   CPPUNIT_ASSERT(da1->isMonotonic(true));
@@ -1998,7 +1998,7 @@ void MEDCouplingBasicsTest5::testSimplexize3()
   m->insertNextCell(INTERP_KERNEL::NORM_TETRA4,4,conn+20);
   const double coords[72]={0.,0.,0.,0.,1.,0.,1.,0.,0.,0.,0.,1.,2.,0.,0.,2.,1.,0.,3.,1.,0.,3.,0.,0.,2.,0.,1.,2.,1.,1.,3.,1.,1.,3.,0.,1.,4.,0.,0.,4.,1.,0.,5.,1.,0.,5.,0.,0.,4.,0.,1.,4.,1.,1.,5.,1.,1.,5.,0.,1.,6.,0.,0.,6.,1.,0.,7.,0.,0.,6.,0.,1.};
   DataArrayDouble *c=DataArrayDouble::New();
-  c->useArray(coords,false,CPP_DEALLOC,24,3);
+  c->useArray(coords,false,DeallocType::CPP_DEALLOC,24,3);
   m->setCoords(c);
   c->decrRef();
   m->checkConsistency();
index 2ea0e504e8cb122eaaf3684a9a8c5e2269749d6b..e9ea2b4507fabfae72cec734f155f513652c0570 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 63871d092b4569f8a28d75fbb53ee9e7ddd35b59..52ee9b15e53dbc9bc8691c0e4349012a3f1c4eb9 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 683a8d1959838715444ca6050c8b134bcb7cb8a5..cc96fe9a6ea990b43ce9181b5657a442eaf3408d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -1497,7 +1497,7 @@ void MEDCouplingBasicsTestInterp::testInterpolationCC()
       const double* arr = i ? arr1 : arr2;
       const int nb_coord = i ? 3 : 4;
       DataArrayDouble* coords = DataArrayDouble::New();
-      coords->useArray( arr, /*ownership=*/false, CPP_DEALLOC, nb_coord, 1 );
+      coords->useArray( arr, /*ownership=*/false, DeallocType::CPP_DEALLOC, nb_coord, 1 );
 
       mesh[i] = MEDCouplingCMesh::New();
       mesh[i]->setCoords( coords, coords, coords );
@@ -1559,7 +1559,7 @@ void MEDCouplingBasicsTestInterp::testInterpolationCU1D()
   MEDCouplingCMesh* meshC = MEDCouplingCMesh::New();
   DataArrayDouble* coords = DataArrayDouble::New();
   double arr[4] = { -1/3., 1/3., 2/3., 4/3. };
-  coords->useArray( arr, /*ownership=*/false, CPP_DEALLOC, 4, 1 );
+  coords->useArray( arr, /*ownership=*/false, DeallocType::CPP_DEALLOC, 4, 1 );
   meshC->setCoords( coords );
   coords->decrRef();
 
@@ -1597,7 +1597,7 @@ void MEDCouplingBasicsTestInterp::testInterpolationCU2D()
   MEDCouplingCMesh* meshC = MEDCouplingCMesh::New();
   DataArrayDouble* coords = DataArrayDouble::New();
   double arr[4] = { -1/3., 1/3., 2/3., 4/3. };
-  coords->useArray( arr, /*ownership=*/false, CPP_DEALLOC, 4, 1 );
+  coords->useArray( arr, /*ownership=*/false, DeallocType::CPP_DEALLOC, 4, 1 );
   meshC->setCoords( coords, coords );
   coords->decrRef();
 
@@ -1666,7 +1666,7 @@ void MEDCouplingBasicsTestInterp::testInterpolationCU3D()
   MEDCouplingCMesh* meshC = MEDCouplingCMesh::New();
   DataArrayDouble* coords = DataArrayDouble::New();
   double arr[4] = { -1/3., 1/3., 2/3., 4/3. };
-  coords->useArray( arr, /*ownership=*/false, CPP_DEALLOC, 4, 1 );
+  coords->useArray( arr, /*ownership=*/false, DeallocType::CPP_DEALLOC, 4, 1 );
   meshC->setCoords( coords, coords, coords );
   coords->decrRef();
 
index 58fd0d19b2154a6078e4c3915cfa8a8d69aadd11..a3c5f1005385714f070a66b7f22c5807dd8459fb 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 30baf10501d6a69eaf3edb60282909ba31db260e..dfd3751af6e2f58fc8bd0c0231cc62c008c20310 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -2275,7 +2275,7 @@ void CppSnippetDataArrayBuild1()
   //
   //! [CppSnippetDataArrayBuild1_1]
   coordsArr=MEDCoupling::DataArrayDouble::New();
-  coordsArr->useArray(coords,false,MEDCoupling::CPP_DEALLOC,nbOfNodes,3);
+  coordsArr->useArray(coords,false,MEDCoupling::DeallocType::CPP_DEALLOC,nbOfNodes,3);
   //now use coordsArr as you need
   //...
   //coordsArr is no more useful here : release it
@@ -2285,7 +2285,7 @@ void CppSnippetDataArrayBuild1()
   coordsArr=MEDCoupling::DataArrayDouble::New();
   tmp=new double[3*nbOfNodes];
   std::copy(coords,coords+3*nbOfNodes,tmp);
-  coordsArr->useArray(tmp,true,MEDCoupling::CPP_DEALLOC,nbOfNodes,3);
+  coordsArr->useArray(tmp,true,MEDCoupling::DeallocType::CPP_DEALLOC,nbOfNodes,3);
   //now use coordsArr as you need
   //...
   //coordsArr is no more useful, release it
@@ -2295,7 +2295,7 @@ void CppSnippetDataArrayBuild1()
   coordsArr=MEDCoupling::DataArrayDouble::New();
   tmp=(double *)malloc(3*nbOfNodes*sizeof(double));
   std::copy(coords,coords+3*nbOfNodes,tmp);
-  coordsArr->useArray(tmp,true,MEDCoupling::C_DEALLOC,nbOfNodes,3);
+  coordsArr->useArray(tmp,true,MEDCoupling::DeallocType::C_DEALLOC,nbOfNodes,3);
   //now use coordsArr as you need
   //...
   //coordsArr is no more useful here : release it
index 4a10cfdb9c129c1ff4062525ca8796074cfb65bd..7b6a72e8185fff23aea25f37ce465baba7bab231 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -1278,12 +1278,12 @@ void MEDCouplingRemapperTest::testBugNonRegression1()
   // source
   DataArrayDouble *coordsSrc(DataArrayDouble::New());
   const double coordsSrcData[18]={-6.25,3.6084391824351605,264.85199999999998,-6.25,3.6084391824351605,289.05200000000002,-6.2499999999999991,-3.6084391824351618,264.85199999999998,-6.2499999999999991,-3.6084391824351618,289.05200000000002,-1.7763568394002505e-15,4.4408920985006262e-15,264.85199999999998,-1.7763568394002505e-15,4.4408920985006262e-15,289.05200000000002};
-  coordsSrc->useArray(coordsSrcData,false,CPP_DEALLOC,6,3);
+  coordsSrc->useArray(coordsSrcData,false,DeallocType::CPP_DEALLOC,6,3);
   DataArrayInt *connSrc(DataArrayInt::New()),*connISrc(DataArrayInt::New());
   const int connSrcData[7]={16,2,0,4,3,1,5};
-  connSrc->useArray(connSrcData,false,CPP_DEALLOC,7,1);
+  connSrc->useArray(connSrcData,false,DeallocType::CPP_DEALLOC,7,1);
   const int connISrcData[2]={0,7};
-  connISrc->useArray(connISrcData,false,CPP_DEALLOC,2,1);
+  connISrc->useArray(connISrcData,false,DeallocType::CPP_DEALLOC,2,1);
   MEDCouplingUMesh *srcMesh(MEDCouplingUMesh::New("source",3));
   srcMesh->setCoords(coordsSrc);
   srcMesh->setConnectivity(connSrc,connISrc,true);
@@ -1291,13 +1291,13 @@ void MEDCouplingRemapperTest::testBugNonRegression1()
   // target
   DataArrayDouble *coordsTrg(DataArrayDouble::New());
 const double coordsTrgData[36]={-2,1.1547005383792521,264.85199999999998,-2,0.57735026918962618,264.85199999999998,-2.5,0.2886751345948132,264.85199999999998,-2.5,1.443375672974065,264.85199999999998,-3.0000000000000004,1.1547005383792526,264.85199999999998,-3.0000000000000004,0.57735026918962662,264.85199999999998,-2,1.1547005383792521,289.05200000000002,-2,0.57735026918962618,289.05200000000002,-2.5,0.2886751345948132,289.05200000000002,-2.5,1.443375672974065,289.05200000000002,-3.0000000000000004,1.1547005383792526,289.05200000000002,-3.0000000000000004,0.57735026918962662,289.05200000000002};
- coordsTrg->useArray(coordsTrgData,false,CPP_DEALLOC,12,3);
+ coordsTrg->useArray(coordsTrgData,false,DeallocType::CPP_DEALLOC,12,3);
  DataArrayInt *connTrg=DataArrayInt::New();
  const int connTrgData[44]={31,0,1,2,5,4,3,-1,7,6,9,10,11,8,-1,3,9,6,0,-1,4,10,9,3,-1,5,11,10,4,-1,2,8,11,5,-1,1,7,8,2,-1,0,6,7,1};
- connTrg->useArray(connTrgData,false,CPP_DEALLOC,44,1);
+ connTrg->useArray(connTrgData,false,DeallocType::CPP_DEALLOC,44,1);
  DataArrayInt *connITrg=DataArrayInt::New();
  const int connITrgData[2]={0,44};
- connITrg->useArray(connITrgData,false,CPP_DEALLOC,2,1);
+ connITrg->useArray(connITrgData,false,DeallocType::CPP_DEALLOC,2,1);
  MEDCouplingUMesh *trgMesh=MEDCouplingUMesh::New("target",3);
  trgMesh->setCoords(coordsTrg);
  trgMesh->setConnectivity(connTrg,connITrg,true);
index a876047fa75ee446265cf16ba64313be596bf595..c08acd6b5e2d0a6d094e1d24785f54939b97645d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index bab527cc78fe7790d3e9a014e52631756ccb3ad3..c32655e359d95d5041f0c99f4c0019d48e1c9d62 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index a1ef0af89576b0c40b44d3def0b6f3ca51019ec6..7b5a5c6850f6272abbf7b14047a5daca08b113f2 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 3dc442075b060e8d5368bb31f68d75b63647257b..b62527ce5be7cafe9df3adc2961c800e4c75d76e 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2017  CEA/DEN, EDF R&D
+# Copyright (C) 2012-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -144,6 +144,7 @@ SALOME_INSTALL_SCRIPTS("${PYFILES_TO_INSTALL}" ${MEDCOUPLING_INSTALL_PYTHON} EXT
 INSTALL(FILES ${MC_Swig_interf} DESTINATION ${MEDCOUPLING_INSTALL_HEADERS})
 INSTALL(FILES ${MC_pyTestFiles} DESTINATION ${MEDCOUPLING_INSTALL_SCRIPT_PYTHON})
 
+SALOME_ACCUMULATE_ENVIRONMENT(PYTHONPATH ${CMAKE_CURRENT_BINARY_DIR}/../PyWrappings)
 SALOME_GENERATE_TESTS_ENVIRONMENT(tests_env)
 
 FOREACH(test ${BASE_TESTS})
index d336cd942313e067cbbbd267ff375fbca27e1c0e..6c6c894afb1cb6073da9a2d81c1424e540dab79f 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2015-2017  CEA/DEN, EDF R&D
+# Copyright (C) 2015-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 7bb789e37f468da515fd5cd2cc4b6b4b1bdb9a49..57ae1cd4884f1709a9f7993c3d225fa6ee1f6e0e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 2d6a4c0cb3b4294c5ad28f1d6d7e93ad0f5e5dea..79dff76c6d71bb8c07b86eea0a25234711b7a6db 100644 (file)
@@ -1,5 +1,5 @@
 #  -*- coding: utf-8 -*-
-# Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+# Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -22,7 +22,7 @@ import sys
 if sys.platform == "win32":
     from MEDCouplingCompat import *
 else:
-    from MEDCoupling import *
+    from medcoupling import *
 
 import unittest
 from math import pi,e,sqrt,cos,sin
@@ -1030,6 +1030,7 @@ class MEDCouplingBasicsTest1(unittest.TestCase):
         f3=MEDCouplingFieldDouble.MergeFields(f1,f2);
         f3.checkConsistencyLight();
         m4=MEDCouplingDataForTest.build2DTargetMeshMerged_1();
+        m4.setName(f1.getMesh().getName())
         self.assertTrue(f3.getMesh().isEqual(m4,1.e-12));
         name=f3.getName();
         self.assertEqual(name,"MeasureOfMesh_");
@@ -1093,9 +1094,10 @@ class MEDCouplingBasicsTest1(unittest.TestCase):
         self.assertTrue(abs(3.6-values4[0])<1.e-12);
         self.assertTrue(abs(7.2-values4[1])<1.e-12);
         values4=f1.integral(True);
+        #0.4 == 0.25/4*-0.6+(0.25/4+0.125/3)*-0.1+0.4*(0.125/3.+0.125/3)+(-0.1)*(0.25/4+0.25/4)+0.4*(0.25/4+0.125/3+0.125/3+0.25/4+0.25/4)+0.9*(0.25/4+0.125/3)+0.4*0.25/4+0.9*(0.25/4+0.25/4)+1.4*0.25/4
         self.assertEqual(2,len(values4))
-        self.assertTrue(abs(0.5-values4[0])<1.e-12);
-        self.assertTrue(abs(1.-values4[1])<1.e-12);
+        self.assertTrue(abs(0.4-values4[0])<1.e-12);
+        self.assertTrue(abs(0.8-values4[1])<1.e-12);
         #
         self.assertRaises(InterpKernelException,m.fillFromAnalytic,ON_NODES,1,"1./(x-0.2)");
         pass
@@ -1156,8 +1158,8 @@ class MEDCouplingBasicsTest1(unittest.TestCase):
         self.assertTrue(abs(3.6-values4[0])<1.e-12);
         self.assertTrue(abs(7.2-values4[1])<1.e-12);
         values4=f1.integral(True);
-        self.assertTrue(abs(0.5-values4[0])<1.e-12);
-        self.assertTrue(abs(1.-values4[1])<1.e-12);
+        self.assertTrue(abs(0.4-values4[0])<1.e-12);
+        self.assertTrue(abs(0.8-values4[1])<1.e-12);
         pass
 
     def testApplyFunc(self):
@@ -2285,6 +2287,30 @@ class MEDCouplingBasicsTest1(unittest.TestCase):
         self.assertEqual(mesh.getNodalConnectivityIndex().getValues(), cIRef)
         pass
 
+    def testCellOrientation5(self):
+        """ Non regression for NORM_QPOLYG  """
+        mesh = MEDCouplingUMesh('Mesh_3', 2)
+        coo = DataArrayDouble([(-34.3035,5.1),(-35.2018,4.59163),(-34.9509,6.21985),(-35.0858,5.4072),(-34.7527,4.84582),(-34.6641,5.63857)])
+        mesh.setCoords(coo)
+        c = DataArrayInt([6, 2, 1, 0, 3, 4, 5])
+        cI = DataArrayInt([0, 7])
+        mesh.setConnectivity(c, cI)
+        vec = [0., 0., -1.]
+        mesh.changeSpaceDimension(3)
+        mesh.orientCorrectly2DCells(vec, False)
+        mesh.changeSpaceDimension(2)
+        cRef = [6, 2, 0, 1, 5, 4, 3]
+        cIRef = [0, 7]
+        self.assertEqual(mesh.getNodalConnectivity().getValues(), cRef)
+        self.assertEqual(mesh.getNodalConnectivityIndex().getValues(), cIRef)
+        # Second call doest not change anything:
+        mesh.changeSpaceDimension(3)
+        mesh.orientCorrectly2DCells(vec, False)
+        mesh.changeSpaceDimension(2)
+        self.assertEqual(mesh.getNodalConnectivity().getValues(), cRef)
+        self.assertEqual(mesh.getNodalConnectivityIndex().getValues(), cIRef)
+        pass
+
     def testPolyhedronBarycenter(self):
         connN=[0,3,2,1, -1, 4,5,6,7, -1, 0,4,7,3, -1, 3,7,6,2, -1, 2,6,5,1, -1, 1,5,4,0];
         coords=[0.,0.,0., 1.,0.,0., 1.,1.,0., 0.,1.,0., 0.,0.,1., 1.,0.,1., 1.,1.,1., 0.,1.,1., 0.5, 0.5, 0.5];
index bb74613adda4a5e53586566b7003d3c4acfe9666..332270c83f45893d58e3c6993153c412261ba252 100644 (file)
@@ -1,5 +1,5 @@
 #  -*- coding: utf-8 -*-
-# Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+# Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -23,7 +23,7 @@ import sys
 if sys.platform == "win32":
     from MEDCouplingCompat import *
 else:
-    from MEDCoupling import *
+    from medcoupling import *
 import unittest
 from math import pi,e,sqrt,cos,sin
 from datetime import datetime
@@ -705,7 +705,7 @@ class MEDCouplingBasicsTest2(unittest.TestCase):
         self.assertTrue(f1.isEqualWithoutConsideringStr(f2,1e-12,1e-12));
         #
         pass
-    
+
     def testGetNodeIdsOfCell1(self):
         mesh1=MEDCouplingDataForTest.build2DTargetMesh_1();
         li=mesh1.getNodeIdsOfCell(1)
@@ -820,8 +820,8 @@ class MEDCouplingBasicsTest2(unittest.TestCase):
         self.assertTrue(abs(3.6-values4[0])<1.e-12);
         self.assertTrue(abs(7.2-values4[1])<1.e-12);
         values4=f1.integral(True);
-        self.assertTrue(abs(0.5-values4[0])<1.e-12);
-        self.assertTrue(abs(1.-values4[1])<1.e-12);
+        self.assertTrue(abs(0.4-values4[0])<1.e-12);
+        self.assertTrue(abs(0.8-values4[1])<1.e-12);
         #
         f1=MEDCouplingFieldDouble.New(ON_NODES,NO_TIME);
         f1.setMesh(m);
@@ -876,7 +876,7 @@ class MEDCouplingBasicsTest2(unittest.TestCase):
                         132.680430393685,255.37973247196,96.15235602819];
         volHexa8=3258520.29637466;
         baryHexa8=[43.925705821778, 155.31893955289, 65.874418109644]
-        
+
         coordsForPenta6=[-68.199829618726,178.938498373416,62.608505919588,
                          8.461744647847,76.653979804423,165.00018874933,
                          -27.273893776752,167.567731083961,192.830034145464,
@@ -885,7 +885,7 @@ class MEDCouplingBasicsTest2(unittest.TestCase):
                          132.680430393685,255.37973247196,96.15235602819];
         volPenta6=944849.868507338;
         baryPenta6=[39.631002313543,182.692711783428,106.98540473964]
-        
+
         coordsForPyra5=[132.680430393685,255.37973247196,96.15235602819,
                         -27.273893776752,167.567731083961,192.830034145464,
                         8.461744647847,76.653979804423,165.00018874933,
@@ -1467,7 +1467,7 @@ class MEDCouplingBasicsTest2(unittest.TestCase):
             self.assertEqual(arr2[i],da3.getIJ(i,0));
             pass
         pass
-    
+
     def testKeepSetSelectedComponent1(self):
         arr1=[1.,2.,3.,4., 11.,12.,13.,14., 21.,22.,23.,24., 31.,32.,33.,34., 41.,42.,43.,44.]
         a1=DataArrayDouble.New();
@@ -1619,7 +1619,7 @@ class MEDCouplingBasicsTest2(unittest.TestCase):
             pass
         #
         pass
-    
+
     def testElementaryDAThrowAndSpecialCases(self):
         da=DataArrayInt.New();
         self.assertRaises(InterpKernelException, da.checkAllocated);
@@ -1628,16 +1628,16 @@ class MEDCouplingBasicsTest2(unittest.TestCase):
         da.alloc(7,1);
         da.fillWithValue(11); #11,11,11,11...
         da.iota(10); #10,11,12,13...
-        
+
         db=DataArrayInt.New();
         db.alloc(7,2);
-        
+
         dbl2=DataArrayDouble.New();
         dbl2.alloc(7,2);
         self.assertRaises(InterpKernelException, dbl2.isUniform, 10., 1e-15);
         self.assertRaises(InterpKernelException, dbl2.sort);
         self.assertRaises(InterpKernelException, dbl2.iota, 10.);
-        
+
         dbl=DataArrayDouble.New();
         #DataArrayDouble not allocated yet
         self.assertRaises(InterpKernelException, dbl.iota, 10.);
@@ -1645,7 +1645,7 @@ class MEDCouplingBasicsTest2(unittest.TestCase):
         self.assertRaises(InterpKernelException, dbl.sort);
         self.assertRaises(InterpKernelException, dbl.fromNoInterlace);
         self.assertRaises(InterpKernelException, dbl.toNoInterlace);
-        
+
         dbl.alloc(7,1);
         dbl.iota(10.);
         self.assertTrue(not dbl.isUniform(10.,1e-15));
@@ -1658,16 +1658,16 @@ class MEDCouplingBasicsTest2(unittest.TestCase):
         self.assertTrue(dbl.isMonotonic(False, .99));
         self.assertTrue(not dbl.isMonotonic(False, 1.1));
         self.assertTrue(not dbl.isMonotonic(False, -1.1));
-        
+
         dc=DataArrayInt.New();
         dc.alloc(14,1);
-        
+
         dd=DataArrayDouble.New();
         self.assertRaises(InterpKernelException, dd.checkAllocated);
         self.assertRaises(InterpKernelException, dd.fillWithValue, 1.);
         self.assertRaises(InterpKernelException, dd.iota, 1.);
         self.assertTrue(not ((dd.repr().find("No data"))==-1));
-        
+
         dd.alloc(0,1); #Allocated but nbOfElements==0!
         self.assertTrue(not ((dd.repr().find("Number of tuples : 0"))==-1));
         self.assertTrue(not ((dd.repr().find("Empty Data"))==-1));
@@ -1675,7 +1675,7 @@ class MEDCouplingBasicsTest2(unittest.TestCase):
         dd.iota(10); #?!...ok
         self.assertTrue(dd.isMonotonic(True, 1.));  #nothing is monotonic
         self.assertTrue(dd.isMonotonic(False, 1.));
-        
+
         self.assertRaises(InterpKernelException, db.copyStringInfoFrom, da);
         self.assertRaises(InterpKernelException, db.copyStringInfoFrom, da);
         cIds=[2,2]
@@ -1683,12 +1683,12 @@ class MEDCouplingBasicsTest2(unittest.TestCase):
         cIds[0]=1;
         cIds[0]=-1;
         self.assertRaises(InterpKernelException, da.copyPartOfStringInfoFrom, db, cIds);
-        
+
         info=["infoOfOneComponent"]*2;
         self.assertRaises(InterpKernelException, da.setInfoOnComponents, info);
         self.assertRaises(InterpKernelException, da.setInfoOnComponent, 1, info[0]);
         db.setInfoOnComponents(info);
-        
+
         self.assertRaises(InterpKernelException, da.getInfoOnComponent, -1);
         self.assertRaises(InterpKernelException, da.getInfoOnComponent, 2);
         self.assertTrue(db.getInfoOnComponent(1)==db.getInfoOnComponent(0));
@@ -1696,50 +1696,50 @@ class MEDCouplingBasicsTest2(unittest.TestCase):
         self.assertRaises(InterpKernelException, db.getVarOnComponent, 2);
         self.assertRaises(InterpKernelException, db.getUnitOnComponent, -1);
         self.assertRaises(InterpKernelException, db.getUnitOnComponent, 2);
-        
+
         self.assertTrue(da.GetVarNameFromInfo("varname unit ")=="varname unit ");
         self.assertTrue(da.GetVarNameFromInfo("varname]unit[")=="varname]unit[");
         self.assertTrue(da.GetVarNameFromInfo("[unit]")=="");
         self.assertTrue(da.GetVarNameFromInfo("varname [unit]")=="varname");
-        
+
         self.assertTrue(da.GetUnitFromInfo("varname unit ")=="");
         self.assertTrue(da.GetUnitFromInfo("varname]unit[")=="");
         self.assertTrue(da.GetUnitFromInfo("[unit]")=="unit");
         self.assertTrue(da.GetUnitFromInfo("varname [unit]")=="unit");
-        
+
         self.assertRaises(InterpKernelException, da.checkNbOfTuplesAndComp, db, "theMessageInThrow");
         self.assertRaises(InterpKernelException, da.checkNbOfTuplesAndComp, dc, "theMessageInThrow");
         self.assertRaises(InterpKernelException, db.checkNbOfTuplesAndComp, dc, "theMessageInThrow");
-        
+
         self.assertRaises(InterpKernelException, da.checkNbOfTuplesAndComp, 7, 2, "theMessageInThrow");
         da.checkNbOfTuplesAndComp(7,1,"theMessageInThrow");
-        
+
         self.assertRaises(InterpKernelException, db.checkNbOfElems, 7*2+1, "theMessageInThrow");
         db.checkNbOfElems(7*2,"theMessageInThrow");
-        
+
         self.assertRaises(InterpKernelException, db.GetNumberOfItemGivenBES, 10, 9, 1, "theMessageInThrow");
         self.assertRaises(InterpKernelException, db.GetNumberOfItemGivenBES, 0, 1, -1, "theMessageInThrow");
         self.assertEqual(10,db.GetNumberOfItemGivenBES(0,10,1,"theMessageInThrow"));
         self.assertEqual(5,db.GetNumberOfItemGivenBES(0,10,2,"theMessageInThrow"));
         self.assertEqual(6,db.GetNumberOfItemGivenBES(0,11,2,"theMessageInThrow"));
-        
+
         self.assertTrue(not ((da.repr().find("Number of components : 1"))==-1));
         self.assertTrue(not ((dd.repr().find("Number of components : 1"))==-1));
         self.assertTrue(not ((dbl.repr().find("Number of components : 1"))==-1));
-        
+
         self.assertTrue(not ((da.reprZip().find("Number of components : 1"))==-1));
         self.assertTrue(not ((dd.reprZip().find("Number of components : 1"))==-1));
         self.assertTrue(not ((dbl.reprZip().find("Number of components : 1"))==-1));
-        
+
         self.assertRaises(InterpKernelException, dbl.selectByTupleIdSafeSlice, 0, 1, -1);
         self.assertRaises(InterpKernelException, dbl.subArray, -1, 1);
         self.assertRaises(InterpKernelException, dbl.subArray, 8, 1);
         self.assertRaises(InterpKernelException, dbl.subArray, 0, 8);
         self.assertRaises(InterpKernelException, dbl.meldWith, dd);
-        
+
         self.assertRaises(InterpKernelException, dbl.setPartOfValuesAdv, dbl2, da); #dbl dbl2 not have the same number of components
         self.assertRaises(InterpKernelException, dbl.setPartOfValuesAdv, dd, da);  #da tuple selector DataArrayInt instance not have exactly 2 components
-        
+
         dbl3=DataArrayDouble.New();
         dbl3.alloc(6,2);
         dbl3.fillWithValue(11.);
@@ -1761,18 +1761,18 @@ class MEDCouplingBasicsTest2(unittest.TestCase):
         self.assertRaises(InterpKernelException, dbl3.inverse);
         self.assertRaises(InterpKernelException, dbl3.trace);
         self.assertRaises(InterpKernelException, dbl3.deviator);
-        
+
         dbl3.setIJ(5,1,12.);
         self.assertTrue(dbl3.getMaxValueInArray()==12.);
         self.assertTrue(dbl3.getMinValueInArray()==11.);
-        
+
         db.fillWithValue(100); #bad Ids
         self.assertRaises(InterpKernelException, dbl3.setPartOfValuesAdv, dbl2, db);
         db.fillWithValue(-1); #bad Ids
         self.assertRaises(InterpKernelException, dbl3.setPartOfValuesAdv, dbl2, db);
         db.fillWithValue(6); #bad Ids for dbl3
         self.assertRaises(InterpKernelException, dbl3.setPartOfValuesAdv, dbl2, db);
-        
+
         dbl3.checkNoNullValues();
         dbl3.setIJ(5,0,0.);
         self.assertRaises(InterpKernelException, dbl3.checkNoNullValues);
@@ -1781,12 +1781,12 @@ class MEDCouplingBasicsTest2(unittest.TestCase):
         a=[]
         self.assertRaises(InterpKernelException, DataArrayDouble_Aggregate, a);
         self.assertRaises(InterpKernelException, DataArrayDouble_Meld, a);
-        
+
         a=[dbl2,dbl]; #Nb of components mismatch
         self.assertRaises(InterpKernelException, DataArrayDouble_Aggregate, a);
-        
+
         self.assertRaises(InterpKernelException, DataArrayDouble_Dot, dbl2, dbl);
-        
+
         self.assertRaises(InterpKernelException, DataArrayDouble_CrossProduct, dbl2, dbl); #Nb of components mismatch
         self.assertRaises(InterpKernelException, DataArrayDouble_CrossProduct, dbl2, dbl2); #Nb of components must be equal to 3
         dbl4=DataArrayDouble.New();
@@ -1794,7 +1794,7 @@ class MEDCouplingBasicsTest2(unittest.TestCase):
         dbl5=DataArrayDouble.New();
         dbl5.alloc(7,3);
         self.assertRaises(InterpKernelException, DataArrayDouble_CrossProduct, dbl4, dbl5); #Nb of tuples mismatch
-        
+
         a[0]=dbl4; #Nb of tuple mismatch
         a[1]=dbl5; #Nb of tuple mismatch
         self.assertRaises(InterpKernelException, DataArrayDouble_Meld, a);
@@ -1840,7 +1840,7 @@ class MEDCouplingBasicsTest2(unittest.TestCase):
             self.assertAlmostEqual(expected1[i],da4.getIJ(0,i),14);
             pass
         pass
-    
+
     def testDAToNoInterlace1(self):
         tab1=[1,2,3,11,12,13,21,22,23,31,32,33,41,42,43]
         da=DataArrayInt.New();
@@ -1858,7 +1858,7 @@ class MEDCouplingBasicsTest2(unittest.TestCase):
             self.assertAlmostEqual(expected1[i],da4.getIJ(0,i),14);
             pass
         pass
-    
+
     def testDAIsUniform1(self):
         tab1=[1,1,1,1,1]
         da=DataArrayInt.New();
@@ -1888,7 +1888,7 @@ class MEDCouplingBasicsTest2(unittest.TestCase):
         da=DataArrayInt()  # non allocated array
         self.assertRaises(InterpKernelException, da.hasUniqueValues)
         pass
-    
+
     def testDADFromPolarToCart1(self):
         tab1=[2.,0.2,2.5,0.7]
         da=DataArrayDouble.New();
@@ -1899,7 +1899,7 @@ class MEDCouplingBasicsTest2(unittest.TestCase):
             self.assertAlmostEqual(expected1[i],da2.getIJ(0,i),13);
             pass
         pass
-    
+
     def testDADFromCylToCart1(self):
         tab1=[2.,0.2,4.,2.5,0.7,9.]
         da=DataArrayDouble.New();
@@ -1910,7 +1910,7 @@ class MEDCouplingBasicsTest2(unittest.TestCase):
             self.assertAlmostEqual(expected1[i],da2.getIJ(0,i),13);
             pass
         pass
-    
+
     def testDADFromSpherToCart1(self):
         tab1=[2.,0.2,0.3,2.5,0.7,0.8]
         da=DataArrayDouble.New();
@@ -1996,7 +1996,7 @@ class MEDCouplingBasicsTest2(unittest.TestCase):
           coo = DataArrayDouble([0.0]*10) # Just to have some. Values do not matter.
           mesh = MEDCouplingUMesh("m", 2)
           mesh.setCoords(coo)
-          
+
           # Linear
           c = [NORM_QUAD4, 0,1,0,2, NORM_TRI3, 0,1,1, NORM_TRI3, 0,1,2, NORM_QUAD4, 1,0,2,1, NORM_POLYGON, 1,0,1,1]
           cI = [0, 5, 9, 13, 18, 23]
@@ -2006,30 +2006,30 @@ class MEDCouplingBasicsTest2(unittest.TestCase):
           c, cI = mesh.getNodalConnectivity().getValues(), mesh.getNodalConnectivityIndex().getValues()
           self.assertEqual(c, [NORM_QUAD4, 0,1,0,2, NORM_POLYGON, 0,1, NORM_TRI3, 0,1,2, NORM_TRI3, 1,0,2, NORM_POLYGON, 1,0])
           self.assertEqual(cI, [0, 5, 8, 12, 16, 19])
-          
+
           res = mesh2.convertDegeneratedCellsAndRemoveFlatOnes()
           c, cI = mesh2.getNodalConnectivity().getValues(), mesh2.getNodalConnectivityIndex().getValues()
           self.assertEqual(c, [NORM_QUAD4, 0,1,0,2, NORM_TRI3, 0,1,2, NORM_TRI3, 1,0,2])
           self.assertEqual(cI, [0, 5, 9, 13])
           self.assertEqual(res.getValues(), [1,4])
-          
+
           # Quadratics now:
           c = [NORM_TRI6, 0,1,0, 2,3,0, NORM_QUAD8, 0,1,1,3,  4,1,6,7, NORM_QPOLYG, 0,1, NORM_QPOLYG, 0,1,2,2, NORM_TRI6, 0,1,2,  3,4,5]
           cI = [0, 7, 16, 19, 24, 31]
           mesh3.setConnectivity(DataArrayInt(c),DataArrayInt(cI))
-          
+
           mesh3.convertDegeneratedCells()
           c, cI = mesh3.getNodalConnectivity().getValues(), mesh3.getNodalConnectivityIndex().getValues()
           self.assertEqual(c, [NORM_QPOLYG, 0,1, 2,3, NORM_TRI6, 0,1,3,  4,6,7, NORM_QPOLYG, 0,1, NORM_QPOLYG, 0,1,2,2, NORM_TRI6, 0,1,2,  3,4,5])
           self.assertEqual(cI, [0, 5, 12, 15, 20, 27])
           mesh4 = mesh3.deepCopy()
-          
+
           res = mesh4.convertDegeneratedCellsAndRemoveFlatOnes()
           c, cI = mesh4.getNodalConnectivity().getValues(), mesh4.getNodalConnectivityIndex().getValues()
           self.assertEqual(c, [NORM_QPOLYG, 0,1, 2,3, NORM_TRI6, 0,1,3,  4,6,7, NORM_TRI6, 0,1,2,  3,4,5])
           self.assertEqual(cI, [0, 5, 12, 19])
           self.assertEqual(res.getValues(), [2,3])
-          
+
           pass
 
     def testGetNodeIdsNearPoints1(self):
@@ -3024,7 +3024,7 @@ class MEDCouplingBasicsTest2(unittest.TestCase):
         self.assertEqual(0,a.getIJ(1,0));
         self.assertEqual(4,a.getIJ(2,0));
         pass
-    
+
     def testSwigErrorDaIntSelectByTupleId1(self):
         a=DataArrayInt.New();
         arr1=[1,11,2,12,3,13,4,14,5,15,6,16,7,17]
@@ -3060,7 +3060,7 @@ class MEDCouplingBasicsTest2(unittest.TestCase):
         da.renumberInPlace(d)
         da.renumber(d)
         pass
-      
+
     pass
 
 if __name__ == '__main__':
index 034c288a625bed3900a99350e63abd18a3334bfb..94ec01b7330aaee17f41549ed1769d0db4ce0a26 100644 (file)
@@ -1,5 +1,5 @@
 #  -*- coding: utf-8 -*-
-# Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+# Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -22,7 +22,7 @@ import sys
 if sys.platform == "win32":
     from MEDCouplingCompat import *
 else:
-    from MEDCoupling import *
+    from medcoupling import *
 import unittest
 from math import pi,e,sqrt,cos,sin
 from datetime import datetime
@@ -1971,14 +1971,14 @@ class MEDCouplingBasicsTest3(unittest.TestCase):
         res = d.normMaxPerComponent()
         self.assertAlmostEqual(-1.0, res[0],14)
         self.assertAlmostEqual(-1.0, res[1],14)
-        
+
         tab=[2.3,-1.2,6.3,-7.8,2.9,7.7,2.1,0.,3.6,-7.6]
         d.setValues(tab,5,2);
-        
+
         res = d.normMaxPerComponent()
         self.assertAlmostEqual(6.3, res[0],14)
         self.assertAlmostEqual(7.8, res[1],14)
-        
+
         f.setArray(d);
         f.checkConsistencyLight();
         #
@@ -1988,7 +1988,7 @@ class MEDCouplingBasicsTest3(unittest.TestCase):
         #
         self.assertAlmostEqual(6.3,f.normMax(0),14);
         self.assertAlmostEqual(7.8,f.normMax(1),14);
-        
+
         pass
 
     def testFindAndCorrectBadOriented3DExtrudedCells1(self):
index d72103bf56cb541c55aae39dea872a72835f191d..3bca65eeba86a804964cc5f63323d4232a3679e4 100644 (file)
@@ -1,5 +1,5 @@
 #  -*- coding: utf-8 -*-
-# Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+# Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -23,7 +23,7 @@ import sys
 if sys.platform == "win32":
     from MEDCouplingCompat import *
 else:
-    from MEDCoupling import *
+    from medcoupling import *
 import unittest
 from math import pi,e,sqrt,cos,sin
 from datetime import datetime
@@ -49,7 +49,7 @@ def checkFreeMemory(size):
             dic['free'] = tmp
             dic['used'] = int(dic['total']) - int(dic['free'])
             ret = dic['free'] > size
-    #TODO: extend this method for Windows OS            
+    #TODO: extend this method for Windows OS
     return ret
 
 
@@ -565,7 +565,7 @@ class MEDCouplingBasicsTest4(unittest.TestCase):
             pass
         #
         pass
-    
+
     def testComputeNeighborsOfCells1(self):
         m=MEDCouplingDataForTest.build2DTargetMesh_1();
         d1,d2=m.computeNeighborsOfCells();
@@ -671,7 +671,7 @@ class MEDCouplingBasicsTest4(unittest.TestCase):
         self.assertTrue(subMesh.isEqual(m5,1e-12))
         self.assertRaises(InterpKernelException,m.buildPartOfMySelf,[1,5],True);
         pass
-    
+
     def testSwigGetItem3(self):
         da=DataArrayInt.New([4,5,6])
         self.assertEqual(5,da[1])
@@ -926,14 +926,14 @@ class MEDCouplingBasicsTest4(unittest.TestCase):
         d-=2
         d%=7
         pass
-        
+
     def testSwigDAIOp5(self):
         d=DataArrayInt.New([4,5,6,10,3,-1],2,3)
         self.toSeeIfDaIIopsAreOK(d)
         dExp=DataArrayInt.New([2,4,6,0,0,6],2,3)
         self.assertTrue(d.isEqual(dExp));
         pass
-    
+
     def toSeeIfDaDIopsAreOK(self,d):
         d+=5
         d*=6
@@ -1044,7 +1044,7 @@ class MEDCouplingBasicsTest4(unittest.TestCase):
             self.assertAlmostEqual(expected4[i],ard2.getIJ(i,0),12)
             pass
         pass
-    
+
     def testPartitionBySpreadZone1(self):
         m=MEDCouplingDataForTest.build2DTargetMesh_1();
         m4=MEDCouplingUMesh.MergeUMeshes([m,m[-3:],m[0:2]]);
@@ -1862,7 +1862,7 @@ class MEDCouplingBasicsTest4(unittest.TestCase):
         #
         m0=MEDCouplingUMesh("m",3) ; m0.allocateCells(0); m0.insertNextCell(NORM_TETRA4,[0,1,2,3]); #Well oriented
         m1=MEDCouplingUMesh("m",3) ; m1.allocateCells(0); m1.insertNextCell(NORM_PYRA5,[0,1,2,3,4]); #Well oriented
-        m2=MEDCouplingUMesh("m",3) ; m2.allocateCells(0); m2.insertNextCell(NORM_PENTA6,[0,1,2,3,4,5]); #Well oriented 
+        m2=MEDCouplingUMesh("m",3) ; m2.allocateCells(0); m2.insertNextCell(NORM_PENTA6,[0,1,2,3,4,5]); #Well oriented
         m3=MEDCouplingUMesh("m",3) ; m3.allocateCells(0); m3.insertNextCell(NORM_HEXA8,[0,1,2,3,4,5,6,7]); #Well oriented
         m4=MEDCouplingUMesh("m",3) ; m4.allocateCells(0)
         self.assertRaises(InterpKernelException,m4.insertNextCell,NORM_HEXGP12,[0,1,2,3,4,5,6,7,8,9,10,11,12]);
@@ -1890,8 +1890,8 @@ class MEDCouplingBasicsTest4(unittest.TestCase):
         #
         mOK=m.deepCopy()
         m0=MEDCouplingUMesh("m",3) ; m0.allocateCells(0); m0.insertNextCell(NORM_TETRA4,[0,2,1,3]); #Not well oriented
-        m1=MEDCouplingUMesh("m",3) ; m1.allocateCells(0); m1.insertNextCell(NORM_PYRA5,[0,1,2,3,4]); #Well oriented 
-        m2=MEDCouplingUMesh("m",3) ; m2.allocateCells(0); m2.insertNextCell(NORM_PENTA6,[0,1,2,3,4,5]); #Well oriented 
+        m1=MEDCouplingUMesh("m",3) ; m1.allocateCells(0); m1.insertNextCell(NORM_PYRA5,[0,1,2,3,4]); #Well oriented
+        m2=MEDCouplingUMesh("m",3) ; m2.allocateCells(0); m2.insertNextCell(NORM_PENTA6,[0,1,2,3,4,5]); #Well oriented
         m3=MEDCouplingUMesh("m",3) ; m3.allocateCells(0); m3.insertNextCell(NORM_HEXA8,[0,3,2,1,4,7,6,5]); #Not well oriented
         m4=MEDCouplingUMesh("m",3) ; m4.allocateCells(0); m4.insertNextCell(NORM_HEXGP12,[0,5,4,3,2,1,6,11,10,9,8,7]); #Not well oriented
         m0.setCoords(c0) ; m1.setCoords(c1) ; m2.setCoords(c2) ; m3.setCoords(c3) ; m4.setCoords(c4)
@@ -1916,8 +1916,8 @@ class MEDCouplingBasicsTest4(unittest.TestCase):
             pass
         #
         m0=MEDCouplingUMesh("m",3) ; m0.allocateCells(0); m0.insertNextCell(NORM_TETRA4,[0,1,2,3]); #Well oriented
-        m1=MEDCouplingUMesh("m",3) ; m1.allocateCells(0); m1.insertNextCell(NORM_PYRA5,[0,3,2,1,4]); #Not well oriented 
-        m2=MEDCouplingUMesh("m",3) ; m2.allocateCells(0); m2.insertNextCell(NORM_PENTA6,[0,2,1,3,5,4]); #Not well oriented 
+        m1=MEDCouplingUMesh("m",3) ; m1.allocateCells(0); m1.insertNextCell(NORM_PYRA5,[0,3,2,1,4]); #Not well oriented
+        m2=MEDCouplingUMesh("m",3) ; m2.allocateCells(0); m2.insertNextCell(NORM_PENTA6,[0,2,1,3,5,4]); #Not well oriented
         m3=MEDCouplingUMesh("m",3) ; m3.allocateCells(0); m3.insertNextCell(NORM_HEXA8,[0,1,2,3,4,5,6,7]); #Well oriented
         m4 = MEDCouplingUMesh("m", 3) ; m4.allocateCells(0); m4.insertNextCell(NORM_HEXGP12, list(range(12)));  # Well oriented
         m0.setCoords(c0) ; m1.setCoords(c1) ; m2.setCoords(c2) ; m3.setCoords(c3) ; m4.setCoords(c4)
@@ -2272,7 +2272,7 @@ class MEDCouplingBasicsTest4(unittest.TestCase):
         pass
 
     def testSwigSetItem3(self):
-        # 1-2 
+        # 1-2
         d=DataArrayDouble([0,0,0,0,0,0,0,0,0,0,0,0],6,2)
         d[3]=[1,2]
         self.assertTrue(d.isEqual(DataArrayDouble([0,0,0,0,0,0,1,2,0,0,0,0],6,2),1e-14))
@@ -2332,7 +2332,7 @@ class MEDCouplingBasicsTest4(unittest.TestCase):
         d=DataArrayDouble([0,0,0,0,0,0,0,0,0,0,0,0],6,2)
         d[1::2,:]=[3,9]
         self.assertTrue(d.isEqual(DataArrayDouble([0,0,3,9,0,0,3,9,0,0,3,9],6,2),1e-14))
-        # 1-2 
+        # 1-2
         d=DataArrayInt([0,0,0,0,0,0,0,0,0,0,0,0],6,2)
         d[3]=[1,2]
         self.assertTrue(d.isEqual(DataArrayInt([0,0,0,0,0,0,1,2,0,0,0,0],6,2)))
@@ -2889,7 +2889,7 @@ class MEDCouplingBasicsTest4(unittest.TestCase):
         d4**=d3
         self.assertTrue(d4.isEqual(DataArrayDouble([1.,sqrt(2.),1.4422495703074083,sqrt(2.)]),1e-14))
         pass
-    
+
     def testSwig2Baryenter3DForCellsWithVolumeZero1(self):
         coo=DataArrayDouble([0.,0.,0.,1.,0.,0.,0.,1.,0.],3,3)
         m2=MEDCouplingUMesh("mesh",2)
@@ -2970,7 +2970,7 @@ class MEDCouplingBasicsTest4(unittest.TestCase):
         d.alloc(1000,3) ; d.fillWithValue(127)
         self.assertTrue(len(d.__repr__())<500)
         pass
-    
+
     def testSwig2MeshComputeIsoBarycenterOfNodesPerCell1(self):
         coo=DataArrayDouble([26.17509821414239,5.0374,200.,26.175098214142388,-5.0374,200.,17.450065476094927,20.1496,200.,8.725032738047464,25.187,200.,43.62516369023732,5.0374,200.,34.90013095218986,10.0748,200.,34.900130952189855,-10.0748,200.,43.625163690237315,-5.0374,200.,26.175098214142402,25.187,200.,26.175098214142395,35.2618,200.,17.45006547609493,40.2992,200.,8.725032738047469,35.2618,200.,26.17509821414239,5.0374,200.,26.175098214142388,-5.0374,200.,17.450065476094927,20.1496,200.,8.725032738047464,25.187,200.,43.62516369023732,5.0374,200.,34.90013095218986,10.0748,200.,34.900130952189855,-10.0748,200.,43.625163690237315,-5.0374,200.,26.175098214142402,25.187,200.,26.175098214142395,35.2618,200.,17.45006547609493,40.2992,200.,8.725032738047469,35.2618,200.],24,3)
         m=MEDCouplingUMesh.New("toto",3)
@@ -3043,7 +3043,7 @@ class MEDCouplingBasicsTest4(unittest.TestCase):
         self.assertTrue(d.isEqual(DataArrayInt([0,0,0,0,0,0])))
         self.assertTrue(e.isEqual(DataArrayInt([0,1,2,3,4,5,6])))
         pass
-    
+
     def testSwigAdvGauss(self):
         f=MEDCouplingFieldTemplate(ON_GAUSS_PT)
         f.setDiscretization(None)
index 28cfa11de0e30924369ecbd273a9ef8f4f36054e..f8cb7ca8ffbfb3057ab4ea399687b99a6c2f1a6c 100644 (file)
@@ -1,5 +1,5 @@
 #  -*- coding: utf-8 -*-
-# Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+# Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -22,7 +22,7 @@ import sys
 if sys.platform == "win32":
     from MEDCouplingCompat import *
 else:
-    from MEDCoupling import *
+    from medcoupling import *
 
 import unittest
 from math import pi,e,sqrt,cos,sin
index 6c48d9b45bea850a551a13e180e51a20078b4443..d82a7aa1035bdabb594ec824ac5400f94afe573e 100644 (file)
@@ -1,5 +1,5 @@
 #  -*- coding: utf-8 -*-
-# Copyright (C) 2017  CEA/DEN, EDF R&D
+# Copyright (C) 2017-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -23,7 +23,7 @@ import sys
 if sys.platform == "win32":
     from MEDCouplingCompat import *
 else:
-    from MEDCoupling import *
+    from medcoupling import *
 import unittest
 from math import pi,e,sqrt,cos,sin
 from datetime import datetime
@@ -194,7 +194,7 @@ class MEDCouplingBasicsTest6(unittest.TestCase):
         a1.rearrange(3)
         self.assertRaises(InterpKernelException,a1.findIdForEach,b1) # a1 is not single component
         pass
-    
+
     def testAttractSeg3MidPtsAroundNodes1(self):
         """ Test of MEDCouplingUMesh.attractSeg3MidPtsAroundNodes methods """
         ptsExpToBeModified=DataArrayInt([95,96,97,98,101,103,104,106,108,110])
@@ -272,7 +272,7 @@ class MEDCouplingBasicsTest6(unittest.TestCase):
         arrOfDisc=fGauss.getLocalizationOfDiscr()
         self.assertTrue(arrOfDisc.isEqual(DataArrayDouble([0.2,0.2,0.2,0.5,0.5,0.5,0.9,0.9,0.9],3,3),1e-12))
         pass
-    
+
     def testUMeshGetCellsContainingPtOn2DNonDynQuadraticCells(self):
         """getCellsContainingPoint is now dealing curves of quadratic 2D elements.
 This test is a mesh containing 2 QUAD8 cells. The input point is located at a special loc.
@@ -325,6 +325,77 @@ If true geometry (with curve as edges) is considered the result of getCellsConta
         self.assertTrue(m.getNodalConnectivityIndex().isEqual(expConnI))
         pass
 
+    def testMergeFieldsOnGauss1(self):
+        mName="mesh"
+        fieldName="field"
+        #
+        _a=0.446948490915965;
+        _b=0.091576213509771;
+        _p1=0.11169079483905;
+        _p2=0.0549758718227661;
+        refCoo1=[ 0.,0., 1.,0., 0.,1. ]
+        gsCoo1=[ 2*_b-1, 1-4*_b, 2*_b-1, 2.07*_b-1, 1-4*_b,
+                 2*_b-1, 1-4*_a, 2*_a-1, 2*_a-1, 1-4*_a, 2*_a-1, 2*_a-1 ]
+        wg1=[ 4*_p2, 4*_p2, 4*_p2, 4*_p1, 4*_p1, 4*_p1 ]
+        #
+        refCoo2=[ -1.,-1., 1.,-1., 1.,1., -1.,1. ]
+        gsCoo2=[0.1,0.1, 0.2,0.2, 0.5,0.5, 0.6,0.6, 0.7,0.7]
+        wg2=[0.1,0.2,0.3,0.4,0.5]
+        #
+        coo=DataArrayDouble([0,0,1,0,2,0,0,1,1,1,2,1,0,2,1,2,2,2],9,2)
+        m1=MEDCouplingUMesh(mName,2)
+        m1.allocateCells() ; m1.setCoords(coo)
+        m1.insertNextCell(NORM_TRI3,[1,4,2])
+        m1.insertNextCell(NORM_TRI3,[4,5,2])
+        m1.insertNextCell(NORM_QUAD4,[4,7,8,5])
+        f1=MEDCouplingFieldDouble(ON_GAUSS_PT) ; f1.setName(fieldName)
+        f1.setMesh(m1)
+        f1.setGaussLocalizationOnType(NORM_TRI3,refCoo1,gsCoo1,wg1)
+        f1.setGaussLocalizationOnType(NORM_QUAD4,refCoo2,gsCoo2,wg2)
+        arr=DataArrayDouble(f1.getNumberOfTuplesExpected())
+        arr.iota()
+        f1.setArray(arr)
+        f1.checkConsistencyLight()
+        #
+        m2=MEDCouplingUMesh(mName,2)
+        m2.allocateCells() ; m2.setCoords(coo)
+        m2.insertNextCell(NORM_QUAD4,[0,3,4,1])
+        m2.insertNextCell(NORM_QUAD4,[3,6,7,4])
+        ###################
+        self.assertTrue(f1.getMesh().getCoords().isEqual(m2.getCoords(),1e-12))
+        f1.getMesh().setCoords(m2.getCoords())
+        #
+        f2=MEDCouplingFieldDouble(ON_GAUSS_PT)
+        f2.setMesh(m2)
+        for gt in m2.getAllGeoTypes(): # on recopie les localisation en utilisant f1
+            glt=f1.getGaussLocalizationIdOfOneType(gt)
+            gloc=f1.getGaussLocalization(glt)
+            f2.setGaussLocalizationOnType(gt,gloc.getRefCoords(),gloc.getGaussCoords(),gloc.getWeights())
+        arr2=DataArrayDouble(f2.getNumberOfTuplesExpected())
+        arr2[:]=0
+        f2.setArray(arr2)
+        f2.checkConsistencyLight()
+        #
+        fout1=MEDCouplingFieldDouble.MergeFields([f1,f2])
+        fout2=MEDCouplingFieldDouble.MergeFields(f1,f2)
+        #
+        fOut=MEDCouplingFieldDouble(ON_GAUSS_PT)
+        mOut=MEDCouplingUMesh.MergeUMeshes([f1.getMesh(),m2])
+        mOut.setName(f1.getMesh().getName())
+        fOut.setMesh(mOut)
+        for gt in f1.getMesh().getAllGeoTypes(): # on recopie les localisation en utilisant f1
+            glt=f1.getGaussLocalizationIdOfOneType(gt)
+            gloc=f1.getGaussLocalization(glt)
+            fOut.setGaussLocalizationOnType(gt,gloc.getRefCoords(),gloc.getGaussCoords(),gloc.getWeights())
+        fOut.setArray(DataArrayDouble.Aggregate([f1.getArray(),arr2]))
+        fOut.checkConsistencyLight()
+        fOut.setName(f1.getName())
+        fOut.getMesh().setName(f1.getMesh().getName())
+        #
+        self.assertTrue(fout1.isEqual(fOut,1e-12,1e-12))
+        self.assertTrue(fout2.isEqual(fOut,1e-12,1e-12))
+        pass
+
     pass
 
 if __name__ == '__main__':
index 305c5e3ec646d2191adbb343447164ee2c2b3027..dbe258008f430a3185f773d48cf9ff9a5daf9964 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2017  CEA/DEN, EDF R&D
+// Copyright (C) 2017-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -486,6 +486,9 @@ using namespace INTERP_KERNEL;
 
 %nodefaultctor;
 
+// ABN: Instruct SWIG that INTERP_KERNEL::Exception is an exception class and that it should inherit Exception
+// on the Python side. Must be put BEFORE the %rename clause:
+%exceptionclass INTERP_KERNEL::Exception;
 %rename (InterpKernelException) INTERP_KERNEL::Exception;
 
 %include "MEDCouplingRefCountObject.i"
@@ -513,22 +516,22 @@ namespace INTERP_KERNEL
   {
   public:
     BoxSplittingOptions();
-    void init() throw(INTERP_KERNEL::Exception);
-    double getEfficiencyGoal() const throw(INTERP_KERNEL::Exception);
-    void setEfficiencyGoal(double efficiency) throw(INTERP_KERNEL::Exception);
-    double getEfficiencyThreshold() const throw(INTERP_KERNEL::Exception);
-    void setEfficiencyThreshold(double efficiencyThreshold) throw(INTERP_KERNEL::Exception);
-    int getMinimumPatchLength() const throw(INTERP_KERNEL::Exception);
-    void setMinimumPatchLength(int minPatchLength) throw(INTERP_KERNEL::Exception);
-    int getMaximumPatchLength() const throw(INTERP_KERNEL::Exception);
-    void setMaximumPatchLength(int maxPatchLength) throw(INTERP_KERNEL::Exception);
-    int getMaximumNbOfCellsInPatch() const throw(INTERP_KERNEL::Exception);
-    void setMaximumNbOfCellsInPatch(int maxNbCellsInPatch) throw(INTERP_KERNEL::Exception);
-    void copyOptions(const BoxSplittingOptions & other) throw(INTERP_KERNEL::Exception);
-    std::string printOptions() const throw(INTERP_KERNEL::Exception);
+    void init();
+    double getEfficiencyGoal() const;
+    void setEfficiencyGoal(double efficiency);
+    double getEfficiencyThreshold() const;
+    void setEfficiencyThreshold(double efficiencyThreshold);
+    int getMinimumPatchLength() const;
+    void setMinimumPatchLength(int minPatchLength);
+    int getMaximumPatchLength() const;
+    void setMaximumPatchLength(int maxPatchLength);
+    int getMaximumNbOfCellsInPatch() const;
+    void setMaximumNbOfCellsInPatch(int maxNbCellsInPatch);
+    void copyOptions(const BoxSplittingOptions & other);
+    std::string printOptions() const;
     %extend
     {
-      std::string __str__() const throw(INTERP_KERNEL::Exception)
+      std::string __str__() const
       {
         return self->printOptions();
       }
@@ -583,12 +586,12 @@ namespace MEDCoupling
 
   %extend MEDCouplingGaussLocalization
   {
-    std::string __str__() const throw(INTERP_KERNEL::Exception)
+    std::string __str__() const
     {
       return self->getStringRepr();
     }
 
-    std::string __repr__() const throw(INTERP_KERNEL::Exception)
+    std::string __repr__() const
     {
       std::ostringstream oss; oss << "MEDCouplingGaussLocalization C++ instance at " << self << "." << std::endl;
       oss << self->getStringRepr();
@@ -608,63 +611,63 @@ namespace MEDCoupling
     void setTime(double val, int iteration, int order);
     void setTimeUnit(const std::string& unit);
     std::string getTimeUnit() const;
-    virtual MEDCouplingMeshType getType() const throw(INTERP_KERNEL::Exception);
-    bool isStructured() const throw(INTERP_KERNEL::Exception);
-    virtual MEDCouplingMesh *deepCopy() const throw(INTERP_KERNEL::Exception);
-    virtual MEDCouplingMesh *clone(bool recDeepCpy) const throw(INTERP_KERNEL::Exception);
-    virtual bool isEqual(const MEDCouplingMesh *other, double prec) const throw(INTERP_KERNEL::Exception);
-    virtual bool isEqualWithoutConsideringStr(const MEDCouplingMesh *other, double prec) const throw(INTERP_KERNEL::Exception);
-    virtual void checkFastEquivalWith(const MEDCouplingMesh *other, double prec) const throw(INTERP_KERNEL::Exception);
-    virtual void copyTinyStringsFrom(const MEDCouplingMesh *other) throw(INTERP_KERNEL::Exception);
-    virtual void copyTinyInfoFrom(const MEDCouplingMesh *other) throw(INTERP_KERNEL::Exception);
-    virtual void checkConsistencyLight() const throw(INTERP_KERNEL::Exception);
-    virtual void checkConsistency(double eps=1e-12) const throw(INTERP_KERNEL::Exception);
-    virtual int getNumberOfCells() const throw(INTERP_KERNEL::Exception);
-    virtual int getNumberOfNodes() const throw(INTERP_KERNEL::Exception);
-    virtual int getSpaceDimension() const throw(INTERP_KERNEL::Exception);
-    virtual int getMeshDimension() const throw(INTERP_KERNEL::Exception);
-    virtual DataArrayDouble *getCoordinatesAndOwner() const throw(INTERP_KERNEL::Exception);
-    virtual DataArrayDouble *computeCellCenterOfMass() const throw(INTERP_KERNEL::Exception);
-    virtual DataArrayDouble *computeIsoBarycenterOfNodesPerCell() const throw(INTERP_KERNEL::Exception);
-    virtual DataArrayInt *giveCellsWithType(INTERP_KERNEL::NormalizedCellType type) const throw(INTERP_KERNEL::Exception);
-    virtual DataArrayInt *computeNbOfNodesPerCell() const throw(INTERP_KERNEL::Exception);
-    virtual DataArrayInt *computeNbOfFacesPerCell() const throw(INTERP_KERNEL::Exception);
-    virtual DataArrayInt *computeEffectiveNbOfNodesPerCell() const throw(INTERP_KERNEL::Exception);
-    virtual MEDCouplingMesh *buildPartRange(int beginCellIds, int endCellIds, int stepCellIds) const throw(INTERP_KERNEL::Exception);
-    virtual int getNumberOfCellsWithType(INTERP_KERNEL::NormalizedCellType type) const throw(INTERP_KERNEL::Exception);
-    virtual INTERP_KERNEL::NormalizedCellType getTypeOfCell(int cellId) const throw(INTERP_KERNEL::Exception);
-    virtual std::string simpleRepr() const throw(INTERP_KERNEL::Exception);
-    virtual std::string advancedRepr() const throw(INTERP_KERNEL::Exception);
-    std::string writeVTK(const std::string& fileName, bool isBinary=true) const throw(INTERP_KERNEL::Exception);
+    virtual MEDCouplingMeshType getType() const;
+    bool isStructured() const;
+    virtual MEDCouplingMesh *deepCopy() const;
+    virtual MEDCouplingMesh *clone(bool recDeepCpy) const;
+    virtual bool isEqual(const MEDCouplingMesh *other, double prec) const;
+    virtual bool isEqualWithoutConsideringStr(const MEDCouplingMesh *other, double prec) const;
+    virtual void checkFastEquivalWith(const MEDCouplingMesh *other, double prec) const;
+    virtual void copyTinyStringsFrom(const MEDCouplingMesh *other);
+    virtual void copyTinyInfoFrom(const MEDCouplingMesh *other);
+    virtual void checkConsistencyLight() const;
+    virtual void checkConsistency(double eps=1e-12) const;
+    virtual int getNumberOfCells() const;
+    virtual int getNumberOfNodes() const;
+    virtual int getSpaceDimension() const;
+    virtual int getMeshDimension() const;
+    virtual DataArrayDouble *getCoordinatesAndOwner() const;
+    virtual DataArrayDouble *computeCellCenterOfMass() const;
+    virtual DataArrayDouble *computeIsoBarycenterOfNodesPerCell() const;
+    virtual DataArrayInt *giveCellsWithType(INTERP_KERNEL::NormalizedCellType type) const;
+    virtual DataArrayInt *computeNbOfNodesPerCell() const;
+    virtual DataArrayInt *computeNbOfFacesPerCell() const;
+    virtual DataArrayInt *computeEffectiveNbOfNodesPerCell() const;
+    virtual MEDCouplingMesh *buildPartRange(int beginCellIds, int endCellIds, int stepCellIds) const;
+    virtual int getNumberOfCellsWithType(INTERP_KERNEL::NormalizedCellType type) const;
+    virtual INTERP_KERNEL::NormalizedCellType getTypeOfCell(int cellId) const;
+    virtual std::string simpleRepr() const;
+    virtual std::string advancedRepr() const;
+    std::string writeVTK(const std::string& fileName, bool isBinary=true) const;
     virtual std::string getVTKFileExtension() const;
     std::string getVTKFileNameOf(const std::string& fileName) const;
     // tools
-    virtual MEDCouplingFieldDouble *getMeasureField(bool isAbs) const throw(INTERP_KERNEL::Exception);
-    virtual MEDCouplingFieldDouble *getMeasureFieldOnNode(bool isAbs) const throw(INTERP_KERNEL::Exception);
-    virtual MEDCouplingFieldDouble *fillFromAnalytic(TypeOfField t, int nbOfComp, const std::string& func) const throw(INTERP_KERNEL::Exception);
-    virtual MEDCouplingFieldDouble *fillFromAnalyticCompo(TypeOfField t, int nbOfComp, const std::string& func) const throw(INTERP_KERNEL::Exception);
-    virtual MEDCouplingFieldDouble *fillFromAnalyticNamedCompo(TypeOfField t, int nbOfComp, const std::vector<std::string>& varsOrder, const std::string& func) const throw(INTERP_KERNEL::Exception);
-    virtual MEDCouplingFieldDouble *buildOrthogonalField() const throw(INTERP_KERNEL::Exception);
-    virtual MEDCouplingUMesh *buildUnstructured() const throw(INTERP_KERNEL::Exception);
-    virtual MEDCouplingMesh *mergeMyselfWith(const MEDCouplingMesh *other) const throw(INTERP_KERNEL::Exception);
-    virtual bool areCompatibleForMerge(const MEDCouplingMesh *other) const throw(INTERP_KERNEL::Exception);
-    virtual DataArrayInt *simplexize(int policy) throw(INTERP_KERNEL::Exception);
-    virtual void unserialization(const std::vector<double>& tinyInfoD, const std::vector<int>& tinyInfo, const DataArrayInt *a1, DataArrayDouble *a2, const std::vector<std::string>& littleStrings) throw(INTERP_KERNEL::Exception);
-    static MEDCouplingMesh *MergeMeshes(const MEDCouplingMesh *mesh1, const MEDCouplingMesh *mesh2) throw(INTERP_KERNEL::Exception);
-    static bool IsStaticGeometricType(INTERP_KERNEL::NormalizedCellType type) throw(INTERP_KERNEL::Exception);
-    static bool IsLinearGeometricType(INTERP_KERNEL::NormalizedCellType type) throw(INTERP_KERNEL::Exception);
-    static INTERP_KERNEL::NormalizedCellType GetCorrespondingPolyType(INTERP_KERNEL::NormalizedCellType type) throw(INTERP_KERNEL::Exception);
-    static int GetNumberOfNodesOfGeometricType(INTERP_KERNEL::NormalizedCellType type) throw(INTERP_KERNEL::Exception);
-    static int GetDimensionOfGeometricType(INTERP_KERNEL::NormalizedCellType type) throw(INTERP_KERNEL::Exception);
-    static const char *GetReprOfGeometricType(INTERP_KERNEL::NormalizedCellType type) throw(INTERP_KERNEL::Exception);
+    virtual MEDCouplingFieldDouble *getMeasureField(bool isAbs) const;
+    virtual MEDCouplingFieldDouble *getMeasureFieldOnNode(bool isAbs) const;
+    virtual MEDCouplingFieldDouble *fillFromAnalytic(TypeOfField t, int nbOfComp, const std::string& func) const;
+    virtual MEDCouplingFieldDouble *fillFromAnalyticCompo(TypeOfField t, int nbOfComp, const std::string& func) const;
+    virtual MEDCouplingFieldDouble *fillFromAnalyticNamedCompo(TypeOfField t, int nbOfComp, const std::vector<std::string>& varsOrder, const std::string& func) const;
+    virtual MEDCouplingFieldDouble *buildOrthogonalField() const;
+    virtual MEDCouplingUMesh *buildUnstructured() const;
+    virtual MEDCouplingMesh *mergeMyselfWith(const MEDCouplingMesh *other) const;
+    virtual bool areCompatibleForMerge(const MEDCouplingMesh *other) const;
+    virtual DataArrayInt *simplexize(int policy);
+    virtual void unserialization(const std::vector<double>& tinyInfoD, const std::vector<int>& tinyInfo, const DataArrayInt *a1, DataArrayDouble *a2, const std::vector<std::string>& littleStrings);
+    static MEDCouplingMesh *MergeMeshes(const MEDCouplingMesh *mesh1, const MEDCouplingMesh *mesh2);
+    static bool IsStaticGeometricType(INTERP_KERNEL::NormalizedCellType type);
+    static bool IsLinearGeometricType(INTERP_KERNEL::NormalizedCellType type);
+    static INTERP_KERNEL::NormalizedCellType GetCorrespondingPolyType(INTERP_KERNEL::NormalizedCellType type);
+    static int GetNumberOfNodesOfGeometricType(INTERP_KERNEL::NormalizedCellType type);
+    static int GetDimensionOfGeometricType(INTERP_KERNEL::NormalizedCellType type);
+    static const char *GetReprOfGeometricType(INTERP_KERNEL::NormalizedCellType type);
     %extend
        {
-         std::string __str__() const throw(INTERP_KERNEL::Exception)
+         std::string __str__() const
          {
            return self->simpleRepr();
          }
 
-         PyObject *getTime() throw(INTERP_KERNEL::Exception)
+         PyObject *getTime()
          {
            int tmp1,tmp2;
            double tmp0=self->getTime(tmp1,tmp2);
@@ -675,7 +678,7 @@ namespace MEDCoupling
            return res;
          }
 
-         DataArrayDouble *getDirectAccessOfCoordsArrIfInStructure() const throw(INTERP_KERNEL::Exception)
+         DataArrayDouble *getDirectAccessOfCoordsArrIfInStructure() const
          {
            const DataArrayDouble *ret(self->getDirectAccessOfCoordsArrIfInStructure());
            DataArrayDouble *ret2(const_cast<DataArrayDouble *>(ret));
@@ -684,7 +687,7 @@ namespace MEDCoupling
            return ret2;
          }
          
-         int getCellContainingPoint(PyObject *p, double eps) const throw(INTERP_KERNEL::Exception)
+         int getCellContainingPoint(PyObject *p, double eps) const
          {
            double val;
            DataArrayDouble *a;
@@ -697,7 +700,7 @@ namespace MEDCoupling
            return self->getCellContainingPoint(pos,eps);
          }
 
-         PyObject *getCellsContainingPoints(PyObject *p, int nbOfPoints, double eps) const throw(INTERP_KERNEL::Exception)
+         PyObject *getCellsContainingPoints(PyObject *p, int nbOfPoints, double eps) const
          {
            double val;
            DataArrayDouble *a;
@@ -715,7 +718,7 @@ namespace MEDCoupling
            return ret;
          }
 
-         PyObject *getCellsContainingPointsLinearPartOnlyOnNonDynType(PyObject *p, int nbOfPoints, double eps) const throw(INTERP_KERNEL::Exception)
+         PyObject *getCellsContainingPointsLinearPartOnlyOnNonDynType(PyObject *p, int nbOfPoints, double eps) const
          {
            double val;
            DataArrayDouble *a;
@@ -733,19 +736,19 @@ namespace MEDCoupling
            return ret;
          }
 
-         PyObject *getCellsContainingPoints(PyObject *p, double eps) const throw(INTERP_KERNEL::Exception)
+         PyObject *getCellsContainingPoints(PyObject *p, double eps) const
          {
            auto getCellsContainingPointsFunc=[self](const double *a, int b,double c, MCAuto<DataArrayInt>& d, MCAuto<DataArrayInt>& e) { self->getCellsContainingPoints(a,b,c,d,e); };
            return Mesh_getCellsContainingPointsLike(p,eps,self,getCellsContainingPointsFunc);
          }
 
-         PyObject *getCellsContainingPointsLinearPartOnlyOnNonDynType(PyObject *p, double eps) const throw(INTERP_KERNEL::Exception)
+         PyObject *getCellsContainingPointsLinearPartOnlyOnNonDynType(PyObject *p, double eps) const
          {
            auto getCellsContainingPointsFunc=[self](const double *a, int b,double c, MCAuto<DataArrayInt>& d, MCAuto<DataArrayInt>& e) { self->getCellsContainingPointsLinearPartOnlyOnNonDynType(a,b,c,d,e); };
            return Mesh_getCellsContainingPointsLike(p,eps,self,getCellsContainingPointsFunc);
          }
          
-         PyObject *getCellsContainingPoint(PyObject *p, double eps) const throw(INTERP_KERNEL::Exception)
+         PyObject *getCellsContainingPoint(PyObject *p, double eps) const
          {
            double val;
            DataArrayDouble *a;
@@ -763,7 +766,7 @@ namespace MEDCoupling
            return SWIG_NewPointerObj(SWIG_as_voidptr(ret),SWIGTYPE_p_MEDCoupling__DataArrayInt, SWIG_POINTER_OWN | 0 );
          }
          
-         virtual PyObject *getReverseNodalConnectivity() const throw(INTERP_KERNEL::Exception)
+         virtual PyObject *getReverseNodalConnectivity() const
          {
            MCAuto<DataArrayInt> d0=DataArrayInt::New();
            MCAuto<DataArrayInt> d1=DataArrayInt::New();
@@ -774,7 +777,7 @@ namespace MEDCoupling
            return ret;
          }
          
-         void renumberCells(PyObject *li, bool check=true) throw(INTERP_KERNEL::Exception)
+         void renumberCells(PyObject *li, bool check=true)
          {
            int sw,sz(-1);
            int v0; std::vector<int> v1;
@@ -782,7 +785,7 @@ namespace MEDCoupling
            self->renumberCells(ids,check);
          }
 
-         PyObject *checkGeoEquivalWith(const MEDCouplingMesh *other, int levOfCheck, double prec) const throw(INTERP_KERNEL::Exception)
+         PyObject *checkGeoEquivalWith(const MEDCouplingMesh *other, int levOfCheck, double prec) const
          {
            DataArrayInt *cellCor, *nodeCor;
            self->checkGeoEquivalWith(other,levOfCheck,prec,cellCor,nodeCor);
@@ -792,7 +795,7 @@ namespace MEDCoupling
            return res;
          }
 
-         PyObject *checkDeepEquivalWith(const MEDCouplingMesh *other, int cellCompPol, double prec) const throw(INTERP_KERNEL::Exception)
+         PyObject *checkDeepEquivalWith(const MEDCouplingMesh *other, int cellCompPol, double prec) const
          {
            DataArrayInt *cellCor=0,*nodeCor=0;
            self->checkDeepEquivalWith(other,cellCompPol,prec,cellCor,nodeCor);
@@ -802,14 +805,14 @@ namespace MEDCoupling
            return res;
          }
          
-         DataArrayInt *checkDeepEquivalOnSameNodesWith(const MEDCouplingMesh *other, int cellCompPol, double prec) const throw(INTERP_KERNEL::Exception)
+         DataArrayInt *checkDeepEquivalOnSameNodesWith(const MEDCouplingMesh *other, int cellCompPol, double prec) const
          {
            DataArrayInt *cellCor=0;
            self->checkDeepEquivalOnSameNodesWith(other,cellCompPol,prec,cellCor);
            return cellCor;
          }
 
-         DataArrayInt *getCellIdsFullyIncludedInNodeIds(PyObject *li) const throw(INTERP_KERNEL::Exception)
+         DataArrayInt *getCellIdsFullyIncludedInNodeIds(PyObject *li) const
          {
            void *da=0;
            int res1=SWIG_ConvertPtr(li,&da,SWIGTYPE_p_MEDCoupling__DataArrayInt, 0 |  0 );
@@ -828,21 +831,21 @@ namespace MEDCoupling
                return self->getCellIdsFullyIncludedInNodeIds(da2->getConstPointer(),da2->getConstPointer()+da2->getNbOfElems());
              }
          }
-         PyObject *getNodeIdsOfCell(int cellId) const throw(INTERP_KERNEL::Exception)
+         PyObject *getNodeIdsOfCell(int cellId) const
          {
            std::vector<int> conn;
            self->getNodeIdsOfCell(cellId,conn);
            return convertIntArrToPyList2(conn);
          }
 
-         PyObject *getCoordinatesOfNode(int nodeId) const throw(INTERP_KERNEL::Exception)
+         PyObject *getCoordinatesOfNode(int nodeId) const
          {
            std::vector<double> coo;
            self->getCoordinatesOfNode(nodeId,coo);
            return convertDblArrToPyList2(coo);
          }
 
-         void scale(PyObject *point, double factor) throw(INTERP_KERNEL::Exception)
+         void scale(PyObject *point, double factor)
          {
            double val;
            DataArrayDouble *a;
@@ -855,7 +858,7 @@ namespace MEDCoupling
            self->scale(pointPtr,factor);
          }
 
-         PyObject *getBoundingBox() const throw(INTERP_KERNEL::Exception)
+         PyObject *getBoundingBox() const
          {
            int spaceDim=self->getSpaceDimension();
            INTERP_KERNEL::AutoPtr<double> tmp=new double[2*spaceDim];
@@ -864,7 +867,7 @@ namespace MEDCoupling
            return ret;
          }
 
-         PyObject *isEqualIfNotWhy(const MEDCouplingMesh *other, double prec) const throw(INTERP_KERNEL::Exception)
+         PyObject *isEqualIfNotWhy(const MEDCouplingMesh *other, double prec) const
          {
            std::string ret1;
            bool ret0=self->isEqualIfNotWhy(other,prec,ret1);
@@ -876,7 +879,7 @@ namespace MEDCoupling
            return ret;
          }
 
-         PyObject *buildPart(PyObject *li) const throw(INTERP_KERNEL::Exception)
+         PyObject *buildPart(PyObject *li) const
          {
            int szArr,sw,iTypppArr;
            std::vector<int> stdvecTyyppArr;
@@ -893,7 +896,7 @@ namespace MEDCoupling
            return convertMesh(ret, SWIG_POINTER_OWN | 0 );
          }
         
-         PyObject *buildPartAndReduceNodes(PyObject *li) const throw(INTERP_KERNEL::Exception)
+         PyObject *buildPartAndReduceNodes(PyObject *li) const
          {
            int szArr,sw,iTypppArr;
            std::vector<int> stdvecTyyppArr;
@@ -917,7 +920,7 @@ namespace MEDCoupling
            return res;
          }
 
-         PyObject *buildPartRangeAndReduceNodes(int beginCellIds, int endCellIds, int stepCellIds) const throw(INTERP_KERNEL::Exception)
+         PyObject *buildPartRangeAndReduceNodes(int beginCellIds, int endCellIds, int stepCellIds) const
          {
            int a,b,c;
            DataArrayInt *arr=0;
@@ -934,7 +937,7 @@ namespace MEDCoupling
            return res;
          }
 
-        PyObject *getDistributionOfTypes() const throw(INTERP_KERNEL::Exception)
+        PyObject *getDistributionOfTypes() const
         {
           std::vector<int> vals=self->getDistributionOfTypes();
           if(vals.size()%3!=0)
@@ -951,7 +954,7 @@ namespace MEDCoupling
           return ret;
         }
 
-        DataArrayInt *checkTypeConsistencyAndContig(PyObject *li, PyObject *li2) const throw(INTERP_KERNEL::Exception)
+        DataArrayInt *checkTypeConsistencyAndContig(PyObject *li, PyObject *li2) const
         {
           std::vector<int> code;
           std::vector<const DataArrayInt *> idsPerType;
@@ -960,7 +963,7 @@ namespace MEDCoupling
           return self->checkTypeConsistencyAndContig(code,idsPerType);
         }
 
-        PyObject *splitProfilePerType(const DataArrayInt *profile, bool smartPflKiller=true) const throw(INTERP_KERNEL::Exception)
+        PyObject *splitProfilePerType(const DataArrayInt *profile, bool smartPflKiller=true) const
         {
           std::vector<int> code;
           std::vector<DataArrayInt *> idsInPflPerType;
@@ -993,7 +996,7 @@ namespace MEDCoupling
           return ret;
         }
 
-        void translate(PyObject *vector) throw(INTERP_KERNEL::Exception)
+        void translate(PyObject *vector)
         {
           double val;
           DataArrayDouble *a;
@@ -1006,7 +1009,7 @@ namespace MEDCoupling
           self->translate(vectorPtr);
         }
 
-         void rotate(PyObject *center, double alpha) throw(INTERP_KERNEL::Exception)
+         void rotate(PyObject *center, double alpha)
          {
            const char msg[]="Python wrap of MEDCouplingPointSet::rotate : ";
            double val;
@@ -1019,7 +1022,7 @@ namespace MEDCoupling
            self->rotate(centerPtr,0,alpha);
          }
 
-         void rotate(PyObject *center, PyObject *vector, double alpha) throw(INTERP_KERNEL::Exception)
+         void rotate(PyObject *center, PyObject *vector, double alpha)
          {
            const char msg[]="Python wrap of MEDCouplingPointSet::rotate : ";
            double val,val2;
@@ -1033,7 +1036,7 @@ namespace MEDCoupling
            self->rotate(centerPtr,vectorPtr,alpha);
          }
 
-         PyObject *getAllGeoTypes() const throw(INTERP_KERNEL::Exception)
+         PyObject *getAllGeoTypes() const
          {
            std::set<INTERP_KERNEL::NormalizedCellType> result=self->getAllGeoTypes();
            std::set<INTERP_KERNEL::NormalizedCellType>::const_iterator iL=result.begin();
@@ -1043,7 +1046,7 @@ namespace MEDCoupling
            return res;
          }
 
-         virtual PyObject *getTinySerializationInformation() const throw(INTERP_KERNEL::Exception)
+         virtual PyObject *getTinySerializationInformation() const
          {
            std::vector<double> a0;
            std::vector<int> a1;
@@ -1062,7 +1065,7 @@ namespace MEDCoupling
            return ret;
          }
 
-         virtual PyObject *serialize() const throw(INTERP_KERNEL::Exception)
+         virtual PyObject *serialize() const
          {
            DataArrayInt *a0Tmp(0);
            DataArrayDouble *a1Tmp(0);
@@ -1073,13 +1076,13 @@ namespace MEDCoupling
            return ret;
          }
 
-         void resizeForUnserialization(const std::vector<int>& tinyInfo, DataArrayInt *a1, DataArrayDouble *a2) const throw(INTERP_KERNEL::Exception)
+         void resizeForUnserialization(const std::vector<int>& tinyInfo, DataArrayInt *a1, DataArrayDouble *a2) const
          {
            std::vector<std::string> littleStrings;
            self->resizeForUnserialization(tinyInfo,a1,a2,littleStrings);
          }
          
-         PyObject *__getstate__() const throw(INTERP_KERNEL::Exception)
+         PyObject *__getstate__() const
          {
            PyObject *ret0(MEDCoupling_MEDCouplingMesh_getTinySerializationInformation(self));
            PyObject *ret1(MEDCoupling_MEDCouplingMesh_serialize(self));
@@ -1089,7 +1092,7 @@ namespace MEDCoupling
            return ret;
          }
 
-         void __setstate__(PyObject *inp) throw(INTERP_KERNEL::Exception)
+         void __setstate__(PyObject *inp)
          {
            static const char MSG[]="MEDCouplingMesh.__setstate__ : expected input is a tuple of size 2 !";
            if(!PyTuple_Check(inp))
@@ -1131,7 +1134,7 @@ namespace MEDCoupling
            self->unserialization(a0,a1,b0,b1,a2);
          }
          
-         static MEDCouplingMesh *MergeMeshes(PyObject *li) throw(INTERP_KERNEL::Exception)
+         static MEDCouplingMesh *MergeMeshes(PyObject *li)
          {
             std::vector<const MEDCoupling::MEDCouplingMesh *> tmp;
             convertFromPyObjVectorOfObj<const MEDCoupling::MEDCouplingMesh *>(li,SWIGTYPE_p_MEDCoupling__MEDCouplingMesh,"MEDCouplingMesh",tmp);
@@ -1151,7 +1154,7 @@ namespace MEDCoupling
   class MEDCouplingNatureOfField
   {
   public:
-    static const char *GetRepr(NatureOfField nat) throw(INTERP_KERNEL::Exception);
+    static const char *GetRepr(NatureOfField nat);
     static std::string GetReprNoThrow(NatureOfField nat);
     static std::string GetAllPossibilitiesStr();
   };
@@ -1166,41 +1169,41 @@ namespace MEDCoupling
   {
   public:
     MEDCouplingGaussLocalization(INTERP_KERNEL::NormalizedCellType type, const std::vector<double>& refCoo,
-                                 const std::vector<double>& gsCoo, const std::vector<double>& w) throw(INTERP_KERNEL::Exception);
-    MEDCouplingGaussLocalization(INTERP_KERNEL::NormalizedCellType typ) throw(INTERP_KERNEL::Exception);
-    INTERP_KERNEL::NormalizedCellType getType() const throw(INTERP_KERNEL::Exception);
-    void setType(INTERP_KERNEL::NormalizedCellType typ) throw(INTERP_KERNEL::Exception);
-    int getNumberOfGaussPt() const throw(INTERP_KERNEL::Exception);
-    int getDimension() const throw(INTERP_KERNEL::Exception);
-    int getNumberOfPtsInRefCell() const throw(INTERP_KERNEL::Exception);
-    std::string getStringRepr() const throw(INTERP_KERNEL::Exception);
-    void checkConsistencyLight() const throw(INTERP_KERNEL::Exception);
-    bool isEqual(const MEDCouplingGaussLocalization& other, double eps) const throw(INTERP_KERNEL::Exception);
+                                 const std::vector<double>& gsCoo, const std::vector<double>& w);
+    MEDCouplingGaussLocalization(INTERP_KERNEL::NormalizedCellType typ);
+    INTERP_KERNEL::NormalizedCellType getType() const;
+    void setType(INTERP_KERNEL::NormalizedCellType typ);
+    int getNumberOfGaussPt() const;
+    int getDimension() const;
+    int getNumberOfPtsInRefCell() const;
+    std::string getStringRepr() const;
+    void checkConsistencyLight() const;
+    bool isEqual(const MEDCouplingGaussLocalization& other, double eps) const;
     //
-    const std::vector<double>& getRefCoords() const throw(INTERP_KERNEL::Exception);
-    double getRefCoord(int ptIdInCell, int comp) const throw(INTERP_KERNEL::Exception);
-    const std::vector<double>& getGaussCoords() const throw(INTERP_KERNEL::Exception);
-    double getGaussCoord(int gaussPtIdInCell, int comp) const throw(INTERP_KERNEL::Exception);
-    const std::vector<double>& getWeights() const throw(INTERP_KERNEL::Exception);
-    double getWeight(int gaussPtIdInCell, double newVal) const throw(INTERP_KERNEL::Exception);
-    void setRefCoord(int ptIdInCell, int comp, double newVal) throw(INTERP_KERNEL::Exception);
-    void setGaussCoord(int gaussPtIdInCell, int comp, double newVal) throw(INTERP_KERNEL::Exception);
-    void setWeight(int gaussPtIdInCell, double newVal) throw(INTERP_KERNEL::Exception);
-    void setRefCoords(const std::vector<double>& refCoo) throw(INTERP_KERNEL::Exception);
-    void setGaussCoords(const std::vector<double>& gsCoo) throw(INTERP_KERNEL::Exception);
-    void setWeights(const std::vector<double>& w) throw(INTERP_KERNEL::Exception);
+    const std::vector<double>& getRefCoords() const;
+    double getRefCoord(int ptIdInCell, int comp) const;
+    const std::vector<double>& getGaussCoords() const;
+    double getGaussCoord(int gaussPtIdInCell, int comp) const;
+    const std::vector<double>& getWeights() const;
+    double getWeight(int gaussPtIdInCell, double newVal) const;
+    void setRefCoord(int ptIdInCell, int comp, double newVal);
+    void setGaussCoord(int gaussPtIdInCell, int comp, double newVal);
+    void setWeight(int gaussPtIdInCell, double newVal);
+    void setRefCoords(const std::vector<double>& refCoo);
+    void setGaussCoords(const std::vector<double>& gsCoo);
+    void setWeights(const std::vector<double>& w);
     //
     static bool AreAlmostEqual(const std::vector<double>& v1, const std::vector<double>& v2, double eps);
     //
     %extend 
     {
-      DataArrayDouble *localizePtsInRefCooForEachCell(const DataArrayDouble *ptsInRefCoo, const MEDCouplingUMesh *mesh) const throw(INTERP_KERNEL::Exception)
+      DataArrayDouble *localizePtsInRefCooForEachCell(const DataArrayDouble *ptsInRefCoo, const MEDCouplingUMesh *mesh) const
       {
         MCAuto<DataArrayDouble> ret(self->localizePtsInRefCooForEachCell(ptsInRefCoo,mesh));
         return ret.retn();
       }
 
-      MEDCouplingUMesh *buildRefCell() const throw(INTERP_KERNEL::Exception)
+      MEDCouplingUMesh *buildRefCell() const
       {
         MCAuto<MEDCouplingUMesh> ret(self->buildRefCell());
         return ret.retn();
@@ -1211,7 +1214,7 @@ namespace MEDCoupling
   class MEDCouplingSkyLineArray
   {
   public:  
-    static MEDCouplingSkyLineArray *BuildFromPolyhedronConn( const DataArrayInt* c, const DataArrayInt* cI ) throw(INTERP_KERNEL::Exception);
+    static MEDCouplingSkyLineArray *BuildFromPolyhedronConn( const DataArrayInt* c, const DataArrayInt* cI );
   
     void set( DataArrayInt* index, DataArrayInt* value );
     void set3( DataArrayInt* superIndex, DataArrayInt* index, DataArrayInt* value );
@@ -1220,34 +1223,34 @@ namespace MEDCoupling
     int getNumberOf() const;
     int getLength() const;
     
-    void deletePack(const int i, const int j) throw(INTERP_KERNEL::Exception);
+    void deletePack(const int i, const int j);
     
-    void deleteSimplePack(const int i) throw(INTERP_KERNEL::Exception);
-    void deleteSimplePacks(const DataArrayInt* idx) throw(INTERP_KERNEL::Exception);
+    void deleteSimplePack(const int i);
+    void deleteSimplePacks(const DataArrayInt* idx);
     
     %extend 
     {
-      MEDCouplingSkyLineArray() throw(INTERP_KERNEL::Exception)
+      MEDCouplingSkyLineArray()
       {
         return MEDCouplingSkyLineArray::New();
       }
 
-      MEDCouplingSkyLineArray( const std::vector<int>& index, const std::vector<int>& value) throw(INTERP_KERNEL::Exception)
+      MEDCouplingSkyLineArray( const std::vector<int>& index, const std::vector<int>& value)
       {
         return MEDCouplingSkyLineArray::New(index, value);
       }
 
-      MEDCouplingSkyLineArray( DataArrayInt* index, DataArrayInt* value ) throw(INTERP_KERNEL::Exception)
+      MEDCouplingSkyLineArray( DataArrayInt* index, DataArrayInt* value )
       {
         return MEDCouplingSkyLineArray::New(index, value);
       }
 
-      MEDCouplingSkyLineArray( const MEDCouplingSkyLineArray & other ) throw(INTERP_KERNEL::Exception)
+      MEDCouplingSkyLineArray( const MEDCouplingSkyLineArray & other )
       {
         return MEDCouplingSkyLineArray::New(other);
       }
 
-      std::string __str__() const throw(INTERP_KERNEL::Exception)
+      std::string __str__() const
       {
         return self->simpleRepr();
       }
@@ -1276,14 +1279,14 @@ namespace MEDCoupling
         return ret;
       }
      
-      PyObject *getSimplePackSafe(int absolutePackId) const throw(INTERP_KERNEL::Exception)
+      PyObject *getSimplePackSafe(int absolutePackId) const
       {
         std::vector<int> ret;
         self->getSimplePackSafe(absolutePackId,ret);
         return convertIntArrToPyList2(ret);
       }
 
-      PyObject *findPackIds(PyObject *superPackIndices, PyObject *pack) const throw(INTERP_KERNEL::Exception)
+      PyObject *findPackIds(PyObject *superPackIndices, PyObject *pack) const
       {
           std::vector<int> vpack, vspIdx, out;
           
@@ -1294,35 +1297,35 @@ namespace MEDCoupling
           return convertIntArrToPyList2(out);
       }
       
-      void pushBackPack(const int i, PyObject *pack) throw(INTERP_KERNEL::Exception)
+      void pushBackPack(const int i, PyObject *pack)
         {
           std::vector<int> vpack;
           convertPyToNewIntArr3(pack,vpack);
           self->pushBackPack(i,vpack.data(), vpack.data()+vpack.size());
         }
         
-      void replaceSimplePack(const int idx, PyObject *pack) throw(INTERP_KERNEL::Exception)
+      void replaceSimplePack(const int idx, PyObject *pack)
         {
           std::vector<int> vpack;
           convertPyToNewIntArr3(pack,vpack);
           self->replaceSimplePack(idx, vpack.data(), vpack.data()+vpack.size());
         }
         
-      void replaceSimplePacks(const DataArrayInt* idx, PyObject *listePacks) throw(INTERP_KERNEL::Exception)
+      void replaceSimplePacks(const DataArrayInt* idx, PyObject *listePacks)
         {
           std::vector<const DataArrayInt*> packs;
           convertFromPyObjVectorOfObj<const MEDCoupling::DataArrayInt*>(listePacks,SWIGTYPE_p_MEDCoupling__DataArrayInt,"DataArrayInt",packs);
           self->replaceSimplePacks(idx, packs);
         }
         
-      void replacePack(const int superIdx, const int idx, PyObject *pack) throw(INTERP_KERNEL::Exception)
+      void replacePack(const int superIdx, const int idx, PyObject *pack)
         {
           std::vector<int> vpack;
           convertPyToNewIntArr3(pack,vpack);
           self->replacePack(superIdx, idx, vpack.data(), vpack.data()+vpack.size());
         }
 
-      PyObject *convertToPolyhedronConn() const throw(INTERP_KERNEL::Exception)
+      PyObject *convertToPolyhedronConn() const
          {
            MCAuto<DataArrayInt> d0=DataArrayInt::New();
            MCAuto<DataArrayInt> d1=DataArrayInt::New();
@@ -1345,44 +1348,44 @@ namespace MEDCoupling
   class MEDCouplingPointSet : public MEDCoupling::MEDCouplingMesh
     {
     public:
-      void setCoords(const DataArrayDouble *coords) throw(INTERP_KERNEL::Exception);
-      DataArrayDouble *getCoordinatesAndOwner() const throw(INTERP_KERNEL::Exception);
-      bool areCoordsEqual(const MEDCouplingPointSet& other, double prec) const throw(INTERP_KERNEL::Exception);
-      void zipCoords() throw(INTERP_KERNEL::Exception);
-      double getCaracteristicDimension() const throw(INTERP_KERNEL::Exception);
-      void recenterForMaxPrecision(double eps) throw(INTERP_KERNEL::Exception);
-      void changeSpaceDimension(int newSpaceDim, double dftVal=0.) throw(INTERP_KERNEL::Exception);
-      void tryToShareSameCoords(const MEDCouplingPointSet& other, double epsilon) throw(INTERP_KERNEL::Exception);
-      virtual void shallowCopyConnectivityFrom(const MEDCouplingPointSet *other) throw(INTERP_KERNEL::Exception);
-      virtual MEDCouplingPointSet *buildPartOfMySelfSlice(int start, int end, int step) const throw(INTERP_KERNEL::Exception);
-      virtual void tryToShareSameCoordsPermute(const MEDCouplingPointSet& other, double epsilon) throw(INTERP_KERNEL::Exception);
-      static DataArrayDouble *MergeNodesArray(const MEDCouplingPointSet *m1, const MEDCouplingPointSet *m2) throw(INTERP_KERNEL::Exception);
-      static MEDCouplingPointSet *BuildInstanceFromMeshType(MEDCouplingMeshType type) throw(INTERP_KERNEL::Exception);
-      static DataArrayInt *ComputeNbOfInteractionsWithSrcCells(const MEDCouplingPointSet *srcMesh, const MEDCouplingPointSet *trgMesh, double eps) throw(INTERP_KERNEL::Exception);
-      virtual DataArrayInt *computeFetchedNodeIds() const throw(INTERP_KERNEL::Exception);
-      virtual int getNumberOfNodesInCell(int cellId) const throw(INTERP_KERNEL::Exception);
-      virtual MEDCouplingPointSet *buildBoundaryMesh(bool keepCoords) const throw(INTERP_KERNEL::Exception);
-      virtual DataArrayInt *getCellsInBoundingBox(const INTERP_KERNEL::DirectedBoundingBox& bbox, double eps) throw(INTERP_KERNEL::Exception);
-      virtual DataArrayInt *zipCoordsTraducer() throw(INTERP_KERNEL::Exception);
+      void setCoords(const DataArrayDouble *coords);
+      DataArrayDouble *getCoordinatesAndOwner() const;
+      bool areCoordsEqual(const MEDCouplingPointSet& other, double prec) const;
+      void zipCoords();
+      double getCaracteristicDimension() const;
+      void recenterForMaxPrecision(double eps);
+      void changeSpaceDimension(int newSpaceDim, double dftVal=0.);
+      void tryToShareSameCoords(const MEDCouplingPointSet& other, double epsilon);
+      virtual void shallowCopyConnectivityFrom(const MEDCouplingPointSet *other);
+      virtual MEDCouplingPointSet *buildPartOfMySelfSlice(int start, int end, int step) const;
+      virtual void tryToShareSameCoordsPermute(const MEDCouplingPointSet& other, double epsilon);
+      static DataArrayDouble *MergeNodesArray(const MEDCouplingPointSet *m1, const MEDCouplingPointSet *m2);
+      static MEDCouplingPointSet *BuildInstanceFromMeshType(MEDCouplingMeshType type);
+      static DataArrayInt *ComputeNbOfInteractionsWithSrcCells(const MEDCouplingPointSet *srcMesh, const MEDCouplingPointSet *trgMesh, double eps);
+      virtual DataArrayInt *computeFetchedNodeIds() const;
+      virtual int getNumberOfNodesInCell(int cellId) const;
+      virtual MEDCouplingPointSet *buildBoundaryMesh(bool keepCoords) const;
+      virtual DataArrayInt *getCellsInBoundingBox(const INTERP_KERNEL::DirectedBoundingBox& bbox, double eps);
+      virtual DataArrayInt *zipCoordsTraducer();
       virtual DataArrayInt *findBoundaryNodes() const;
-      virtual DataArrayInt *zipConnectivityTraducer(int compType, int startCellId=0) throw(INTERP_KERNEL::Exception);
-      virtual MEDCouplingPointSet *mergeMyselfWithOnSameCoords(const MEDCouplingPointSet *other) const throw(INTERP_KERNEL::Exception);
-      virtual void checkFullyDefined() const throw(INTERP_KERNEL::Exception);
-      virtual bool isEmptyMesh(const std::vector<int>& tinyInfo) const throw(INTERP_KERNEL::Exception);
-      virtual MEDCouplingPointSet *deepCopyConnectivityOnly() const throw(INTERP_KERNEL::Exception);
-      virtual DataArrayDouble *getBoundingBoxForBBTree(double arcDetEps=1e-12) const throw(INTERP_KERNEL::Exception);
-      virtual void renumberNodesWithOffsetInConn(int offset) throw(INTERP_KERNEL::Exception);
-      virtual bool areAllNodesFetched() const throw(INTERP_KERNEL::Exception);
-      virtual MEDCouplingFieldDouble *computeDiameterField() const throw(INTERP_KERNEL::Exception);
-      virtual void invertOrientationOfAllCells() throw(INTERP_KERNEL::Exception);
+      virtual DataArrayInt *zipConnectivityTraducer(int compType, int startCellId=0);
+      virtual MEDCouplingPointSet *mergeMyselfWithOnSameCoords(const MEDCouplingPointSet *other) const;
+      virtual void checkFullyDefined() const;
+      virtual bool isEmptyMesh(const std::vector<int>& tinyInfo) const;
+      virtual MEDCouplingPointSet *deepCopyConnectivityOnly() const;
+      virtual DataArrayDouble *getBoundingBoxForBBTree(double arcDetEps=1e-12) const;
+      virtual void renumberNodesWithOffsetInConn(int offset);
+      virtual bool areAllNodesFetched() const;
+      virtual MEDCouplingFieldDouble *computeDiameterField() const;
+      virtual void invertOrientationOfAllCells();
       %extend 
          {
-           std::string __str__() const throw(INTERP_KERNEL::Exception)
+           std::string __str__() const
            {
              return self->simpleRepr();
            }
            
-           PyObject *buildNewNumberingFromCommonNodesFormat(const DataArrayInt *comm, const DataArrayInt *commIndex) const throw(INTERP_KERNEL::Exception)
+           PyObject *buildNewNumberingFromCommonNodesFormat(const DataArrayInt *comm, const DataArrayInt *commIndex) const
            {
              int newNbOfNodes;
              DataArrayInt *ret0=self->buildNewNumberingFromCommonNodesFormat(comm,commIndex,newNbOfNodes);
@@ -1392,7 +1395,7 @@ namespace MEDCoupling
              return res;
            }
            
-           PyObject *findCommonNodes(double prec, int limitTupleId=-1) const throw(INTERP_KERNEL::Exception)
+           PyObject *findCommonNodes(double prec, int limitTupleId=-1) const
            {
              DataArrayInt *comm, *commIndex;
              self->findCommonNodes(prec,limitTupleId,comm,commIndex);
@@ -1402,7 +1405,7 @@ namespace MEDCoupling
              return res;
            }
            
-           PyObject *getCoords() throw(INTERP_KERNEL::Exception)
+           PyObject *getCoords()
            {
              DataArrayDouble *ret1=self->getCoords();
              if (ret1)
@@ -1410,7 +1413,7 @@ namespace MEDCoupling
              return SWIG_NewPointerObj((void*)ret1,SWIGTYPE_p_MEDCoupling__DataArrayDouble,SWIG_POINTER_OWN | 0);
            }
            
-           PyObject *buildPartOfMySelf(PyObject *li, bool keepCoords=true) const throw(INTERP_KERNEL::Exception)
+           PyObject *buildPartOfMySelf(PyObject *li, bool keepCoords=true) const
            {
              int szArr,sw,iTypppArr;
              std::vector<int> stdvecTyyppArr;
@@ -1427,7 +1430,7 @@ namespace MEDCoupling
              return convertMesh(ret, SWIG_POINTER_OWN | 0 );
            }
            
-           PyObject *buildPartOfMySelfNode(PyObject *li, bool fullyIn) const throw(INTERP_KERNEL::Exception)
+           PyObject *buildPartOfMySelfNode(PyObject *li, bool fullyIn) const
            {
              int szArr,sw,iTypppArr;
              std::vector<int> stdvecTyyppArr;
@@ -1444,7 +1447,7 @@ namespace MEDCoupling
              return convertMesh(ret, SWIG_POINTER_OWN | 0 );
            }
 
-           virtual PyObject *buildPartOfMySelfKeepCoords(PyObject *li) const throw(INTERP_KERNEL::Exception)
+           virtual PyObject *buildPartOfMySelfKeepCoords(PyObject *li) const
            {
              int szArr,sw,iTypppArr;
              std::vector<int> stdvecTyyppArr;
@@ -1461,13 +1464,13 @@ namespace MEDCoupling
              return convertMesh(ret, SWIG_POINTER_OWN | 0 );
            }
 
-           virtual PyObject *buildPartOfMySelfKeepCoordsSlice(int start, int end, int step) const throw(INTERP_KERNEL::Exception)
+           virtual PyObject *buildPartOfMySelfKeepCoordsSlice(int start, int end, int step) const
            {
              MEDCouplingPointSet *ret=self->buildPartOfMySelfKeepCoordsSlice(start,end,step);
              return convertMesh(ret, SWIG_POINTER_OWN | 0 );
            }
 
-           PyObject *buildFacePartOfMySelfNode(PyObject *li, bool fullyIn) const throw(INTERP_KERNEL::Exception)
+           PyObject *buildFacePartOfMySelfNode(PyObject *li, bool fullyIn) const
            {
              int szArr,sw,iTypppArr;
              std::vector<int> stdvecTyyppArr;
@@ -1484,7 +1487,7 @@ namespace MEDCoupling
              return convertMesh(ret, SWIG_POINTER_OWN | 0 );
            }
 
-           void renumberNodes(PyObject *li, int newNbOfNodes) throw(INTERP_KERNEL::Exception)
+           void renumberNodes(PyObject *li, int newNbOfNodes)
            {
              int szArr,sw,iTypppArr;
              std::vector<int> stdvecTyyppArr;
@@ -1492,7 +1495,7 @@ namespace MEDCoupling
              self->renumberNodes(tmp,newNbOfNodes);
            }
 
-           void renumberNodesCenter(PyObject *li, int newNbOfNodes) throw(INTERP_KERNEL::Exception)
+           void renumberNodesCenter(PyObject *li, int newNbOfNodes)
            {
              int szArr,sw,iTypppArr;
              std::vector<int> stdvecTyyppArr;
@@ -1500,7 +1503,7 @@ namespace MEDCoupling
              self->renumberNodesCenter(tmp,newNbOfNodes);
            }
 
-           PyObject *findNodesOnLine(PyObject *pt, PyObject *vec, double eps) const throw(INTERP_KERNEL::Exception)
+           PyObject *findNodesOnLine(PyObject *pt, PyObject *vec, double eps) const
              {
                int spaceDim=self->getSpaceDimension();
                double val,val2;
@@ -1519,7 +1522,7 @@ namespace MEDCoupling
                std::copy(nodes.begin(),nodes.end(),ret->getPointer());
                return SWIG_NewPointerObj(SWIG_as_voidptr(ret),SWIGTYPE_p_MEDCoupling__DataArrayInt, SWIG_POINTER_OWN | 0 );
              }
-           PyObject *findNodesOnPlane(PyObject *pt, PyObject *vec, double eps) const throw(INTERP_KERNEL::Exception)
+           PyObject *findNodesOnPlane(PyObject *pt, PyObject *vec, double eps) const
              {
                int spaceDim=self->getSpaceDimension();
                double val,val2;
@@ -1539,7 +1542,7 @@ namespace MEDCoupling
                return SWIG_NewPointerObj(SWIG_as_voidptr(ret),SWIGTYPE_p_MEDCoupling__DataArrayInt, SWIG_POINTER_OWN | 0 );
              }
            
-           PyObject *getNodeIdsNearPoint(PyObject *pt, double eps) const throw(INTERP_KERNEL::Exception)
+           PyObject *getNodeIdsNearPoint(PyObject *pt, double eps) const
            {
              double val;
              DataArrayDouble *a;
@@ -1553,7 +1556,7 @@ namespace MEDCoupling
              return SWIG_NewPointerObj(SWIG_as_voidptr(ret),SWIGTYPE_p_MEDCoupling__DataArrayInt, SWIG_POINTER_OWN | 0 );
            }
 
-           PyObject *getNodeIdsNearPoints(PyObject *pt, int nbOfPoints, double eps) const throw(INTERP_KERNEL::Exception)
+           PyObject *getNodeIdsNearPoints(PyObject *pt, int nbOfPoints, double eps) const
            {
              DataArrayInt *c=0,*cI=0;
              //
@@ -1572,7 +1575,7 @@ namespace MEDCoupling
              return ret;
            }
 
-           PyObject *getNodeIdsNearPoints(PyObject *pt, double eps) const throw(INTERP_KERNEL::Exception)
+           PyObject *getNodeIdsNearPoints(PyObject *pt, double eps) const
            {
              DataArrayInt *c=0,*cI=0;
              int spaceDim=self->getSpaceDimension();
@@ -1591,7 +1594,7 @@ namespace MEDCoupling
              return ret;
            }
 
-           PyObject *getCellsInBoundingBox(PyObject *bbox, double eps) const throw(INTERP_KERNEL::Exception)
+           PyObject *getCellsInBoundingBox(PyObject *bbox, double eps) const
            {
              double val;
              DataArrayDouble *a;
@@ -1606,7 +1609,7 @@ namespace MEDCoupling
              return SWIG_NewPointerObj(SWIG_as_voidptr(elems),SWIGTYPE_p_MEDCoupling__DataArrayInt, SWIG_POINTER_OWN | 0 );
            }
 
-           void duplicateNodesInCoords(PyObject *li) throw(INTERP_KERNEL::Exception)
+           void duplicateNodesInCoords(PyObject *li)
            {
              int sw;
              int singleVal;
@@ -1627,7 +1630,7 @@ namespace MEDCoupling
                }
            }
 
-           virtual PyObject *findCommonCells(int compType, int startCellId=0) const throw(INTERP_KERNEL::Exception)
+           virtual PyObject *findCommonCells(int compType, int startCellId=0) const
            {
              DataArrayInt *v0(nullptr),*v1(nullptr);
              self->findCommonCells(compType,startCellId,v0,v1);
@@ -1638,7 +1641,7 @@ namespace MEDCoupling
            }
 
       
-           virtual void renumberNodesInConn(PyObject *li) throw(INTERP_KERNEL::Exception)
+           virtual void renumberNodesInConn(PyObject *li)
            {
              void *da(nullptr);
              {
@@ -1667,7 +1670,7 @@ namespace MEDCoupling
                }
            }
 
-           virtual PyObject *getNodeIdsInUse() const throw(INTERP_KERNEL::Exception)
+           virtual PyObject *getNodeIdsInUse() const
            {
              int ret1=-1;
              DataArrayInt *ret0=self->getNodeIdsInUse(ret1);
@@ -1688,7 +1691,7 @@ namespace MEDCoupling
              return ret;
            }
 
-           virtual PyObject *mergeNodes(double precision) throw(INTERP_KERNEL::Exception)
+           virtual PyObject *mergeNodes(double precision)
            {
              bool ret1;
              int ret2;
@@ -1700,7 +1703,7 @@ namespace MEDCoupling
              return res;
            }
            
-           virtual PyObject *mergeNodesCenter(double precision) throw(INTERP_KERNEL::Exception)
+           virtual PyObject *mergeNodesCenter(double precision)
            {
              bool ret1;
              int ret2;
@@ -1712,7 +1715,7 @@ namespace MEDCoupling
              return res;
            }
            
-           DataArrayInt *getCellIdsLyingOnNodes(PyObject *li, bool fullyIn) const throw(INTERP_KERNEL::Exception)
+           DataArrayInt *getCellIdsLyingOnNodes(PyObject *li, bool fullyIn) const
            {
              void *da=0;
              int res1=SWIG_ConvertPtr(li,&da,SWIGTYPE_p_MEDCoupling__DataArrayInt, 0 |  0 );
@@ -1732,7 +1735,7 @@ namespace MEDCoupling
                }
            }
 
-           MEDCouplingPointSet *__getitem__(PyObject *listOrDataArrI) throw(INTERP_KERNEL::Exception)
+           MEDCouplingPointSet *__getitem__(PyObject *listOrDataArrI)
            {
              int sw;
              int singleVal;
@@ -1788,7 +1791,7 @@ namespace MEDCoupling
                }
            }
            
-           static void Rotate2DAlg(PyObject *center, double angle, int nbNodes, PyObject *coords) throw(INTERP_KERNEL::Exception)
+           static void Rotate2DAlg(PyObject *center, double angle, int nbNodes, PyObject *coords)
            {
              int sz;
              INTERP_KERNEL::AutoCPtr<double> c=convertPyToNewDblArr2(center,&sz);
@@ -1798,7 +1801,7 @@ namespace MEDCoupling
                PyList_SetItem(coords,i,PyFloat_FromDouble(coo[i]));
            }
            
-           static void Rotate2DAlg(PyObject *center, double angle, PyObject *coords) throw(INTERP_KERNEL::Exception)
+           static void Rotate2DAlg(PyObject *center, double angle, PyObject *coords)
            {
              int sz;
              INTERP_KERNEL::AutoCPtr<double> c=convertPyToNewDblArr2(center,&sz);
@@ -1812,7 +1815,7 @@ namespace MEDCoupling
              MEDCoupling::DataArrayDouble::Rotate2DAlg(c,angle,nbNodes,coo,const_cast<double *>(coo));
            }
            
-           static void Rotate3DAlg(PyObject *center, PyObject *vect, double angle, int nbNodes, PyObject *coords) throw(INTERP_KERNEL::Exception)
+           static void Rotate3DAlg(PyObject *center, PyObject *vect, double angle, int nbNodes, PyObject *coords)
            {
              int sz,sz2;
              INTERP_KERNEL::AutoCPtr<double> c=convertPyToNewDblArr2(center,&sz);
@@ -1823,7 +1826,7 @@ namespace MEDCoupling
                PyList_SetItem(coords,i,PyFloat_FromDouble(coo[i]));
            }
            
-           static void Rotate3DAlg(PyObject *center, PyObject *vect, double angle, PyObject *coords) throw(INTERP_KERNEL::Exception)
+           static void Rotate3DAlg(PyObject *center, PyObject *vect, double angle, PyObject *coords)
            {
              int sz,sz2;
              INTERP_KERNEL::AutoCPtr<double> c=convertPyToNewDblArr2(center,&sz);
@@ -1848,12 +1851,12 @@ namespace MEDCoupling
     INTERP_KERNEL::NormalizedCellType getType() const;
     %extend
       {
-        std::string __str__() const throw(INTERP_KERNEL::Exception)
+        std::string __str__() const
         {
           return self->repr();
         }
 
-        PyObject *getAllConn() const throw(INTERP_KERNEL::Exception)
+        PyObject *getAllConn() const
         {
           int ret2;
           const int *r=self->getAllConn(ret2);
@@ -1936,111 +1939,112 @@ namespace MEDCoupling
   class MEDCouplingUMesh : public MEDCoupling::MEDCouplingPointSet
   {
   public:
-    static MEDCouplingUMesh *New() throw(INTERP_KERNEL::Exception);
-    static MEDCouplingUMesh *New(const char *meshName, int meshDim) throw(INTERP_KERNEL::Exception);
-    void checkConsistencyLight() const throw(INTERP_KERNEL::Exception);
-    void setMeshDimension(int meshDim) throw(INTERP_KERNEL::Exception);
-    void allocateCells(int nbOfCells=0) throw(INTERP_KERNEL::Exception);
-    void finishInsertingCells() throw(INTERP_KERNEL::Exception);
-    MEDCouplingUMeshCellByTypeEntry *cellsByType() throw(INTERP_KERNEL::Exception);
-    void setConnectivity(DataArrayInt *conn, DataArrayInt *connIndex, bool isComputingTypes=true) throw(INTERP_KERNEL::Exception);
-    INTERP_KERNEL::NormalizedCellType getTypeOfCell(int cellId) const throw(INTERP_KERNEL::Exception);
-    void setPartOfMySelfSlice(int start, int end, int step, const MEDCouplingUMesh& otherOnSameCoordsThanThis) throw(INTERP_KERNEL::Exception);
-    int getNodalConnectivityArrayLen() const throw(INTERP_KERNEL::Exception);
-    void computeTypes() throw(INTERP_KERNEL::Exception);
-    std::string reprConnectivityOfThis() const throw(INTERP_KERNEL::Exception);
-    MEDCouplingUMesh *buildSetInstanceFromThis(int spaceDim) const throw(INTERP_KERNEL::Exception);
+    static MEDCouplingUMesh *New();
+    static MEDCouplingUMesh *New(const char *meshName, int meshDim);
+    void checkConsistencyLight() const;
+    void setMeshDimension(int meshDim);
+    void allocateCells(int nbOfCells=0);
+    void finishInsertingCells();
+    MEDCouplingUMeshCellByTypeEntry *cellsByType();
+    void setConnectivity(DataArrayInt *conn, DataArrayInt *connIndex, bool isComputingTypes=true);
+    INTERP_KERNEL::NormalizedCellType getTypeOfCell(int cellId) const;
+    void setPartOfMySelfSlice(int start, int end, int step, const MEDCouplingUMesh& otherOnSameCoordsThanThis);
+    int getNodalConnectivityArrayLen() const;
+    void computeTypes();
+    std::string reprConnectivityOfThis() const;
+    MEDCouplingUMesh *buildSetInstanceFromThis(int spaceDim) const;
     //tools
-    DataArrayInt *conformize2D(double eps) throw(INTERP_KERNEL::Exception);
-    DataArrayInt *conformize3D(double eps) throw(INTERP_KERNEL::Exception);
-    DataArrayInt *colinearize2D(double eps) throw(INTERP_KERNEL::Exception);
-    DataArrayInt *colinearizeKeepingConform2D(double eps) throw(INTERP_KERNEL::Exception);
-    void shiftNodeNumbersInConn(int delta) throw(INTERP_KERNEL::Exception);
-    std::vector<bool> getQuadraticStatus() const throw(INTERP_KERNEL::Exception);
-    DataArrayInt *findCellIdsOnBoundary() const throw(INTERP_KERNEL::Exception);
-    MEDCouplingUMesh *computeSkin() const throw(INTERP_KERNEL::Exception);
-    bool checkConsecutiveCellTypes() const throw(INTERP_KERNEL::Exception);
-    bool checkConsecutiveCellTypesForMEDFileFrmt() const throw(INTERP_KERNEL::Exception);
-    DataArrayInt *rearrange2ConsecutiveCellTypes() throw(INTERP_KERNEL::Exception);
-    DataArrayInt *sortCellsInMEDFileFrmt() throw(INTERP_KERNEL::Exception);
-    DataArrayInt *getRenumArrForMEDFileFrmt() const throw(INTERP_KERNEL::Exception);
-    DataArrayInt *convertCellArrayPerGeoType(const DataArrayInt *da) const throw(INTERP_KERNEL::Exception);
-    MEDCouplingUMesh *buildDescendingConnectivity(DataArrayInt *desc, DataArrayInt *descIndx, DataArrayInt *revDesc, DataArrayInt *revDescIndx) const throw(INTERP_KERNEL::Exception);
-    MEDCouplingUMesh *buildDescendingConnectivity2(DataArrayInt *desc, DataArrayInt *descIndx, DataArrayInt *revDesc, DataArrayInt *revDescIndx) const throw(INTERP_KERNEL::Exception);
-    MEDCouplingUMesh *explode3DMeshTo1D(DataArrayInt *desc, DataArrayInt *descIndx, DataArrayInt *revDesc, DataArrayInt *revDescIndx) const throw(INTERP_KERNEL::Exception);
-    MEDCouplingUMesh *explodeMeshIntoMicroEdges(DataArrayInt *desc, DataArrayInt *descIndx, DataArrayInt *revDesc, DataArrayInt *revDescIndx) const throw(INTERP_KERNEL::Exception);
-    void orientCorrectlyPolyhedrons() throw(INTERP_KERNEL::Exception);
-    bool isPresenceOfQuadratic() const throw(INTERP_KERNEL::Exception);
-    bool isFullyQuadratic() const throw(INTERP_KERNEL::Exception);
-    MEDCouplingFieldDouble *buildDirectionVectorField() const throw(INTERP_KERNEL::Exception);
-    bool isContiguous1D() const throw(INTERP_KERNEL::Exception);
-    void tessellate2D(double eps) throw(INTERP_KERNEL::Exception);
-    void convertQuadraticCellsToLinear() throw(INTERP_KERNEL::Exception);
-    DataArrayInt *convertLinearCellsToQuadratic(int conversionType=0) throw(INTERP_KERNEL::Exception);
-    void convertDegeneratedCells() throw(INTERP_KERNEL::Exception);
-    DataArrayInt *convertDegeneratedCellsAndRemoveFlatOnes() throw(INTERP_KERNEL::Exception);
-    bool removeDegenerated1DCells() throw(INTERP_KERNEL::Exception);
-    bool areOnlySimplexCells() const throw(INTERP_KERNEL::Exception);
-    MEDCouplingFieldDouble *getEdgeRatioField() const throw(INTERP_KERNEL::Exception);
-    MEDCouplingFieldDouble *getAspectRatioField() const throw(INTERP_KERNEL::Exception);
-    MEDCouplingFieldDouble *getWarpField() const throw(INTERP_KERNEL::Exception);
-    MEDCouplingFieldDouble *getSkewField() const throw(INTERP_KERNEL::Exception);
-    DataArrayDouble *computePlaneEquationOf3DFaces() const throw(INTERP_KERNEL::Exception);
-    DataArrayInt *convexEnvelop2D() throw(INTERP_KERNEL::Exception);
-    std::string cppRepr() const throw(INTERP_KERNEL::Exception);
-    DataArrayInt *findAndCorrectBadOriented3DExtrudedCells() throw(INTERP_KERNEL::Exception);
-    DataArrayInt *findAndCorrectBadOriented3DCells() throw(INTERP_KERNEL::Exception);
-    MEDCoupling::MEDCoupling1GTUMesh *convertIntoSingleGeoTypeMesh() const throw(INTERP_KERNEL::Exception);
-    MEDCouplingSkyLineArray *generateGraph() const throw(INTERP_KERNEL::Exception);
-    DataArrayInt *convertNodalConnectivityToStaticGeoTypeMesh() const throw(INTERP_KERNEL::Exception);
-    DataArrayInt *buildUnionOf2DMesh() const throw(INTERP_KERNEL::Exception);
-    DataArrayInt *buildUnionOf3DMesh() const throw(INTERP_KERNEL::Exception);
-    DataArrayInt *orderConsecutiveCells1D() const throw(INTERP_KERNEL::Exception);
-    DataArrayDouble *getBoundingBoxForBBTreeFast() const throw(INTERP_KERNEL::Exception);
-    DataArrayDouble *getBoundingBoxForBBTree2DQuadratic(double arcDetEps=1e-12) const throw(INTERP_KERNEL::Exception);
-    DataArrayDouble *getBoundingBoxForBBTree1DQuadratic(double arcDetEps=1e-12) const throw(INTERP_KERNEL::Exception);
-    void changeOrientationOfCells() throw(INTERP_KERNEL::Exception);
-    int split2DCells(const DataArrayInt *desc, const DataArrayInt *descI, const DataArrayInt *subNodesInSeg, const DataArrayInt *subNodesInSegI, const DataArrayInt *midOpt=0, const DataArrayInt *midOptI=0) throw(INTERP_KERNEL::Exception);
-    static MEDCouplingUMesh *Build0DMeshFromCoords(DataArrayDouble *da) throw(INTERP_KERNEL::Exception);
-    static MEDCouplingUMesh *MergeUMeshes(const MEDCouplingUMesh *mesh1, const MEDCouplingUMesh *mesh2) throw(INTERP_KERNEL::Exception);
-    static MEDCouplingUMesh *MergeUMeshesOnSameCoords(const MEDCouplingUMesh *mesh1, const MEDCouplingUMesh *mesh2) throw(INTERP_KERNEL::Exception);
-    static DataArrayInt *ComputeSpreadZoneGradually(const DataArrayInt *arrIn, const DataArrayInt *arrIndxIn) throw(INTERP_KERNEL::Exception);
-    static DataArrayInt *ComputeRangesFromTypeDistribution(const std::vector<int>& code) throw(INTERP_KERNEL::Exception);
+    DataArrayInt *conformize2D(double eps);
+    DataArrayInt *conformize3D(double eps);
+    DataArrayInt *colinearize2D(double eps);
+    DataArrayInt *colinearizeKeepingConform2D(double eps);
+    void shiftNodeNumbersInConn(int delta);
+    std::vector<bool> getQuadraticStatus() const;
+    DataArrayInt *findCellIdsOnBoundary() const;
+    MEDCouplingUMesh *computeSkin() const;
+    bool checkConsecutiveCellTypes() const;
+    bool checkConsecutiveCellTypesForMEDFileFrmt() const;
+    DataArrayInt *rearrange2ConsecutiveCellTypes();
+    DataArrayInt *sortCellsInMEDFileFrmt();
+    DataArrayInt *getRenumArrForMEDFileFrmt() const;
+    DataArrayInt *convertCellArrayPerGeoType(const DataArrayInt *da) const;
+    MEDCouplingUMesh *buildDescendingConnectivity(DataArrayInt *desc, DataArrayInt *descIndx, DataArrayInt *revDesc, DataArrayInt *revDescIndx) const;
+    MEDCouplingUMesh *buildDescendingConnectivity2(DataArrayInt *desc, DataArrayInt *descIndx, DataArrayInt *revDesc, DataArrayInt *revDescIndx) const;
+    MEDCouplingUMesh *explode3DMeshTo1D(DataArrayInt *desc, DataArrayInt *descIndx, DataArrayInt *revDesc, DataArrayInt *revDescIndx) const;
+    MEDCouplingUMesh *explodeMeshIntoMicroEdges(DataArrayInt *desc, DataArrayInt *descIndx, DataArrayInt *revDesc, DataArrayInt *revDescIndx) const;
+    void orientCorrectlyPolyhedrons();
+    bool isPresenceOfQuadratic() const;
+    bool isFullyQuadratic() const;
+    MEDCouplingFieldDouble *buildDirectionVectorField() const;
+    bool isContiguous1D() const;
+    void tessellate2D(double eps);
+    void convertQuadraticCellsToLinear();
+    DataArrayInt *convertLinearCellsToQuadratic(int conversionType=0);
+    void convertDegeneratedCells();
+    DataArrayInt *convertDegeneratedCellsAndRemoveFlatOnes();
+    bool removeDegenerated1DCells();
+    bool areOnlySimplexCells() const;
+    MEDCouplingFieldDouble *getEdgeRatioField() const;
+    MEDCouplingFieldDouble *getAspectRatioField() const;
+    MEDCouplingFieldDouble *getWarpField() const;
+    MEDCouplingFieldDouble *getSkewField() const;
+    DataArrayDouble *computePlaneEquationOf3DFaces() const;
+    DataArrayInt *convexEnvelop2D();
+    std::string cppRepr() const;
+    DataArrayInt *findAndCorrectBadOriented3DExtrudedCells();
+    DataArrayInt *findAndCorrectBadOriented3DCells();
+    MEDCoupling::MEDCoupling1GTUMesh *convertIntoSingleGeoTypeMesh() const;
+    MEDCouplingSkyLineArray *generateGraph() const;
+    DataArrayInt *convertNodalConnectivityToStaticGeoTypeMesh() const;
+    DataArrayInt *buildUnionOf2DMesh() const;
+    DataArrayInt *buildUnionOf3DMesh() const;
+    DataArrayInt *orderConsecutiveCells1D() const;
+    DataArrayDouble *getBoundingBoxForBBTreeFast() const;
+    DataArrayDouble *getBoundingBoxForBBTree2DQuadratic(double arcDetEps=1e-12) const;
+    DataArrayDouble *getBoundingBoxForBBTree1DQuadratic(double arcDetEps=1e-12) const;
+    void changeOrientationOfCells();
+    DataArrayDouble *computeCellCenterOfMassWithPrecision(double eps);
+    int split2DCells(const DataArrayInt *desc, const DataArrayInt *descI, const DataArrayInt *subNodesInSeg, const DataArrayInt *subNodesInSegI, const DataArrayInt *midOpt=0, const DataArrayInt *midOptI=0);
+    static MEDCouplingUMesh *Build0DMeshFromCoords(DataArrayDouble *da);
+    static MEDCouplingUMesh *MergeUMeshes(const MEDCouplingUMesh *mesh1, const MEDCouplingUMesh *mesh2);
+    static MEDCouplingUMesh *MergeUMeshesOnSameCoords(const MEDCouplingUMesh *mesh1, const MEDCouplingUMesh *mesh2);
+    static DataArrayInt *ComputeSpreadZoneGradually(const DataArrayInt *arrIn, const DataArrayInt *arrIndxIn);
+    static DataArrayInt *ComputeRangesFromTypeDistribution(const std::vector<int>& code);
     %extend {
-      MEDCouplingUMesh() throw(INTERP_KERNEL::Exception)
+      MEDCouplingUMesh()
       {
         return MEDCouplingUMesh::New();
       }
       
-      MEDCouplingUMesh(const char *meshName, int meshDim) throw(INTERP_KERNEL::Exception)
+      MEDCouplingUMesh(const char *meshName, int meshDim)
       {
         return MEDCouplingUMesh::New(meshName,meshDim);
       }
 
-      std::string __str__() const throw(INTERP_KERNEL::Exception)
+      std::string __str__() const
       {
         return self->simpleRepr();
       }
       
-      std::string __repr__() const throw(INTERP_KERNEL::Exception)
+      std::string __repr__() const
       {
         std::ostringstream oss;
         self->reprQuickOverview(oss);
         return oss.str();
       }
       
-      MEDCouplingUMeshCellIterator *__iter__() throw(INTERP_KERNEL::Exception)
+      MEDCouplingUMeshCellIterator *__iter__()
       {
         return self->cellIterator();
       }
 
-      static MEDCouplingUMesh *Build1DMeshFromCoords(DataArrayDouble *da) throw(INTERP_KERNEL::Exception)
+      static MEDCouplingUMesh *Build1DMeshFromCoords(DataArrayDouble *da)
       {
         MCAuto<MEDCouplingUMesh> ret(MEDCouplingUMesh::Build1DMeshFromCoords(da));
         return ret.retn();
       }
       
-      PyObject *getAllGeoTypesSorted() const throw(INTERP_KERNEL::Exception)
+      PyObject *getAllGeoTypesSorted() const
       {
         std::vector<INTERP_KERNEL::NormalizedCellType> result=self->getAllGeoTypesSorted();
         std::vector<INTERP_KERNEL::NormalizedCellType>::const_iterator iL=result.begin();
@@ -2050,7 +2054,7 @@ namespace MEDCoupling
         return res;
       }
       
-      void setPartOfMySelf(PyObject *li, const MEDCouplingUMesh& otherOnSameCoordsThanThis) throw(INTERP_KERNEL::Exception)
+      void setPartOfMySelf(PyObject *li, const MEDCouplingUMesh& otherOnSameCoordsThanThis)
       {
         int sw;
         int singleVal;
@@ -2108,7 +2112,7 @@ namespace MEDCoupling
           }
       }
 
-      void __setitem__(PyObject *li, const MEDCouplingUMesh& otherOnSameCoordsThanThis) throw(INTERP_KERNEL::Exception)
+      void __setitem__(PyObject *li, const MEDCouplingUMesh& otherOnSameCoordsThanThis)
       {
         int sw;
         int singleVal;
@@ -2171,7 +2175,7 @@ namespace MEDCoupling
           }
       }
 
-      void insertNextCell(INTERP_KERNEL::NormalizedCellType type, int size, PyObject *li) throw(INTERP_KERNEL::Exception)
+      void insertNextCell(INTERP_KERNEL::NormalizedCellType type, int size, PyObject *li)
       {
         int szArr,sw,iTypppArr;
         std::vector<int> stdvecTyyppArr;
@@ -2184,7 +2188,7 @@ namespace MEDCoupling
         self->insertNextCell(type,size,tmp);
       }
 
-      void insertNextCell(INTERP_KERNEL::NormalizedCellType type, PyObject *li) throw(INTERP_KERNEL::Exception)
+      void insertNextCell(INTERP_KERNEL::NormalizedCellType type, PyObject *li)
       {
         int szArr,sw,iTypppArr;
         std::vector<int> stdvecTyyppArr;
@@ -2192,14 +2196,14 @@ namespace MEDCoupling
         self->insertNextCell(type,szArr,tmp);
       }
       
-      DataArrayInt *getNodalConnectivity() throw(INTERP_KERNEL::Exception)
+      DataArrayInt *getNodalConnectivity()
       {
         DataArrayInt *ret=self->getNodalConnectivity();
         if(ret)
           ret->incrRef();
         return ret;
       }
-      DataArrayInt *getNodalConnectivityIndex() throw(INTERP_KERNEL::Exception)
+      DataArrayInt *getNodalConnectivityIndex()
       {
         DataArrayInt *ret=self->getNodalConnectivityIndex();
         if(ret)
@@ -2207,7 +2211,7 @@ namespace MEDCoupling
         return ret;
       }
       
-      static PyObject *ComputeSpreadZoneGraduallyFromSeed(PyObject *seed, const DataArrayInt *arrIn, const DataArrayInt *arrIndxIn, int nbOfDepthPeeling=-1) throw(INTERP_KERNEL::Exception)
+      static PyObject *ComputeSpreadZoneGraduallyFromSeed(PyObject *seed, const DataArrayInt *arrIn, const DataArrayInt *arrIndxIn, int nbOfDepthPeeling=-1)
       {
         int szArr,sw,iTypppArr;
         std::vector<int> stdvecTyyppArr;
@@ -2220,7 +2224,7 @@ namespace MEDCoupling
         return res;
       }
 
-      static PyObject *FindCommonCellsAlg(int compType, int startCellId, const DataArrayInt *nodal, const DataArrayInt *nodalI, const DataArrayInt *revNodal, const DataArrayInt *revNodalI) throw(INTERP_KERNEL::Exception)
+      static PyObject *FindCommonCellsAlg(int compType, int startCellId, const DataArrayInt *nodal, const DataArrayInt *nodalI, const DataArrayInt *revNodal, const DataArrayInt *revNodalI)
       {
         DataArrayInt *v0=0,*v1=0;
         MEDCouplingUMesh::FindCommonCellsAlg(compType,startCellId,nodal,nodalI,revNodal,revNodalI,v0,v1);
@@ -2230,7 +2234,7 @@ namespace MEDCoupling
         return res;
       }
       
-      PyObject *distanceToPoint(PyObject *point) const throw(INTERP_KERNEL::Exception)
+      PyObject *distanceToPoint(PyObject *point) const
       {
         double val;
         DataArrayDouble *a;
@@ -2248,7 +2252,7 @@ namespace MEDCoupling
         return ret;
       }
 
-      PyObject *distanceToPoints(const DataArrayDouble *pts) const throw(INTERP_KERNEL::Exception)
+      PyObject *distanceToPoints(const DataArrayDouble *pts) const
       {
         DataArrayInt *ret1=0;
         DataArrayDouble *ret0=self->distanceToPoints(pts,ret1);
@@ -2258,7 +2262,7 @@ namespace MEDCoupling
         return ret;
       }
 
-      PyObject *tetrahedrize(int policy) throw(INTERP_KERNEL::Exception)
+      PyObject *tetrahedrize(int policy)
       {
         int ret2(-1);
         DataArrayInt *ret1(0);
@@ -2270,7 +2274,7 @@ namespace MEDCoupling
         return ret;
       }
       
-      PyObject *checkButterflyCells(double eps=1e-12) throw(INTERP_KERNEL::Exception)
+      PyObject *checkButterflyCells(double eps=1e-12)
       {
         std::vector<int> cells;
         self->checkButterflyCells(cells,eps);
@@ -2280,7 +2284,7 @@ namespace MEDCoupling
         return SWIG_NewPointerObj(SWIG_as_voidptr(ret),SWIGTYPE_p_MEDCoupling__DataArrayInt, SWIG_POINTER_OWN | 0 );
       }
 
-      PyObject *splitByType() const throw(INTERP_KERNEL::Exception)
+      PyObject *splitByType() const
       {
         std::vector<MEDCouplingUMesh *> ms=self->splitByType();
         int sz=ms.size();
@@ -2290,7 +2294,7 @@ namespace MEDCoupling
         return ret;
       }
 
-      PyObject *partitionBySpreadZone() const throw(INTERP_KERNEL::Exception)
+      PyObject *partitionBySpreadZone() const
       {
         std::vector<DataArrayInt *> retCpp=self->partitionBySpreadZone();
         int sz=retCpp.size();
@@ -2300,7 +2304,7 @@ namespace MEDCoupling
         return ret;
       }
 
-      static PyObject *PartitionBySpreadZone(const DataArrayInt *arrIn, const DataArrayInt *arrIndxIn) throw(INTERP_KERNEL::Exception)
+      static PyObject *PartitionBySpreadZone(const DataArrayInt *arrIn, const DataArrayInt *arrIndxIn)
       {
         std::vector<DataArrayInt *> retCpp(MEDCouplingUMesh::PartitionBySpreadZone(arrIn,arrIndxIn));
         int sz=retCpp.size();
@@ -2310,7 +2314,7 @@ namespace MEDCoupling
         return ret;
       }
 
-      PyObject *keepSpecifiedCells(INTERP_KERNEL::NormalizedCellType type, PyObject *ids) const throw(INTERP_KERNEL::Exception)
+      PyObject *keepSpecifiedCells(INTERP_KERNEL::NormalizedCellType type, PyObject *ids) const
       {
         int size;
         INTERP_KERNEL::AutoPtr<int> tmp=convertPyToNewIntArr2(ids,&size);
@@ -2318,7 +2322,7 @@ namespace MEDCoupling
         return SWIG_NewPointerObj(SWIG_as_voidptr(ret),SWIGTYPE_p_MEDCoupling__MEDCouplingUMesh, SWIG_POINTER_OWN | 0 );
       }
 
-      bool checkConsecutiveCellTypesAndOrder(PyObject *li) const throw(INTERP_KERNEL::Exception)
+      bool checkConsecutiveCellTypesAndOrder(PyObject *li) const
       {
         int sz;
         INTERP_KERNEL::AutoPtr<INTERP_KERNEL::NormalizedCellType> order=(INTERP_KERNEL::NormalizedCellType *)convertPyToNewIntArr2(li,&sz);
@@ -2326,7 +2330,7 @@ namespace MEDCoupling
         return ret;
       }
 
-      DataArrayInt *getRenumArrForConsecutiveCellTypesSpec(PyObject *li) const throw(INTERP_KERNEL::Exception)
+      DataArrayInt *getRenumArrForConsecutiveCellTypesSpec(PyObject *li) const
       {
         int sz;
         INTERP_KERNEL::AutoPtr<INTERP_KERNEL::NormalizedCellType> order=(INTERP_KERNEL::NormalizedCellType *)convertPyToNewIntArr2(li,&sz);
@@ -2334,7 +2338,7 @@ namespace MEDCoupling
         return ret;
       }
 
-      PyObject *findNodesToDuplicate(const MEDCouplingUMesh& otherDimM1OnSameCoords) const throw(INTERP_KERNEL::Exception)
+      PyObject *findNodesToDuplicate(const MEDCouplingUMesh& otherDimM1OnSameCoords) const
       {
         DataArrayInt *tmp0=0,*tmp1=0,*tmp2=0;
         self->findNodesToDuplicate(otherDimM1OnSameCoords,tmp0,tmp1,tmp2);
@@ -2345,7 +2349,7 @@ namespace MEDCoupling
         return ret;
       }
 
-      PyObject *findCellIdsLyingOn(const MEDCouplingUMesh& otherDimM1OnSameCoords) const throw(INTERP_KERNEL::Exception)
+      PyObject *findCellIdsLyingOn(const MEDCouplingUMesh& otherDimM1OnSameCoords) const
       {
         DataArrayInt *tmp0=0,*tmp1=0;
         self->findCellIdsLyingOn(otherDimM1OnSameCoords,tmp0,tmp1);
@@ -2355,7 +2359,7 @@ namespace MEDCoupling
         return ret;
       }
 
-      void duplicateNodes(PyObject *li) throw(INTERP_KERNEL::Exception)
+      void duplicateNodes(PyObject *li)
       {
         int sw;
         int singleVal;
@@ -2376,7 +2380,7 @@ namespace MEDCoupling
           }
       }
 
-      void duplicateNodesInConn(PyObject *li, int offset) throw(INTERP_KERNEL::Exception)
+      void duplicateNodesInConn(PyObject *li, int offset)
       {
         int sw;
         int singleVal;
@@ -2397,7 +2401,7 @@ namespace MEDCoupling
           }
       }
 
-      void attractSeg3MidPtsAroundNodes(double ratio, PyObject *nodeIds) throw(INTERP_KERNEL::Exception)
+      void attractSeg3MidPtsAroundNodes(double ratio, PyObject *nodeIds)
       {
         int szArr,sw,iTypppArr;
         std::vector<int> stdvecTyyppArr;
@@ -2405,7 +2409,7 @@ namespace MEDCoupling
         self->attractSeg3MidPtsAroundNodes(ratio,nodeIdsPtr,nodeIdsPtr+szArr);
       }
 
-      PyObject *getLevArrPerCellTypes(PyObject *li) const throw(INTERP_KERNEL::Exception)
+      PyObject *getLevArrPerCellTypes(PyObject *li) const
       {
         int sz;
         INTERP_KERNEL::AutoPtr<INTERP_KERNEL::NormalizedCellType> order=(INTERP_KERNEL::NormalizedCellType *)convertPyToNewIntArr2(li,&sz);
@@ -2417,7 +2421,7 @@ namespace MEDCoupling
         return ret;
       }
 
-      PyObject *convertNodalConnectivityToDynamicGeoTypeMesh() const throw(INTERP_KERNEL::Exception)
+      PyObject *convertNodalConnectivityToDynamicGeoTypeMesh() const
       {
         DataArrayInt *ret0=0,*ret1=0;
         self->convertNodalConnectivityToDynamicGeoTypeMesh(ret0,ret1);
@@ -2427,7 +2431,7 @@ namespace MEDCoupling
         return ret;
       }
 
-      static PyObject *AggregateSortedByTypeMeshesOnSameCoords(PyObject *ms) throw(INTERP_KERNEL::Exception)
+      static PyObject *AggregateSortedByTypeMeshesOnSameCoords(PyObject *ms)
       {
         std::vector<const MEDCoupling::MEDCouplingUMesh *> meshes;
         convertFromPyObjVectorOfObj<const MEDCoupling::MEDCouplingUMesh *>(ms,SWIGTYPE_p_MEDCoupling__MEDCouplingUMesh,"MEDCouplingUMesh",meshes);
@@ -2440,7 +2444,7 @@ namespace MEDCoupling
         return ret;
       }
 
-      static PyObject *MergeUMeshesOnSameCoords(PyObject *ms) throw(INTERP_KERNEL::Exception)
+      static PyObject *MergeUMeshesOnSameCoords(PyObject *ms)
       {
         std::vector<const MEDCoupling::MEDCouplingUMesh *> meshes;
         convertFromPyObjVectorOfObj<const MEDCoupling::MEDCouplingUMesh *>(ms,SWIGTYPE_p_MEDCoupling__MEDCouplingUMesh,"MEDCouplingUMesh",meshes);
@@ -2448,7 +2452,7 @@ namespace MEDCoupling
         return convertMesh(ret, SWIG_POINTER_OWN | 0 );
       }
 
-      static PyObject *FuseUMeshesOnSameCoords(PyObject *ms, int compType) throw(INTERP_KERNEL::Exception)
+      static PyObject *FuseUMeshesOnSameCoords(PyObject *ms, int compType)
       {
         int sz;
         std::vector<const MEDCouplingUMesh *> meshes;
@@ -2465,182 +2469,21 @@ namespace MEDCoupling
         return ret;
       }
 
-      static void PutUMeshesOnSameAggregatedCoords(PyObject *ms) throw(INTERP_KERNEL::Exception)
+      static void PutUMeshesOnSameAggregatedCoords(PyObject *ms)
       {
         std::vector<MEDCouplingUMesh *> meshes;
         convertFromPyObjVectorOfObj<MEDCoupling::MEDCouplingUMesh *>(ms,SWIGTYPE_p_MEDCoupling__MEDCouplingUMesh,"MEDCouplingUMesh",meshes);
         MEDCouplingUMesh::PutUMeshesOnSameAggregatedCoords(meshes);
       }
 
-      static void MergeNodesOnUMeshesSharingSameCoords(PyObject *ms, double eps) throw(INTERP_KERNEL::Exception)
+      static void MergeNodesOnUMeshesSharingSameCoords(PyObject *ms, double eps)
       {
         std::vector<MEDCouplingUMesh *> meshes;
         convertFromPyObjVectorOfObj<MEDCoupling::MEDCouplingUMesh *>(ms,SWIGTYPE_p_MEDCoupling__MEDCouplingUMesh,"MEDCouplingUMesh",meshes);
         MEDCouplingUMesh::MergeNodesOnUMeshesSharingSameCoords(meshes,eps);
       }
 
-      static bool RemoveIdsFromIndexedArrays(PyObject *li, DataArrayInt *arr, DataArrayInt *arrIndx, int offsetForRemoval=0) throw(INTERP_KERNEL::Exception)
-      {
-        int sw;
-        int singleVal;
-        std::vector<int> multiVal;
-        std::pair<int, std::pair<int,int> > slic;
-        MEDCoupling::DataArrayInt *daIntTyypp=0;
-        if(!arrIndx)
-          throw INTERP_KERNEL::Exception("MEDCouplingUMesh::RemoveIdsFromIndexedArrays : null pointer as arrIndex !");
-        convertIntStarOrSliceLikePyObjToCpp(li,arrIndx->getNumberOfTuples()-1,sw,singleVal,multiVal,slic,daIntTyypp);
-        switch(sw)
-          {
-          case 1:
-            return MEDCouplingUMesh::RemoveIdsFromIndexedArrays(&singleVal,&singleVal+1,arr,arrIndx,offsetForRemoval);
-          case 2:
-            return MEDCouplingUMesh::RemoveIdsFromIndexedArrays(&multiVal[0],&multiVal[0]+multiVal.size(),arr,arrIndx,offsetForRemoval);
-          case 4:
-            return MEDCouplingUMesh::RemoveIdsFromIndexedArrays(daIntTyypp->begin(),daIntTyypp->end(),arr,arrIndx,offsetForRemoval);
-          default:
-            throw INTERP_KERNEL::Exception("MEDCouplingUMesh::RemoveIdsFromIndexedArrays : unrecognized type entered, expected list of int, tuple of int or DataArrayInt !");
-          }
-      }
-      
-      static PyObject *ExtractFromIndexedArrays(PyObject *li, const DataArrayInt *arrIn, const DataArrayInt *arrIndxIn) throw(INTERP_KERNEL::Exception)
-      {
-        DataArrayInt *arrOut=0,*arrIndexOut=0;
-        int sw;
-        int singleVal;
-        std::vector<int> multiVal;
-        std::pair<int, std::pair<int,int> > slic;
-        MEDCoupling::DataArrayInt *daIntTyypp=0;
-        if(!arrIndxIn)
-          throw INTERP_KERNEL::Exception("MEDCouplingUMesh::ExtractFromIndexedArrays : null pointer as arrIndxIn !");
-        convertIntStarOrSliceLikePyObjToCpp(li,arrIndxIn->getNumberOfTuples()-1,sw,singleVal,multiVal,slic,daIntTyypp);
-        switch(sw)
-          {
-          case 1:
-            {
-              MEDCouplingUMesh::ExtractFromIndexedArrays(&singleVal,&singleVal+1,arrIn,arrIndxIn,arrOut,arrIndexOut);
-              break;
-            }
-          case 2:
-            {
-              MEDCouplingUMesh::ExtractFromIndexedArrays(&multiVal[0],&multiVal[0]+multiVal.size(),arrIn,arrIndxIn,arrOut,arrIndexOut);
-              break;
-            }
-          case 4:
-            {
-              MEDCouplingUMesh::ExtractFromIndexedArrays(daIntTyypp->begin(),daIntTyypp->end(),arrIn,arrIndxIn,arrOut,arrIndexOut);
-              break;
-            }
-          default:
-            throw INTERP_KERNEL::Exception("MEDCouplingUMesh::ExtractFromIndexedArrays : unrecognized type entered, expected list of int, tuple of int or DataArrayInt !");
-          }
-        PyObject *ret=PyTuple_New(2);
-        PyTuple_SetItem(ret,0,SWIG_NewPointerObj(SWIG_as_voidptr(arrOut),SWIGTYPE_p_MEDCoupling__DataArrayInt, SWIG_POINTER_OWN | 0 ));
-        PyTuple_SetItem(ret,1,SWIG_NewPointerObj(SWIG_as_voidptr(arrIndexOut),SWIGTYPE_p_MEDCoupling__DataArrayInt, SWIG_POINTER_OWN | 0 ));
-        return ret;
-      }
-
-      static PyObject *ExtractFromIndexedArraysSlice(int strt, int stp, int step, const DataArrayInt *arrIn, const DataArrayInt *arrIndxIn) throw(INTERP_KERNEL::Exception)
-      {
-        DataArrayInt *arrOut=0,*arrIndexOut=0;
-        MEDCouplingUMesh::ExtractFromIndexedArraysSlice(strt,stp,step,arrIn,arrIndxIn,arrOut,arrIndexOut);
-        PyObject *ret=PyTuple_New(2);
-        PyTuple_SetItem(ret,0,SWIG_NewPointerObj(SWIG_as_voidptr(arrOut),SWIGTYPE_p_MEDCoupling__DataArrayInt, SWIG_POINTER_OWN | 0 ));
-        PyTuple_SetItem(ret,1,SWIG_NewPointerObj(SWIG_as_voidptr(arrIndexOut),SWIGTYPE_p_MEDCoupling__DataArrayInt, SWIG_POINTER_OWN | 0 ));
-        return ret;
-      }
-
-      static PyObject *ExtractFromIndexedArraysSlice(PyObject *slic, const DataArrayInt *arrIn, const DataArrayInt *arrIndxIn) throw(INTERP_KERNEL::Exception)
-      {
-        if(!PySlice_Check(slic))
-          throw INTERP_KERNEL::Exception("ExtractFromIndexedArraysSlice (wrap) : the first param is not a pyslice !");
-        Py_ssize_t strt=2,stp=2,step=2;
-        if(!arrIndxIn)
-          throw INTERP_KERNEL::Exception("ExtractFromIndexedArraysSlice (wrap) : last array is null !");
-        arrIndxIn->checkAllocated();
-        if(arrIndxIn->getNumberOfComponents()!=1)
-          throw INTERP_KERNEL::Exception("ExtractFromIndexedArraysSlice (wrap) : number of components of last argument must be equal to one !");
-        GetIndicesOfSlice(slic,arrIndxIn->getNumberOfTuples(),&strt,&stp,&step,"ExtractFromIndexedArraysSlice (wrap) : Invalid slice regarding nb of elements !");
-        DataArrayInt *arrOut=0,*arrIndexOut=0;
-        MEDCouplingUMesh::ExtractFromIndexedArraysSlice(strt,stp,step,arrIn,arrIndxIn,arrOut,arrIndexOut);
-        PyObject *ret=PyTuple_New(2);
-        PyTuple_SetItem(ret,0,SWIG_NewPointerObj(SWIG_as_voidptr(arrOut),SWIGTYPE_p_MEDCoupling__DataArrayInt, SWIG_POINTER_OWN | 0 ));
-        PyTuple_SetItem(ret,1,SWIG_NewPointerObj(SWIG_as_voidptr(arrIndexOut),SWIGTYPE_p_MEDCoupling__DataArrayInt, SWIG_POINTER_OWN | 0 ));
-        return ret;
-      }
-
-      static PyObject *SetPartOfIndexedArrays(PyObject *li,
-                                              const DataArrayInt *arrIn, const DataArrayInt *arrIndxIn,
-                                              const DataArrayInt *srcArr, const DataArrayInt *srcArrIndex) throw(INTERP_KERNEL::Exception)
-      {
-        DataArrayInt *arrOut=0,*arrIndexOut=0;
-        int sw;
-        int singleVal;
-        std::vector<int> multiVal;
-        std::pair<int, std::pair<int,int> > slic;
-        MEDCoupling::DataArrayInt *daIntTyypp=0;
-        if(!arrIndxIn)
-          throw INTERP_KERNEL::Exception("MEDCouplingUMesh::SetPartOfIndexedArrays : null pointer as arrIndex !");
-        convertIntStarOrSliceLikePyObjToCpp(li,arrIndxIn->getNumberOfTuples()-1,sw,singleVal,multiVal,slic,daIntTyypp);
-        switch(sw)
-          {
-          case 1:
-            {
-              MEDCouplingUMesh::SetPartOfIndexedArrays(&singleVal,&singleVal+1,arrIn,arrIndxIn,srcArr,srcArrIndex,arrOut,arrIndexOut);
-              break;
-            }
-          case 2:
-            {
-              MEDCouplingUMesh::SetPartOfIndexedArrays(&multiVal[0],&multiVal[0]+multiVal.size(),arrIn,arrIndxIn,srcArr,srcArrIndex,arrOut,arrIndexOut);
-              break;
-            }
-          case 4:
-            {
-              MEDCouplingUMesh::SetPartOfIndexedArrays(daIntTyypp->begin(),daIntTyypp->end(),arrIn,arrIndxIn,srcArr,srcArrIndex,arrOut,arrIndexOut);
-              break;
-            }
-          default:
-            throw INTERP_KERNEL::Exception("MEDCouplingUMesh::SetPartOfIndexedArrays : unrecognized type entered, expected list of int, tuple of int or DataArrayInt !");
-          }
-        PyObject *ret=PyTuple_New(2);
-        PyTuple_SetItem(ret,0,SWIG_NewPointerObj(SWIG_as_voidptr(arrOut),SWIGTYPE_p_MEDCoupling__DataArrayInt, SWIG_POINTER_OWN | 0 ));
-        PyTuple_SetItem(ret,1,SWIG_NewPointerObj(SWIG_as_voidptr(arrIndexOut),SWIGTYPE_p_MEDCoupling__DataArrayInt, SWIG_POINTER_OWN | 0 ));
-        return ret;
-      }
-
-      static void SetPartOfIndexedArraysSameIdx(PyObject *li, DataArrayInt *arrIn, const DataArrayInt *arrIndxIn,
-                                                const DataArrayInt *srcArr, const DataArrayInt *srcArrIndex) throw(INTERP_KERNEL::Exception)
-      {
-        int sw;
-        int singleVal;
-        std::vector<int> multiVal;
-        std::pair<int, std::pair<int,int> > slic;
-        MEDCoupling::DataArrayInt *daIntTyypp=0;
-        if(!arrIndxIn)
-          throw INTERP_KERNEL::Exception("MEDCouplingUMesh::SetPartOfIndexedArraysSameIdx : null pointer as arrIndex !");
-        convertIntStarOrSliceLikePyObjToCpp(li,arrIndxIn->getNumberOfTuples()-1,sw,singleVal,multiVal,slic,daIntTyypp);
-        switch(sw)
-          {
-          case 1:
-            {
-              MEDCouplingUMesh::SetPartOfIndexedArraysSameIdx(&singleVal,&singleVal+1,arrIn,arrIndxIn,srcArr,srcArrIndex);
-              break;
-            }
-          case 2:
-            {
-              MEDCouplingUMesh::SetPartOfIndexedArraysSameIdx(&multiVal[0],&multiVal[0]+multiVal.size(),arrIn,arrIndxIn,srcArr,srcArrIndex);
-              break;
-            }
-          case 4:
-            {
-              MEDCouplingUMesh::SetPartOfIndexedArraysSameIdx(daIntTyypp->begin(),daIntTyypp->end(),arrIn,arrIndxIn,srcArr,srcArrIndex);
-              break;
-            }
-          default:
-            throw INTERP_KERNEL::Exception("MEDCouplingUMesh::SetPartOfIndexedArraysSameIdx : unrecognized type entered, expected list of int, tuple of int or DataArrayInt !");
-          }
-      }
-
-      PyObject *are2DCellsNotCorrectlyOriented(PyObject *vec, bool polyOnly) const throw(INTERP_KERNEL::Exception)
+      PyObject *are2DCellsNotCorrectlyOriented(PyObject *vec, bool polyOnly) const
       {
         double val;
         DataArrayDouble *a;
@@ -2659,7 +2502,7 @@ namespace MEDCoupling
         return SWIG_NewPointerObj(SWIG_as_voidptr(ret),SWIGTYPE_p_MEDCoupling__DataArrayInt, SWIG_POINTER_OWN | 0 );
       }
 
-      void orientCorrectly2DCells(PyObject *vec, bool polyOnly) throw(INTERP_KERNEL::Exception)
+      void orientCorrectly2DCells(PyObject *vec, bool polyOnly)
       {
         double val;
         DataArrayDouble *a;
@@ -2672,7 +2515,7 @@ namespace MEDCoupling
         self->orientCorrectly2DCells(v,polyOnly);
       }
       
-      PyObject *arePolyhedronsNotCorrectlyOriented() const throw(INTERP_KERNEL::Exception)
+      PyObject *arePolyhedronsNotCorrectlyOriented() const
       {
         std::vector<int> cells;
         self->arePolyhedronsNotCorrectlyOriented(cells);
@@ -2682,7 +2525,7 @@ namespace MEDCoupling
         return SWIG_NewPointerObj(SWIG_as_voidptr(ret),SWIGTYPE_p_MEDCoupling__DataArrayInt, SWIG_POINTER_OWN | 0 );
       }
 
-      PyObject *getFastAveragePlaneOfThis() const throw(INTERP_KERNEL::Exception)
+      PyObject *getFastAveragePlaneOfThis() const
       {
         double vec[3];
         double pos[3];
@@ -2693,14 +2536,14 @@ namespace MEDCoupling
         return convertDblArrToPyListOfTuple<double>(vals,3,2);
       }
       
-      static MEDCouplingUMesh *MergeUMeshes(PyObject *li) throw(INTERP_KERNEL::Exception)
+      static MEDCouplingUMesh *MergeUMeshes(PyObject *li)
       {
         std::vector<const MEDCoupling::MEDCouplingUMesh *> tmp;
         convertFromPyObjVectorOfObj<const MEDCoupling::MEDCouplingUMesh *>(li,SWIGTYPE_p_MEDCoupling__MEDCouplingUMesh,"MEDCouplingUMesh",tmp);
         return MEDCouplingUMesh::MergeUMeshes(tmp);
       }
 
-      PyObject *areCellsIncludedIn(const MEDCouplingUMesh *other, int compType) const throw(INTERP_KERNEL::Exception)
+      PyObject *areCellsIncludedIn(const MEDCouplingUMesh *other, int compType) const
       {
         DataArrayInt *ret1;
         bool ret0=self->areCellsIncludedIn(other,compType,ret1);
@@ -2712,7 +2555,7 @@ namespace MEDCoupling
         return ret;
       }
 
-      PyObject *areCellsIncludedInPolicy7(const MEDCouplingUMesh *other) const throw(INTERP_KERNEL::Exception)
+      PyObject *areCellsIncludedInPolicy7(const MEDCouplingUMesh *other) const
       {
         DataArrayInt *ret1;
         bool ret0=self->areCellsIncludedInPolicy7(other,ret1);
@@ -2724,7 +2567,7 @@ namespace MEDCoupling
         return ret;
       }
 
-      PyObject *explode3DMeshTo1D() const throw(INTERP_KERNEL::Exception)
+      PyObject *explode3DMeshTo1D() const
       {
         MCAuto<DataArrayInt> d0=DataArrayInt::New();
         MCAuto<DataArrayInt> d1=DataArrayInt::New();
@@ -2740,7 +2583,7 @@ namespace MEDCoupling
         return ret;
       }
 
-      PyObject *explodeIntoEdges() const throw(INTERP_KERNEL::Exception)
+      PyObject *explodeIntoEdges() const
       {
         MCAuto<DataArrayInt> desc,descIndex,revDesc,revDescIndx;
         MCAuto<MEDCouplingUMesh> m(self->explodeIntoEdges(desc,descIndex,revDesc,revDescIndx));
@@ -2753,7 +2596,7 @@ namespace MEDCoupling
         return ret;
       }
 
-      PyObject *explodeMeshIntoMicroEdges() const throw(INTERP_KERNEL::Exception)
+      PyObject *explodeMeshIntoMicroEdges() const
       {
         MCAuto<DataArrayInt> d0=DataArrayInt::New();
         MCAuto<DataArrayInt> d1=DataArrayInt::New();
@@ -2769,7 +2612,7 @@ namespace MEDCoupling
         return ret;
       }
 
-      PyObject *buildDescendingConnectivity() const throw(INTERP_KERNEL::Exception)
+      PyObject *buildDescendingConnectivity() const
       {
         MCAuto<DataArrayInt> d0=DataArrayInt::New();
         MCAuto<DataArrayInt> d1=DataArrayInt::New();
@@ -2785,7 +2628,7 @@ namespace MEDCoupling
         return ret;
       }
 
-      PyObject *buildDescendingConnectivity2() const throw(INTERP_KERNEL::Exception)
+      PyObject *buildDescendingConnectivity2() const
       {
         MCAuto<DataArrayInt> d0=DataArrayInt::New();
         MCAuto<DataArrayInt> d1=DataArrayInt::New();
@@ -2801,7 +2644,7 @@ namespace MEDCoupling
         return ret;
       }
       
-      PyObject *computeNeighborsOfCells() const throw(INTERP_KERNEL::Exception)
+      PyObject *computeNeighborsOfCells() const
       {
         DataArrayInt *neighbors=0,*neighborsIdx=0;
         self->computeNeighborsOfCells(neighbors,neighborsIdx);
@@ -2811,7 +2654,7 @@ namespace MEDCoupling
         return ret;
       }
 
-      PyObject *computeNeighborsOfNodes() const throw(INTERP_KERNEL::Exception)
+      PyObject *computeNeighborsOfNodes() const
       {
         DataArrayInt *neighbors=0,*neighborsIdx=0;
         self->computeNeighborsOfNodes(neighbors,neighborsIdx);
@@ -2821,7 +2664,7 @@ namespace MEDCoupling
         return ret;
       }
 
-      PyObject *computeEnlargedNeighborsOfNodes() const throw(INTERP_KERNEL::Exception)
+      PyObject *computeEnlargedNeighborsOfNodes() const
       {
         MCAuto<DataArrayInt> neighbors,neighborsIdx;
         self->computeEnlargedNeighborsOfNodes(neighbors,neighborsIdx);
@@ -2831,7 +2674,7 @@ namespace MEDCoupling
         return ret;
       }
       
-      PyObject *computeCellNeighborhoodFromNodesOne(const DataArrayInt *nodeNeigh, const DataArrayInt *nodeNeighI) const throw(INTERP_KERNEL::Exception)
+      PyObject *computeCellNeighborhoodFromNodesOne(const DataArrayInt *nodeNeigh, const DataArrayInt *nodeNeighI) const
       {
         MCAuto<DataArrayInt> cellNeigh,cellNeighIndex;
         self->computeCellNeighborhoodFromNodesOne(nodeNeigh,nodeNeighI,cellNeigh,cellNeighIndex);
@@ -2841,7 +2684,7 @@ namespace MEDCoupling
         return ret;
       }
       
-      static PyObject *ComputeNeighborsOfCellsAdv(const DataArrayInt *desc, const DataArrayInt *descI, const DataArrayInt *revDesc, const DataArrayInt *revDescI) throw(INTERP_KERNEL::Exception)
+      static PyObject *ComputeNeighborsOfCellsAdv(const DataArrayInt *desc, const DataArrayInt *descI, const DataArrayInt *revDesc, const DataArrayInt *revDescI)
       {
         DataArrayInt *neighbors=0,*neighborsIdx=0;
         MEDCouplingUMesh::ComputeNeighborsOfCellsAdv(desc,descI,revDesc,revDescI,neighbors,neighborsIdx);
@@ -2868,7 +2711,7 @@ namespace MEDCoupling
         return ret;
       }
 
-      DataArrayDouble *getPartBarycenterAndOwner(DataArrayInt *da) const throw(INTERP_KERNEL::Exception)
+      DataArrayDouble *getPartBarycenterAndOwner(DataArrayInt *da) const
       {
         if(!da)
           throw INTERP_KERNEL::Exception("Not null DataArrayInt instance expected !");
@@ -2876,7 +2719,7 @@ namespace MEDCoupling
         return self->getPartBarycenterAndOwner(da->getConstPointer(),da->getConstPointer()+da->getNbOfElems());
       }
 
-      DataArrayDouble *getPartMeasureField(bool isAbs, DataArrayInt *da) const throw(INTERP_KERNEL::Exception)
+      DataArrayDouble *getPartMeasureField(bool isAbs, DataArrayInt *da) const
       {
         if(!da)
           throw INTERP_KERNEL::Exception("Not null DataArrayInt instance expected !");
@@ -2884,7 +2727,7 @@ namespace MEDCoupling
         return self->getPartMeasureField(isAbs,da->getConstPointer(),da->getConstPointer()+da->getNbOfElems());
       }
 
-      MEDCouplingFieldDouble *buildPartOrthogonalField(DataArrayInt *da) const throw(INTERP_KERNEL::Exception)
+      MEDCouplingFieldDouble *buildPartOrthogonalField(DataArrayInt *da) const
       {
         if(!da)
           throw INTERP_KERNEL::Exception("Not null DataArrayInt instance expected !");
@@ -2892,7 +2735,7 @@ namespace MEDCoupling
         return self->buildPartOrthogonalField(da->getConstPointer(),da->getConstPointer()+da->getNbOfElems());
       }
 
-      PyObject *getTypesOfPart(DataArrayInt *da) const throw(INTERP_KERNEL::Exception)
+      PyObject *getTypesOfPart(DataArrayInt *da) const
       {
         if(!da)
           throw INTERP_KERNEL::Exception("Not null DataArrayInt instance expected !");
@@ -2905,7 +2748,7 @@ namespace MEDCoupling
         return res;
       }
 
-      DataArrayInt *keepCellIdsByType(INTERP_KERNEL::NormalizedCellType type, DataArrayInt *da) const throw(INTERP_KERNEL::Exception)
+      DataArrayInt *keepCellIdsByType(INTERP_KERNEL::NormalizedCellType type, DataArrayInt *da) const
       {
         if(!da)
           throw INTERP_KERNEL::Exception("Not null DataArrayInt instance expected !");
@@ -2915,7 +2758,7 @@ namespace MEDCoupling
         return ret;
       }
 
-      static PyObject *Intersect2DMeshes(const MEDCouplingUMesh *m1, const MEDCouplingUMesh *m2, double eps) throw(INTERP_KERNEL::Exception)
+      static PyObject *Intersect2DMeshes(const MEDCouplingUMesh *m1, const MEDCouplingUMesh *m2, double eps)
       {
         DataArrayInt *cellNb1=0,*cellNb2=0;
         MEDCouplingUMesh *mret=MEDCouplingUMesh::Intersect2DMeshes(m1,m2,eps,cellNb1,cellNb2);
@@ -2926,7 +2769,7 @@ namespace MEDCoupling
         return ret;
       }
 
-      static PyObject *Intersect2DMeshWith1DLine(const MEDCouplingUMesh *mesh2D, const MEDCouplingUMesh *mesh1D, double eps) throw(INTERP_KERNEL::Exception)
+      static PyObject *Intersect2DMeshWith1DLine(const MEDCouplingUMesh *mesh2D, const MEDCouplingUMesh *mesh1D, double eps)
       {
         MEDCouplingUMesh *splitMesh2D(0),*splitMesh1D(0);
         DataArrayInt *cellIdInMesh2D(0),*cellIdInMesh1D(0);
@@ -2939,7 +2782,7 @@ namespace MEDCoupling
         return ret;
       }
 
-      PyObject *buildSlice3D(PyObject *origin, PyObject *vec, double eps) const throw(INTERP_KERNEL::Exception)
+      PyObject *buildSlice3D(PyObject *origin, PyObject *vec, double eps) const
       {
         int spaceDim=self->getSpaceDimension();
         if(spaceDim!=3)
@@ -2962,7 +2805,7 @@ namespace MEDCoupling
         return ret;
       }
 
-      PyObject *buildSlice3DSurf(PyObject *origin, PyObject *vec, double eps) const throw(INTERP_KERNEL::Exception)
+      PyObject *buildSlice3DSurf(PyObject *origin, PyObject *vec, double eps) const
       {
         int spaceDim=self->getSpaceDimension();
         if(spaceDim!=3)
@@ -2985,7 +2828,7 @@ namespace MEDCoupling
         return ret;
       }
 
-      MEDCouplingUMesh *clipSingle3DCellByPlane(PyObject *origin, PyObject *vec, double eps) const throw(INTERP_KERNEL::Exception)
+      MEDCouplingUMesh *clipSingle3DCellByPlane(PyObject *origin, PyObject *vec, double eps) const
       {
         double val,val2;
         DataArrayDouble *a,*a2;
@@ -3000,7 +2843,7 @@ namespace MEDCoupling
         return ret.retn();
       }
 
-      DataArrayInt *getCellIdsCrossingPlane(PyObject *origin, PyObject *vec, double eps) const throw(INTERP_KERNEL::Exception)
+      DataArrayInt *getCellIdsCrossingPlane(PyObject *origin, PyObject *vec, double eps) const
       {
         int spaceDim=self->getSpaceDimension();
         if(spaceDim!=3)
@@ -3017,7 +2860,7 @@ namespace MEDCoupling
         return self->getCellIdsCrossingPlane(orig,vect,eps);
       }
 
-      void convertToPolyTypes(PyObject *li) throw(INTERP_KERNEL::Exception)
+      void convertToPolyTypes(PyObject *li)
       {
         int sw;
         int pos1;
@@ -3050,11 +2893,11 @@ namespace MEDCoupling
       }      
     }
     void convertAllToPoly();
-    void convertExtrudedPolyhedra() throw(INTERP_KERNEL::Exception);
-    bool unPolyze() throw(INTERP_KERNEL::Exception);
-    void simplifyPolyhedra(double eps) throw(INTERP_KERNEL::Exception);
-    MEDCouplingUMesh *buildSpreadZonesWithPoly() const throw(INTERP_KERNEL::Exception);
-    MEDCouplingUMesh *buildExtrudedMesh(const MEDCouplingUMesh *mesh1D, int policy) throw(INTERP_KERNEL::Exception);
+    void convertExtrudedPolyhedra();
+    bool unPolyze();
+    void simplifyPolyhedra(double eps);
+    MEDCouplingUMesh *buildSpreadZonesWithPoly() const;
+    MEDCouplingUMesh *buildExtrudedMesh(const MEDCouplingUMesh *mesh1D, int policy);
   };
 
   //== MEDCouplingUMesh End
@@ -3064,17 +2907,17 @@ namespace MEDCoupling
   class MEDCouplingMappedExtrudedMesh : public MEDCoupling::MEDCouplingMesh
   {
   public:
-    static MEDCouplingMappedExtrudedMesh *New(const MEDCouplingUMesh *mesh3D, const MEDCouplingUMesh *mesh2D, int cell2DId) throw(INTERP_KERNEL::Exception);
-    static MEDCouplingMappedExtrudedMesh *New(const MEDCouplingCMesh *mesh3D) throw(INTERP_KERNEL::Exception);
-    MEDCouplingUMesh *build3DUnstructuredMesh() const throw(INTERP_KERNEL::Exception);
+    static MEDCouplingMappedExtrudedMesh *New(const MEDCouplingUMesh *mesh3D, const MEDCouplingUMesh *mesh2D, int cell2DId);
+    static MEDCouplingMappedExtrudedMesh *New(const MEDCouplingCMesh *mesh3D);
+    MEDCouplingUMesh *build3DUnstructuredMesh() const;
     int get2DCellIdForExtrusion() const;
     %extend {
-      MEDCouplingMappedExtrudedMesh(const MEDCouplingUMesh *mesh3D, const MEDCouplingUMesh *mesh2D, int cell2DId) throw(INTERP_KERNEL::Exception)
+      MEDCouplingMappedExtrudedMesh(const MEDCouplingUMesh *mesh3D, const MEDCouplingUMesh *mesh2D, int cell2DId)
       {
         return MEDCouplingMappedExtrudedMesh::New(mesh3D,mesh2D,cell2DId);
       }
 
-      MEDCouplingMappedExtrudedMesh(const MEDCouplingCMesh *mesh3D) throw(INTERP_KERNEL::Exception)
+      MEDCouplingMappedExtrudedMesh(const MEDCouplingCMesh *mesh3D)
       {
         return MEDCouplingMappedExtrudedMesh::New(mesh3D);
       }
@@ -3084,33 +2927,33 @@ namespace MEDCoupling
         return MEDCouplingMappedExtrudedMesh::New();
       }
       
-      std::string __str__() const throw(INTERP_KERNEL::Exception)
+      std::string __str__() const
       {
         return self->simpleRepr();
       }
 
-      std::string __repr__() const throw(INTERP_KERNEL::Exception)
+      std::string __repr__() const
       {
         std::ostringstream oss;
         self->reprQuickOverview(oss);
         return oss.str();
       }
       
-      PyObject *getMesh2D() const throw(INTERP_KERNEL::Exception)
+      PyObject *getMesh2D() const
       {
         MEDCouplingUMesh *ret=self->getMesh2D();
         if(ret)
           ret->incrRef();
         return convertMesh(ret, SWIG_POINTER_OWN | 0 );
       }
-      PyObject *getMesh1D() const throw(INTERP_KERNEL::Exception)
+      PyObject *getMesh1D() const
       {
         MEDCouplingUMesh *ret=self->getMesh1D();
         if(ret)
           ret->incrRef();
         return convertMesh(ret, SWIG_POINTER_OWN | 0 );
       }
-      PyObject *getMesh3DIds() const throw(INTERP_KERNEL::Exception)
+      PyObject *getMesh3DIds() const
       {
         DataArrayInt *ret=self->getMesh3DIds();
         if(ret)
@@ -3125,15 +2968,15 @@ namespace MEDCoupling
   class MEDCoupling1GTUMesh : public MEDCoupling::MEDCouplingPointSet
   {
   public:
-    static MEDCoupling1GTUMesh *New(const std::string& name, INTERP_KERNEL::NormalizedCellType type) throw(INTERP_KERNEL::Exception);
-    static MEDCoupling1GTUMesh *New(const MEDCouplingUMesh *m) throw(INTERP_KERNEL::Exception);
-    INTERP_KERNEL::NormalizedCellType getCellModelEnum() const throw(INTERP_KERNEL::Exception);
-    int getNodalConnectivityLength() const throw(INTERP_KERNEL::Exception);
-    virtual void allocateCells(int nbOfCells=0) throw(INTERP_KERNEL::Exception);
-    virtual void checkConsistencyOfConnectivity() const throw(INTERP_KERNEL::Exception);
+    static MEDCoupling1GTUMesh *New(const std::string& name, INTERP_KERNEL::NormalizedCellType type);
+    static MEDCoupling1GTUMesh *New(const MEDCouplingUMesh *m);
+    INTERP_KERNEL::NormalizedCellType getCellModelEnum() const;
+    int getNodalConnectivityLength() const;
+    virtual void allocateCells(int nbOfCells=0);
+    virtual void checkConsistencyOfConnectivity() const;
     %extend
     {
-      virtual void insertNextCell(PyObject *li) throw(INTERP_KERNEL::Exception)
+      virtual void insertNextCell(PyObject *li)
       {
         int szArr,sw,iTypppArr;
         std::vector<int> stdvecTyyppArr;
@@ -3141,14 +2984,14 @@ namespace MEDCoupling
         self->insertNextCell(tmp,tmp+szArr);
       }
 
-      virtual DataArrayInt *getNodalConnectivity() const throw(INTERP_KERNEL::Exception)
+      virtual DataArrayInt *getNodalConnectivity() const
       {
         DataArrayInt *ret=self->getNodalConnectivity();
         if(ret) ret->incrRef();
         return ret;
       }
       
-      static MEDCouplingUMesh *AggregateOnSameCoordsToUMesh(PyObject *li) throw(INTERP_KERNEL::Exception)
+      static MEDCouplingUMesh *AggregateOnSameCoordsToUMesh(PyObject *li)
       {
         std::vector< const MEDCoupling1GTUMesh *> parts;
         convertFromPyObjVectorOfObj<const MEDCoupling::MEDCoupling1GTUMesh *>(li,SWIGTYPE_p_MEDCoupling__MEDCoupling1GTUMesh,"MEDCoupling1GTUMesh",parts);
@@ -3162,15 +3005,15 @@ namespace MEDCoupling
   class MEDCoupling1SGTUMesh : public MEDCoupling::MEDCoupling1GTUMesh
   {
   public:
-    static MEDCoupling1SGTUMesh *New(const std::string& name, INTERP_KERNEL::NormalizedCellType type) throw(INTERP_KERNEL::Exception);
-    static MEDCoupling1SGTUMesh *New(const MEDCouplingUMesh *m) throw(INTERP_KERNEL::Exception);
-    void setNodalConnectivity(DataArrayInt *nodalConn) throw(INTERP_KERNEL::Exception);
-    int getNumberOfNodesPerCell() const throw(INTERP_KERNEL::Exception);
-    static MEDCoupling1SGTUMesh *Merge1SGTUMeshes(const MEDCoupling1SGTUMesh *mesh1, const MEDCoupling1SGTUMesh *mesh2) throw(INTERP_KERNEL::Exception);
-    MEDCoupling1SGTUMesh *buildSetInstanceFromThis(int spaceDim) const throw(INTERP_KERNEL::Exception);
-    MEDCoupling1GTUMesh *computeDualMesh() const throw(INTERP_KERNEL::Exception);
-    MEDCoupling1SGTUMesh *explodeEachHexa8To6Quad4() const throw(INTERP_KERNEL::Exception);
-    DataArrayInt *sortHexa8EachOther() throw(INTERP_KERNEL::Exception);
+    static MEDCoupling1SGTUMesh *New(const std::string& name, INTERP_KERNEL::NormalizedCellType type);
+    static MEDCoupling1SGTUMesh *New(const MEDCouplingUMesh *m);
+    void setNodalConnectivity(DataArrayInt *nodalConn);
+    int getNumberOfNodesPerCell() const;
+    static MEDCoupling1SGTUMesh *Merge1SGTUMeshes(const MEDCoupling1SGTUMesh *mesh1, const MEDCoupling1SGTUMesh *mesh2);
+    MEDCoupling1SGTUMesh *buildSetInstanceFromThis(int spaceDim) const;
+    MEDCoupling1GTUMesh *computeDualMesh() const;
+    MEDCoupling1SGTUMesh *explodeEachHexa8To6Quad4() const;
+    DataArrayInt *sortHexa8EachOther();
     %extend
     {
       MEDCoupling1SGTUMesh()
@@ -3178,29 +3021,29 @@ namespace MEDCoupling
         return MEDCoupling1SGTUMesh::New();
       }
 
-      MEDCoupling1SGTUMesh(const std::string& name, INTERP_KERNEL::NormalizedCellType type) throw(INTERP_KERNEL::Exception)
+      MEDCoupling1SGTUMesh(const std::string& name, INTERP_KERNEL::NormalizedCellType type)
       {
         return MEDCoupling1SGTUMesh::New(name,type);
       }
 
-      MEDCoupling1SGTUMesh(const MEDCouplingUMesh *m) throw(INTERP_KERNEL::Exception)
+      MEDCoupling1SGTUMesh(const MEDCouplingUMesh *m)
       {
         return MEDCoupling1SGTUMesh::New(m);
       }
 
-      std::string __str__() const throw(INTERP_KERNEL::Exception)
+      std::string __str__() const
       {
         return self->simpleRepr();
       }
       
-      std::string __repr__() const throw(INTERP_KERNEL::Exception)
+      std::string __repr__() const
       {
         std::ostringstream oss;
         self->reprQuickOverview(oss);
         return oss.str();
       }
 
-      PyObject *structurizeMe(double eps=1e-12) const throw(INTERP_KERNEL::Exception)
+      PyObject *structurizeMe(double eps=1e-12) const
       {
         DataArrayInt *cellPerm(0),*nodePerm(0);
         MEDCouplingCMesh *retCpp(self->structurizeMe(cellPerm,nodePerm,eps));
@@ -3211,14 +3054,14 @@ namespace MEDCoupling
         return ret;
       }
 
-      static MEDCoupling1SGTUMesh *Merge1SGTUMeshes(PyObject *li) throw(INTERP_KERNEL::Exception)
+      static MEDCoupling1SGTUMesh *Merge1SGTUMeshes(PyObject *li)
       {
         std::vector<const MEDCoupling::MEDCoupling1SGTUMesh *> tmp;
         convertFromPyObjVectorOfObj<const MEDCoupling::MEDCoupling1SGTUMesh *>(li,SWIGTYPE_p_MEDCoupling__MEDCoupling1SGTUMesh,"MEDCoupling1SGTUMesh",tmp);
         return MEDCoupling1SGTUMesh::Merge1SGTUMeshes(tmp);
       }
       
-      static MEDCoupling1SGTUMesh *Merge1SGTUMeshesOnSameCoords(PyObject *li) throw(INTERP_KERNEL::Exception)
+      static MEDCoupling1SGTUMesh *Merge1SGTUMeshesOnSameCoords(PyObject *li)
       {
         std::vector<const MEDCoupling::MEDCoupling1SGTUMesh *> tmp;
         convertFromPyObjVectorOfObj<const MEDCoupling::MEDCoupling1SGTUMesh *>(li,SWIGTYPE_p_MEDCoupling__MEDCoupling1SGTUMesh,"MEDCoupling1SGTUMesh",tmp);
@@ -3234,47 +3077,47 @@ namespace MEDCoupling
   class MEDCoupling1DGTUMesh : public MEDCoupling::MEDCoupling1GTUMesh
   {
   public:
-    static MEDCoupling1DGTUMesh *New(const std::string& name, INTERP_KERNEL::NormalizedCellType type) throw(INTERP_KERNEL::Exception);
-    static MEDCoupling1DGTUMesh *New(const MEDCouplingUMesh *m) throw(INTERP_KERNEL::Exception);
-    void setNodalConnectivity(DataArrayInt *nodalConn, DataArrayInt *nodalConnIndex) throw(INTERP_KERNEL::Exception);
-    MEDCoupling1DGTUMesh *buildSetInstanceFromThis(int spaceDim) const throw(INTERP_KERNEL::Exception);
-    bool isPacked() const throw(INTERP_KERNEL::Exception);
+    static MEDCoupling1DGTUMesh *New(const std::string& name, INTERP_KERNEL::NormalizedCellType type);
+    static MEDCoupling1DGTUMesh *New(const MEDCouplingUMesh *m);
+    void setNodalConnectivity(DataArrayInt *nodalConn, DataArrayInt *nodalConnIndex);
+    MEDCoupling1DGTUMesh *buildSetInstanceFromThis(int spaceDim) const;
+    bool isPacked() const;
     %extend
     {
       MEDCoupling1DGTUMesh()
       {
         return MEDCoupling1DGTUMesh::New();
       }
-      MEDCoupling1DGTUMesh(const std::string& name, INTERP_KERNEL::NormalizedCellType type) throw(INTERP_KERNEL::Exception)
+      MEDCoupling1DGTUMesh(const std::string& name, INTERP_KERNEL::NormalizedCellType type)
       {
         return MEDCoupling1DGTUMesh::New(name,type);
       }
 
-      MEDCoupling1DGTUMesh(const MEDCouplingUMesh *m) throw(INTERP_KERNEL::Exception)
+      MEDCoupling1DGTUMesh(const MEDCouplingUMesh *m)
       {
         return MEDCoupling1DGTUMesh::New(m);
       }
 
-      std::string __str__() const throw(INTERP_KERNEL::Exception)
+      std::string __str__() const
       {
         return self->simpleRepr();
       }
       
-      std::string __repr__() const throw(INTERP_KERNEL::Exception)
+      std::string __repr__() const
       {
         std::ostringstream oss;
         self->reprQuickOverview(oss);
         return oss.str();
       }
 
-      DataArrayInt *getNodalConnectivityIndex() const throw(INTERP_KERNEL::Exception)
+      DataArrayInt *getNodalConnectivityIndex() const
       {
         DataArrayInt *ret=self->getNodalConnectivityIndex();
         if(ret) ret->incrRef();
         return ret;
       }
 
-      PyObject *retrievePackedNodalConnectivity() const throw(INTERP_KERNEL::Exception)
+      PyObject *retrievePackedNodalConnectivity() const
       {
         DataArrayInt *ret1=0,*ret2=0;
         bool ret0=self->retrievePackedNodalConnectivity(ret1,ret2);
@@ -3287,7 +3130,7 @@ namespace MEDCoupling
         return ret;
       }
       
-      PyObject *copyWithNodalConnectivityPacked() const throw(INTERP_KERNEL::Exception)
+      PyObject *copyWithNodalConnectivityPacked() const
       {
         bool ret1;
         MEDCoupling1DGTUMesh *ret0=self->copyWithNodalConnectivityPacked(ret1);
@@ -3298,21 +3141,21 @@ namespace MEDCoupling
         return ret;
       }
 
-      static MEDCoupling1DGTUMesh *Merge1DGTUMeshes(PyObject *li) throw(INTERP_KERNEL::Exception)
+      static MEDCoupling1DGTUMesh *Merge1DGTUMeshes(PyObject *li)
       {
         std::vector<const MEDCoupling::MEDCoupling1DGTUMesh *> tmp;
         convertFromPyObjVectorOfObj<const MEDCoupling::MEDCoupling1DGTUMesh *>(li,SWIGTYPE_p_MEDCoupling__MEDCoupling1DGTUMesh,"MEDCoupling1DGTUMesh",tmp);
         return MEDCoupling1DGTUMesh::Merge1DGTUMeshes(tmp);
       }
       
-      static MEDCoupling1DGTUMesh *Merge1DGTUMeshesOnSameCoords(PyObject *li) throw(INTERP_KERNEL::Exception)
+      static MEDCoupling1DGTUMesh *Merge1DGTUMeshesOnSameCoords(PyObject *li)
       {
         std::vector<const MEDCoupling::MEDCoupling1DGTUMesh *> tmp;
         convertFromPyObjVectorOfObj<const MEDCoupling::MEDCoupling1DGTUMesh *>(li,SWIGTYPE_p_MEDCoupling__MEDCoupling1DGTUMesh,"MEDCoupling1DGTUMesh",tmp);
         return MEDCoupling1DGTUMesh::Merge1DGTUMeshesOnSameCoords(tmp);
       }
       
-      static DataArrayInt *AggregateNodalConnAndShiftNodeIds(PyObject *li, const std::vector<int>& offsetInNodeIdsPerElt) throw(INTERP_KERNEL::Exception)
+      static DataArrayInt *AggregateNodalConnAndShiftNodeIds(PyObject *li, const std::vector<int>& offsetInNodeIdsPerElt)
       {
         std::vector<const MEDCoupling::DataArrayInt *> tmp;
         convertFromPyObjVectorOfObj<const MEDCoupling::DataArrayInt *>(li,SWIGTYPE_p_MEDCoupling__DataArrayInt,"DataArrayInt",tmp);
@@ -3326,24 +3169,24 @@ namespace MEDCoupling
   class MEDCouplingStructuredMesh : public MEDCoupling::MEDCouplingMesh
   {
   public:
-    int getCellIdFromPos(int i, int j, int k) const throw(INTERP_KERNEL::Exception);
-    int getNodeIdFromPos(int i, int j, int k) const throw(INTERP_KERNEL::Exception);
-    int getNumberOfCellsOfSubLevelMesh() const throw(INTERP_KERNEL::Exception);
-    int getSpaceDimensionOnNodeStruct() const throw(INTERP_KERNEL::Exception);
-    double computeSquareness() const throw(INTERP_KERNEL::Exception);
-    virtual std::vector<int> getNodeGridStructure() const throw(INTERP_KERNEL::Exception);
-    std::vector<int> getCellGridStructure() const throw(INTERP_KERNEL::Exception);
-    MEDCoupling1SGTUMesh *build1SGTUnstructured() const throw(INTERP_KERNEL::Exception);
-    std::vector<int> getLocationFromCellId(int cellId) const throw(INTERP_KERNEL::Exception);
-    std::vector<int> getLocationFromNodeId(int cellId) const throw(INTERP_KERNEL::Exception);
-    static INTERP_KERNEL::NormalizedCellType GetGeoTypeGivenMeshDimension(int meshDim) throw(INTERP_KERNEL::Exception);
-    MEDCoupling1SGTUMesh *build1SGTSubLevelMesh() const throw(INTERP_KERNEL::Exception);
-    static int DeduceNumberOfGivenStructure(const std::vector<int>& st) throw(INTERP_KERNEL::Exception);
-    static DataArrayInt *ComputeCornersGhost(const std::vector<int>& st, int ghostLev) throw(INTERP_KERNEL::Exception);
-    static std::vector<int> GetSplitVectFromStruct(const std::vector<int>& strct) throw(INTERP_KERNEL::Exception);
+    int getCellIdFromPos(int i, int j, int k) const;
+    int getNodeIdFromPos(int i, int j, int k) const;
+    int getNumberOfCellsOfSubLevelMesh() const;
+    int getSpaceDimensionOnNodeStruct() const;
+    double computeSquareness() const;
+    virtual std::vector<int> getNodeGridStructure() const;
+    std::vector<int> getCellGridStructure() const;
+    MEDCoupling1SGTUMesh *build1SGTUnstructured() const;
+    std::vector<int> getLocationFromCellId(int cellId) const;
+    std::vector<int> getLocationFromNodeId(int cellId) const;
+    static INTERP_KERNEL::NormalizedCellType GetGeoTypeGivenMeshDimension(int meshDim);
+    MEDCoupling1SGTUMesh *build1SGTSubLevelMesh() const;
+    static int DeduceNumberOfGivenStructure(const std::vector<int>& st);
+    static DataArrayInt *ComputeCornersGhost(const std::vector<int>& st, int ghostLev);
+    static std::vector<int> GetSplitVectFromStruct(const std::vector<int>& strct);
     %extend
     {
-      virtual MEDCouplingStructuredMesh *buildStructuredSubPart(PyObject *cellPart) const throw(INTERP_KERNEL::Exception)
+      virtual MEDCouplingStructuredMesh *buildStructuredSubPart(PyObject *cellPart) const
       {
         int tmpp1=-1,tmpp2=-1;
         std::vector<int> tmp=fillArrayWithPyListInt2(cellPart,tmpp1,tmpp2);
@@ -3367,7 +3210,7 @@ namespace MEDCoupling
         return self->buildStructuredSubPart(inp);
       }
 
-      static DataArrayInt *BuildExplicitIdsFrom(PyObject *st, PyObject *part) throw(INTERP_KERNEL::Exception)
+      static DataArrayInt *BuildExplicitIdsFrom(PyObject *st, PyObject *part)
       {
         std::vector< std::pair<int,int> > inp;
         convertPyToVectorPairInt(part,inp);
@@ -3380,21 +3223,21 @@ namespace MEDCoupling
         return MEDCouplingStructuredMesh::BuildExplicitIdsFrom(tmp5,inp);
       }
 
-      static void MultiplyPartOf(const std::vector<int>& st, PyObject *part, double factor, DataArrayDouble *da) throw(INTERP_KERNEL::Exception)
+      static void MultiplyPartOf(const std::vector<int>& st, PyObject *part, double factor, DataArrayDouble *da)
       {
         std::vector< std::pair<int,int> > inp;
         convertPyToVectorPairInt(part,inp);
         MEDCouplingStructuredMesh::MultiplyPartOf(st,inp,factor,da);
       }
 
-      static void MultiplyPartOfByGhost(const std::vector<int>& st, PyObject *part, int ghostSize, double factor, DataArrayDouble *da) throw(INTERP_KERNEL::Exception)
+      static void MultiplyPartOfByGhost(const std::vector<int>& st, PyObject *part, int ghostSize, double factor, DataArrayDouble *da)
       {
         std::vector< std::pair<int,int> > inp;
         convertPyToVectorPairInt(part,inp);
         MEDCouplingStructuredMesh::MultiplyPartOfByGhost(st,inp,ghostSize,factor,da);
       }
 
-      static PyObject *PutInGhostFormat(int ghostSize, const std::vector<int>& st, PyObject *part) throw(INTERP_KERNEL::Exception)
+      static PyObject *PutInGhostFormat(int ghostSize, const std::vector<int>& st, PyObject *part)
       {
         std::vector< std::pair<int,int> > inp;
         convertPyToVectorPairInt(part,inp);
@@ -3407,28 +3250,28 @@ namespace MEDCoupling
         return ret;
       }
 
-      static DataArrayDouble *ExtractFieldOfDoubleFrom(const std::vector<int>& st, const DataArrayDouble *fieldOfDbl, PyObject *partCompactFormat) throw(INTERP_KERNEL::Exception)
+      static DataArrayDouble *ExtractFieldOfDoubleFrom(const std::vector<int>& st, const DataArrayDouble *fieldOfDbl, PyObject *partCompactFormat)
       {
         std::vector< std::pair<int,int> > inp;
         convertPyToVectorPairInt(partCompactFormat,inp);
         return MEDCouplingStructuredMesh::ExtractFieldOfDoubleFrom(st,fieldOfDbl,inp);
       }
 
-      static void AssignPartOfFieldOfDoubleUsing(const std::vector<int>& st, DataArrayDouble *fieldOfDbl, PyObject *partCompactFormat, const DataArrayDouble *other) throw(INTERP_KERNEL::Exception)
+      static void AssignPartOfFieldOfDoubleUsing(const std::vector<int>& st, DataArrayDouble *fieldOfDbl, PyObject *partCompactFormat, const DataArrayDouble *other)
       {
         std::vector< std::pair<int,int> > inp;
         convertPyToVectorPairInt(partCompactFormat,inp);
         MEDCouplingStructuredMesh::AssignPartOfFieldOfDoubleUsing(st,fieldOfDbl,inp,other);
       }
 
-      static int DeduceNumberOfGivenRangeInCompactFrmt(PyObject *part) throw(INTERP_KERNEL::Exception)
+      static int DeduceNumberOfGivenRangeInCompactFrmt(PyObject *part)
       {
         std::vector< std::pair<int,int> > inp;
         convertPyToVectorPairInt(part,inp);
         return MEDCouplingStructuredMesh::DeduceNumberOfGivenRangeInCompactFrmt(inp);
       }
 
-      static DataArrayInt *Build1GTNodalConnectivity(PyObject *li) throw(INTERP_KERNEL::Exception)
+      static DataArrayInt *Build1GTNodalConnectivity(PyObject *li)
       {
         int szArr,sw,iTypppArr;
         std::vector<int> stdvecTyyppArr;
@@ -3436,7 +3279,7 @@ namespace MEDCoupling
         return MEDCouplingStructuredMesh::Build1GTNodalConnectivity(tmp,tmp+szArr);
       }
 
-      static DataArrayInt *Build1GTNodalConnectivityOfSubLevelMesh(PyObject *li) throw(INTERP_KERNEL::Exception)
+      static DataArrayInt *Build1GTNodalConnectivityOfSubLevelMesh(PyObject *li)
       {
         int szArr,sw,iTypppArr;
         std::vector<int> stdvecTyyppArr;
@@ -3444,14 +3287,14 @@ namespace MEDCoupling
         return MEDCouplingStructuredMesh::Build1GTNodalConnectivityOfSubLevelMesh(tmp,tmp+szArr);
       }
 
-      static std::vector<int> GetDimensionsFromCompactFrmt(PyObject *partCompactFormat) throw(INTERP_KERNEL::Exception)
+      static std::vector<int> GetDimensionsFromCompactFrmt(PyObject *partCompactFormat)
       {
         std::vector< std::pair<int,int> > inp;
         convertPyToVectorPairInt(partCompactFormat,inp);
         return MEDCouplingStructuredMesh::GetDimensionsFromCompactFrmt(inp);
       }
 
-      static PyObject *GetCompactFrmtFromDimensions(const std::vector<int>& dims) throw(INTERP_KERNEL::Exception)
+      static PyObject *GetCompactFrmtFromDimensions(const std::vector<int>& dims)
       {
         std::vector< std::pair<int,int> > ret(MEDCouplingStructuredMesh::GetCompactFrmtFromDimensions(dims));
         PyObject *retPy=PyList_New(ret.size());
@@ -3465,7 +3308,7 @@ namespace MEDCoupling
         return retPy;
       }
 
-      static PyObject *IntersectRanges(PyObject *r1, PyObject *r2) throw(INTERP_KERNEL::Exception)
+      static PyObject *IntersectRanges(PyObject *r1, PyObject *r2)
       {
         std::vector< std::pair<int,int> > r1Cpp,r2Cpp;
         convertPyToVectorPairInt(r1,r1Cpp);
@@ -3490,7 +3333,7 @@ namespace MEDCoupling
         return MEDCouplingStructuredMesh::AreRangesIntersect(r1Cpp,r2Cpp);
       }
 
-      static PyObject *IsPartStructured(PyObject *li, PyObject *st) throw(INTERP_KERNEL::Exception)
+      static PyObject *IsPartStructured(PyObject *li, PyObject *st)
       {
         int szArr,sw,iTypppArr;
         std::vector<int> stdvecTyyppArr;
@@ -3516,7 +3359,7 @@ namespace MEDCoupling
         return ret;
       }
 
-      static PyObject *ChangeReferenceFromGlobalOfCompactFrmt(PyObject *bigInAbs, PyObject *partOfBigInAbs, bool check=true) throw(INTERP_KERNEL::Exception)
+      static PyObject *ChangeReferenceFromGlobalOfCompactFrmt(PyObject *bigInAbs, PyObject *partOfBigInAbs, bool check=true)
       {
         std::vector< std::pair<int,int> > param0,param1,ret;
         convertPyToVectorPairInt(bigInAbs,param0);
@@ -3533,7 +3376,7 @@ namespace MEDCoupling
         return retPy;
       }
 
-      static PyObject *TranslateCompactFrmt(PyObject *part, const std::vector<int>& translation) throw(INTERP_KERNEL::Exception)
+      static PyObject *TranslateCompactFrmt(PyObject *part, const std::vector<int>& translation)
       {
         std::vector< std::pair<int,int> > param0;
         convertPyToVectorPairInt(part,param0);
@@ -3549,7 +3392,7 @@ namespace MEDCoupling
         return retPy;
       }
 
-      static std::vector<int> FindTranslationFrom(PyObject *startingFrom, PyObject *goingTo) throw(INTERP_KERNEL::Exception)
+      static std::vector<int> FindTranslationFrom(PyObject *startingFrom, PyObject *goingTo)
       {
         std::vector< std::pair<int,int> > param0,param1;
         convertPyToVectorPairInt(startingFrom,param0);
@@ -3557,7 +3400,7 @@ namespace MEDCoupling
         return  MEDCouplingStructuredMesh::FindTranslationFrom(param0,param1);
       }
 
-      static PyObject *ChangeReferenceToGlobalOfCompactFrmt(PyObject *bigInAbs, PyObject *partOfBigRelativeToBig, bool check=true) throw(INTERP_KERNEL::Exception)
+      static PyObject *ChangeReferenceToGlobalOfCompactFrmt(PyObject *bigInAbs, PyObject *partOfBigRelativeToBig, bool check=true)
       {
         std::vector< std::pair<int,int> > param0,param1,ret;
         convertPyToVectorPairInt(bigInAbs,param0);
@@ -3583,33 +3426,33 @@ namespace MEDCoupling
   class MEDCouplingCMesh : public MEDCoupling::MEDCouplingStructuredMesh
   {
   public:
-    static MEDCouplingCMesh *New() throw(INTERP_KERNEL::Exception);
-    static MEDCouplingCMesh *New(const std::string& meshName) throw(INTERP_KERNEL::Exception);
+    static MEDCouplingCMesh *New();
+    static MEDCouplingCMesh *New(const std::string& meshName);
     void setCoords(const DataArrayDouble *coordsX,
                    const DataArrayDouble *coordsY=0,
-                   const DataArrayDouble *coordsZ=0) throw(INTERP_KERNEL::Exception);
-    void setCoordsAt(int i, const DataArrayDouble *arr) throw(INTERP_KERNEL::Exception);
-    MEDCouplingCurveLinearMesh *buildCurveLinear() const throw(INTERP_KERNEL::Exception);
+                   const DataArrayDouble *coordsZ=0);
+    void setCoordsAt(int i, const DataArrayDouble *arr);
+    MEDCouplingCurveLinearMesh *buildCurveLinear() const;
     %extend {
-      MEDCouplingCMesh() throw(INTERP_KERNEL::Exception)
+      MEDCouplingCMesh()
       {
         return MEDCouplingCMesh::New();
       }
-      MEDCouplingCMesh(const std::string& meshName) throw(INTERP_KERNEL::Exception)
+      MEDCouplingCMesh(const std::string& meshName)
       {
         return MEDCouplingCMesh::New(meshName);
       }
-      std::string __str__() const throw(INTERP_KERNEL::Exception)
+      std::string __str__() const
       {
         return self->simpleRepr();
       }
-      std::string __repr__() const throw(INTERP_KERNEL::Exception)
+      std::string __repr__() const
       {
         std::ostringstream oss;
         self->reprQuickOverview(oss);
         return oss.str();
       }
-      DataArrayDouble *getCoordsAt(int i) throw(INTERP_KERNEL::Exception)
+      DataArrayDouble *getCoordsAt(int i)
       {
         DataArrayDouble *ret=self->getCoordsAt(i);
         if(ret)
@@ -3626,36 +3469,36 @@ namespace MEDCoupling
   class MEDCouplingCurveLinearMesh : public MEDCoupling::MEDCouplingStructuredMesh
   {
   public:
-    static MEDCouplingCurveLinearMesh *New() throw(INTERP_KERNEL::Exception);
-    static MEDCouplingCurveLinearMesh *New(const std::string& meshName) throw(INTERP_KERNEL::Exception);
-    void setCoords(const DataArrayDouble *coords) throw(INTERP_KERNEL::Exception);
+    static MEDCouplingCurveLinearMesh *New();
+    static MEDCouplingCurveLinearMesh *New(const std::string& meshName);
+    void setCoords(const DataArrayDouble *coords);
     %extend {
-      MEDCouplingCurveLinearMesh() throw(INTERP_KERNEL::Exception)
+      MEDCouplingCurveLinearMesh()
       {
         return MEDCouplingCurveLinearMesh::New();
       }
-      MEDCouplingCurveLinearMesh(const std::string& meshName) throw(INTERP_KERNEL::Exception)
+      MEDCouplingCurveLinearMesh(const std::string& meshName)
       {
         return MEDCouplingCurveLinearMesh::New(meshName);
       }
-      std::string __str__() const throw(INTERP_KERNEL::Exception) 
+      std::string __str__() const 
       {
         return self->simpleRepr();
       }
-      std::string __repr__() const throw(INTERP_KERNEL::Exception)
+      std::string __repr__() const
       {
         std::ostringstream oss;
         self->reprQuickOverview(oss);
         return oss.str();
       }
-      DataArrayDouble *getCoords() throw(INTERP_KERNEL::Exception)
+      DataArrayDouble *getCoords()
       {
         DataArrayDouble *ret=self->getCoords();
         if(ret)
           ret->incrRef();
         return ret;
       }
-      void setNodeGridStructure(PyObject *gridStruct) throw(INTERP_KERNEL::Exception)
+      void setNodeGridStructure(PyObject *gridStruct)
       {
         int szArr,sw,iTypppArr;
         std::vector<int> stdvecTyyppArr;
@@ -3672,26 +3515,26 @@ namespace MEDCoupling
   class MEDCouplingIMesh : public MEDCoupling::MEDCouplingStructuredMesh
   {
   public:
-    static MEDCouplingIMesh *New() throw(INTERP_KERNEL::Exception);
+    static MEDCouplingIMesh *New();
     //
-    void setSpaceDimension(int spaceDim) throw(INTERP_KERNEL::Exception);
-    std::vector<int> getNodeStruct() const throw(INTERP_KERNEL::Exception);
-    std::vector<double> getOrigin() const throw(INTERP_KERNEL::Exception);
-    std::vector<double> getDXYZ() const throw(INTERP_KERNEL::Exception);
-    void setAxisUnit(const std::string& unitName) throw(INTERP_KERNEL::Exception);
-    std::string getAxisUnit() const throw(INTERP_KERNEL::Exception);
-    double getMeasureOfAnyCell() const throw(INTERP_KERNEL::Exception);
-    MEDCouplingCMesh *convertToCartesian() const throw(INTERP_KERNEL::Exception);
-    void refineWithFactor(const std::vector<int>& factors) throw(INTERP_KERNEL::Exception);
-    MEDCouplingIMesh *asSingleCell() const throw(INTERP_KERNEL::Exception);
-    MEDCouplingIMesh *buildWithGhost(int ghostLev) const throw(INTERP_KERNEL::Exception);
+    void setSpaceDimension(int spaceDim);
+    std::vector<int> getNodeStruct() const;
+    std::vector<double> getOrigin() const;
+    std::vector<double> getDXYZ() const;
+    void setAxisUnit(const std::string& unitName);
+    std::string getAxisUnit() const;
+    double getMeasureOfAnyCell() const;
+    MEDCouplingCMesh *convertToCartesian() const;
+    void refineWithFactor(const std::vector<int>& factors);
+    MEDCouplingIMesh *asSingleCell() const;
+    MEDCouplingIMesh *buildWithGhost(int ghostLev) const;
     %extend
     {
       MEDCouplingIMesh()
       {
         return MEDCouplingIMesh::New();
       }
-      static MEDCouplingIMesh *New(const std::string& meshName, int spaceDim, PyObject *nodeStrct, PyObject *origin, PyObject *dxyz) throw(INTERP_KERNEL::Exception)
+      static MEDCouplingIMesh *New(const std::string& meshName, int spaceDim, PyObject *nodeStrct, PyObject *origin, PyObject *dxyz)
       {
         static const char msg0[]="MEDCouplingIMesh::New : error on 'origin' parameter !";
         static const char msg1[]="MEDCouplingIMesh::New : error on 'dxyz' parameter !";
@@ -3710,12 +3553,12 @@ namespace MEDCoupling
         return MEDCouplingIMesh::New(meshName,spaceDim,nodeStrctPtr,nodeStrctPtr+sz,originPtr,originPtr+sz1,dxyzPtr,dxyzPtr+sz2);
       }
 
-      MEDCouplingIMesh(const std::string& meshName, int spaceDim, PyObject *nodeStrct, PyObject *origin, PyObject *dxyz) throw(INTERP_KERNEL::Exception)
+      MEDCouplingIMesh(const std::string& meshName, int spaceDim, PyObject *nodeStrct, PyObject *origin, PyObject *dxyz)
       {
         return MEDCoupling_MEDCouplingIMesh_New__SWIG_1(meshName,spaceDim,nodeStrct,origin,dxyz);
       }
 
-      void setNodeStruct(PyObject *nodeStrct) throw(INTERP_KERNEL::Exception)
+      void setNodeStruct(PyObject *nodeStrct)
       {
         int sw,sz,val0;
         std::vector<int> bb0;
@@ -3723,7 +3566,7 @@ namespace MEDCoupling
         self->setNodeStruct(nodeStrctPtr,nodeStrctPtr+sz);
       }
 
-      void setOrigin(PyObject *origin) throw(INTERP_KERNEL::Exception)
+      void setOrigin(PyObject *origin)
       {
         static const char msg[]="MEDCouplingIMesh::setOrigin : invalid input 'origin' parameter ! integer, float, list/tuple of float, DataArrayDouble or DataArrayDoubleTuple supported !";
         double val;
@@ -3735,7 +3578,7 @@ namespace MEDCoupling
         self->setOrigin(originPtr,originPtr+nbTuples);
       }
       
-      void setDXYZ(PyObject *dxyz) throw(INTERP_KERNEL::Exception)
+      void setDXYZ(PyObject *dxyz)
       {
         static const char msg[]="MEDCouplingIMesh::setDXYZ : invalid input 'dxyz' parameter ! integer, float, list/tuple of float, DataArrayDouble or DataArrayDoubleTuple supported !";
         double val;
@@ -3747,46 +3590,46 @@ namespace MEDCoupling
         self->setDXYZ(originPtr,originPtr+nbTuples);
       }
 
-      static void CondenseFineToCoarse(const std::vector<int>& coarseSt, const DataArrayDouble *fineDA, PyObject *fineLocInCoarse, const std::vector<int>& facts, DataArrayDouble *coarseDA) throw(INTERP_KERNEL::Exception)
+      static void CondenseFineToCoarse(const std::vector<int>& coarseSt, const DataArrayDouble *fineDA, PyObject *fineLocInCoarse, const std::vector<int>& facts, DataArrayDouble *coarseDA)
       {
         std::vector< std::pair<int,int> > inp;
         convertPyToVectorPairInt(fineLocInCoarse,inp);
         MEDCouplingIMesh::CondenseFineToCoarse(coarseSt,fineDA,inp,facts,coarseDA);
       }
 
-      static void CondenseFineToCoarseGhost(const std::vector<int>& coarseSt, const DataArrayDouble *fineDA, PyObject *fineLocInCoarse, const std::vector<int>& facts, DataArrayDouble *coarseDA, int ghostSize) throw(INTERP_KERNEL::Exception)
+      static void CondenseFineToCoarseGhost(const std::vector<int>& coarseSt, const DataArrayDouble *fineDA, PyObject *fineLocInCoarse, const std::vector<int>& facts, DataArrayDouble *coarseDA, int ghostSize)
       {
         std::vector< std::pair<int,int> > inp;
         convertPyToVectorPairInt(fineLocInCoarse,inp);
         MEDCouplingIMesh::CondenseFineToCoarseGhost(coarseSt,fineDA,inp,facts,coarseDA,ghostSize);
       }
 
-      static void SpreadCoarseToFine(const DataArrayDouble *coarseDA, const std::vector<int>& coarseSt, DataArrayDouble *fineDA, PyObject *fineLocInCoarse, const std::vector<int>& facts) throw(INTERP_KERNEL::Exception)
+      static void SpreadCoarseToFine(const DataArrayDouble *coarseDA, const std::vector<int>& coarseSt, DataArrayDouble *fineDA, PyObject *fineLocInCoarse, const std::vector<int>& facts)
       {
         std::vector< std::pair<int,int> > inp;
         convertPyToVectorPairInt(fineLocInCoarse,inp);
         MEDCouplingIMesh::SpreadCoarseToFine(coarseDA,coarseSt,fineDA,inp,facts);
       }
 
-      static void SpreadCoarseToFineGhost(const DataArrayDouble *coarseDA, const std::vector<int>& coarseSt, DataArrayDouble *fineDA, PyObject *fineLocInCoarse, const std::vector<int>& facts, int ghostSize) throw(INTERP_KERNEL::Exception)
+      static void SpreadCoarseToFineGhost(const DataArrayDouble *coarseDA, const std::vector<int>& coarseSt, DataArrayDouble *fineDA, PyObject *fineLocInCoarse, const std::vector<int>& facts, int ghostSize)
       {
         std::vector< std::pair<int,int> > inp;
         convertPyToVectorPairInt(fineLocInCoarse,inp);
         MEDCouplingIMesh::SpreadCoarseToFineGhost(coarseDA,coarseSt,fineDA,inp,facts,ghostSize);
       }
 
-      static void SpreadCoarseToFineGhostZone(const DataArrayDouble *coarseDA, const std::vector<int>& coarseSt, DataArrayDouble *fineDA, PyObject *fineLocInCoarse, const std::vector<int>& facts, int ghostSize) throw(INTERP_KERNEL::Exception)
+      static void SpreadCoarseToFineGhostZone(const DataArrayDouble *coarseDA, const std::vector<int>& coarseSt, DataArrayDouble *fineDA, PyObject *fineLocInCoarse, const std::vector<int>& facts, int ghostSize)
       {
         std::vector< std::pair<int,int> > inp;
         convertPyToVectorPairInt(fineLocInCoarse,inp);
         MEDCouplingIMesh::SpreadCoarseToFineGhostZone(coarseDA,coarseSt,fineDA,inp,facts,ghostSize);
       }
 
-      std::string __str__() const throw(INTERP_KERNEL::Exception)
+      std::string __str__() const
       {
         return self->simpleRepr();
       }
-      std::string __repr__() const throw(INTERP_KERNEL::Exception)
+      std::string __repr__() const
       {
         std::ostringstream oss;
         self->reprQuickOverview(oss);
@@ -3804,32 +3647,32 @@ namespace MEDCoupling
   class MEDCouplingField : public MEDCoupling::RefCountObject, public MEDCoupling::TimeLabel
   {
   public:
-    virtual void checkConsistencyLight() const throw(INTERP_KERNEL::Exception);
-    virtual bool areCompatibleForMerge(const MEDCouplingField *other) const throw(INTERP_KERNEL::Exception);
-    virtual void copyTinyStringsFrom(const MEDCouplingField *other) throw(INTERP_KERNEL::Exception);
-    void setMesh(const MEDCoupling::MEDCouplingMesh *mesh) throw(INTERP_KERNEL::Exception);
-    void setName(const char *name) throw(INTERP_KERNEL::Exception);
-    std::string getDescription() const throw(INTERP_KERNEL::Exception);
-    void setDescription(const char *desc) throw(INTERP_KERNEL::Exception);
-    std::string getName() const throw(INTERP_KERNEL::Exception);
-    TypeOfField getTypeOfField() const throw(INTERP_KERNEL::Exception);
-    NatureOfField getNature() const throw(INTERP_KERNEL::Exception);
-    virtual void setNature(NatureOfField nat) throw(INTERP_KERNEL::Exception);
-    DataArrayDouble *getLocalizationOfDiscr() const throw(INTERP_KERNEL::Exception);
-    MEDCouplingFieldDouble *buildMeasureField(bool isAbs) const throw(INTERP_KERNEL::Exception);
-    int getNumberOfTuplesExpected() const throw(INTERP_KERNEL::Exception);
-    int getNumberOfMeshPlacesExpected() const throw(INTERP_KERNEL::Exception);
+    virtual void checkConsistencyLight() const;
+    virtual bool areCompatibleForMerge(const MEDCouplingField *other) const;
+    virtual void copyTinyStringsFrom(const MEDCouplingField *other);
+    void setMesh(const MEDCoupling::MEDCouplingMesh *mesh);
+    void setName(const char *name);
+    std::string getDescription() const;
+    void setDescription(const char *desc);
+    std::string getName() const;
+    TypeOfField getTypeOfField() const;
+    NatureOfField getNature() const;
+    virtual void setNature(NatureOfField nat);
+    DataArrayDouble *getLocalizationOfDiscr() const;
+    MEDCouplingFieldDouble *buildMeasureField(bool isAbs) const;
+    int getNumberOfTuplesExpected() const;
+    int getNumberOfMeshPlacesExpected() const;
     void setGaussLocalizationOnType(INTERP_KERNEL::NormalizedCellType type, const std::vector<double>& refCoo,
-                                    const std::vector<double>& gsCoo, const std::vector<double>& wg) throw(INTERP_KERNEL::Exception);
-    void clearGaussLocalizations() throw(INTERP_KERNEL::Exception);
-    MEDCouplingGaussLocalization& getGaussLocalization(int locId) throw(INTERP_KERNEL::Exception);
-    int getNbOfGaussLocalization() const throw(INTERP_KERNEL::Exception);
-    int getGaussLocalizationIdOfOneCell(int cellId) const throw(INTERP_KERNEL::Exception);
-    const MEDCouplingGaussLocalization& getGaussLocalization(int locId) const throw(INTERP_KERNEL::Exception);
-    int getGaussLocalizationIdOfOneType(INTERP_KERNEL::NormalizedCellType type) const throw(INTERP_KERNEL::Exception);
+                                    const std::vector<double>& gsCoo, const std::vector<double>& wg);
+    void clearGaussLocalizations();
+    MEDCouplingGaussLocalization& getGaussLocalization(int locId);
+    int getNbOfGaussLocalization() const;
+    int getGaussLocalizationIdOfOneCell(int cellId) const;
+    const MEDCouplingGaussLocalization& getGaussLocalization(int locId) const;
+    int getGaussLocalizationIdOfOneType(INTERP_KERNEL::NormalizedCellType type) const;
     void setDiscretization(MEDCouplingFieldDiscretization *newDisc);
     %extend {
-      PyObject *getMesh() const throw(INTERP_KERNEL::Exception)
+      PyObject *getMesh() const
       {
         MEDCouplingMesh *ret1=const_cast<MEDCouplingMesh *>(self->getMesh());
         if(ret1)
@@ -3837,7 +3680,7 @@ namespace MEDCoupling
         return convertMesh(ret1,SWIG_POINTER_OWN | 0 );
       }
 
-      PyObject *getDiscretization() throw(INTERP_KERNEL::Exception)
+      PyObject *getDiscretization()
       {
         MEDCouplingFieldDiscretization *ret=self->getDiscretization();
         if(ret)
@@ -3845,13 +3688,13 @@ namespace MEDCoupling
         return convertFieldDiscretization(ret,SWIG_POINTER_OWN | 0 );
       }
 
-      PyObject *getGaussLocalizationIdsOfOneType(INTERP_KERNEL::NormalizedCellType type) const throw(INTERP_KERNEL::Exception)
+      PyObject *getGaussLocalizationIdsOfOneType(INTERP_KERNEL::NormalizedCellType type) const
       {
         std::set<int> ret=self->getGaussLocalizationIdsOfOneType(type);
         return convertIntArrToPyList3(ret);
       }
 
-      PyObject *buildSubMeshData(PyObject *li) const throw(INTERP_KERNEL::Exception)
+      PyObject *buildSubMeshData(PyObject *li) const
       {
         DataArrayInt *ret1=0;
         MEDCouplingMesh *ret0=0;
@@ -3877,7 +3720,7 @@ namespace MEDCoupling
         return res;
       }
 
-      PyObject *buildSubMeshDataRange(int begin, int end, int step) const throw(INTERP_KERNEL::Exception)
+      PyObject *buildSubMeshDataRange(int begin, int end, int step) const
       {
         DataArrayInt *ret1=0;
         int bb,ee,ss;
@@ -3903,7 +3746,7 @@ namespace MEDCoupling
       }
 
       void setGaussLocalizationOnCells(PyObject *li, const std::vector<double>& refCoo,
-                                       const std::vector<double>& gsCoo, const std::vector<double>& wg) throw(INTERP_KERNEL::Exception)
+                                       const std::vector<double>& gsCoo, const std::vector<double>& wg)
       {
         void *da=0;
         int res1=SWIG_ConvertPtr(li,&da,SWIGTYPE_p_MEDCoupling__DataArrayInt, 0 |  0 );
@@ -3923,7 +3766,7 @@ namespace MEDCoupling
           }
       }
 
-      PyObject *getCellIdsHavingGaussLocalization(int locId) const throw(INTERP_KERNEL::Exception)
+      PyObject *getCellIdsHavingGaussLocalization(int locId) const
       {
         std::vector<int> tmp;
         self->getCellIdsHavingGaussLocalization(locId,tmp);
@@ -3933,7 +3776,7 @@ namespace MEDCoupling
         return SWIG_NewPointerObj(SWIG_as_voidptr(ret),SWIGTYPE_p_MEDCoupling__DataArrayInt, SWIG_POINTER_OWN | 0 );
       }
       
-      int getNumberOfTuplesExpectedRegardingCode(PyObject *code, PyObject *idsPerType) const throw(INTERP_KERNEL::Exception)
+      int getNumberOfTuplesExpectedRegardingCode(PyObject *code, PyObject *idsPerType) const
       {
         std::vector<int> inp0;
         convertPyToNewIntArr4(code,1,3,inp0);
@@ -3947,49 +3790,49 @@ namespace MEDCoupling
   class MEDCouplingFieldTemplate : public MEDCoupling::MEDCouplingField
   {
   public:
-    static MEDCouplingFieldTemplate *New(const MEDCouplingFieldDouble& f) throw(INTERP_KERNEL::Exception);
-    static MEDCouplingFieldTemplate *New(const MEDCouplingFieldFloat& f) throw(INTERP_KERNEL::Exception);
-    static MEDCouplingFieldTemplate *New(const MEDCouplingFieldInt& f) throw(INTERP_KERNEL::Exception);
+    static MEDCouplingFieldTemplate *New(const MEDCouplingFieldDouble& f);
+    static MEDCouplingFieldTemplate *New(const MEDCouplingFieldFloat& f);
+    static MEDCouplingFieldTemplate *New(const MEDCouplingFieldInt& f);
     static MEDCouplingFieldTemplate *New(TypeOfField type);
-    std::string simpleRepr() const throw(INTERP_KERNEL::Exception);
-    std::string advancedRepr() const throw(INTERP_KERNEL::Exception);
-    bool isEqual(const MEDCouplingFieldTemplate *other, double meshPrec) const throw(INTERP_KERNEL::Exception);
-    bool isEqualWithoutConsideringStr(const MEDCouplingFieldTemplate *other, double meshPrec) const throw(INTERP_KERNEL::Exception);
+    std::string simpleRepr() const;
+    std::string advancedRepr() const;
+    bool isEqual(const MEDCouplingFieldTemplate *other, double meshPrec) const;
+    bool isEqualWithoutConsideringStr(const MEDCouplingFieldTemplate *other, double meshPrec) const;
     %extend
        {
-         MEDCouplingFieldTemplate(const MEDCouplingFieldDouble& f) throw(INTERP_KERNEL::Exception)
+         MEDCouplingFieldTemplate(const MEDCouplingFieldDouble& f)
          {
            return MEDCouplingFieldTemplate::New(f);
          }
 
-         MEDCouplingFieldTemplate(const MEDCouplingFieldFloat& f) throw(INTERP_KERNEL::Exception)
+         MEDCouplingFieldTemplate(const MEDCouplingFieldFloat& f)
          {
            return MEDCouplingFieldTemplate::New(f);
          }
          
-         MEDCouplingFieldTemplate(const MEDCouplingFieldInt& f) throw(INTERP_KERNEL::Exception)
+         MEDCouplingFieldTemplate(const MEDCouplingFieldInt& f)
          {
            return MEDCouplingFieldTemplate::New(f);
          }
          
-         MEDCouplingFieldTemplate(TypeOfField type) throw(INTERP_KERNEL::Exception)
+         MEDCouplingFieldTemplate(TypeOfField type)
          {
            return MEDCouplingFieldTemplate::New(type);
          }
          
-         std::string __str__() const throw(INTERP_KERNEL::Exception)
+         std::string __str__() const
          {
            return self->simpleRepr();
          }
          
-         std::string __repr__() const throw(INTERP_KERNEL::Exception)
+         std::string __repr__() const
          {
            std::ostringstream oss;
            self->reprQuickOverview(oss);
            return oss.str();
          }
 
-         PyObject *isEqualIfNotWhy(const MEDCouplingFieldTemplate *other, double meshPrec) const throw(INTERP_KERNEL::Exception)
+         PyObject *isEqualIfNotWhy(const MEDCouplingFieldTemplate *other, double meshPrec) const
          {
            std::string ret1;
            bool ret0=self->isEqualIfNotWhy(other,meshPrec,ret1);
@@ -4007,7 +3850,7 @@ namespace MEDCoupling
  class MEDCouplingFieldT : public MEDCoupling::MEDCouplingField
   {
   public:
-    TypeOfTimeDiscretization getTimeDiscretization() const throw(INTERP_KERNEL::Exception);
+    TypeOfTimeDiscretization getTimeDiscretization() const;
   protected:
     MEDCouplingFieldT();
     ~MEDCouplingFieldT();
@@ -4025,102 +3868,102 @@ namespace MEDCoupling
   public:
     static MEDCouplingFieldDouble *New(TypeOfField type, TypeOfTimeDiscretization td=ONE_TIME);
     static MEDCouplingFieldDouble *New(const MEDCouplingFieldTemplate& ft, TypeOfTimeDiscretization td=ONE_TIME);
-    bool isEqual(const MEDCouplingFieldDouble *other, double meshPrec, double valsPrec) const throw(INTERP_KERNEL::Exception);
-    bool isEqualWithoutConsideringStr(const MEDCouplingFieldDouble *other, double meshPrec, double valsPrec) const throw(INTERP_KERNEL::Exception);
+    bool isEqual(const MEDCouplingFieldDouble *other, double meshPrec, double valsPrec) const;
+    bool isEqualWithoutConsideringStr(const MEDCouplingFieldDouble *other, double meshPrec, double valsPrec) const;
     void setTimeUnit(const std::string& unit);
     std::string getTimeUnit() const;
-    void synchronizeTimeWithSupport() throw(INTERP_KERNEL::Exception);
-    void copyTinyAttrFrom(const MEDCouplingFieldDouble *other) throw(INTERP_KERNEL::Exception);
-    void copyAllTinyAttrFrom(const MEDCouplingFieldDouble *other) throw(INTERP_KERNEL::Exception);
-    std::string simpleRepr() const throw(INTERP_KERNEL::Exception);
-    std::string advancedRepr() const throw(INTERP_KERNEL::Exception);
-    std::string  writeVTK(const std::string& fileName, bool isBinary=true) const throw(INTERP_KERNEL::Exception);
-    MEDCouplingFieldInt *convertToIntField() const throw(INTERP_KERNEL::Exception);
-    MEDCouplingFieldFloat *convertToFloatField() const throw(INTERP_KERNEL::Exception);
+    void synchronizeTimeWithSupport();
+    void copyTinyAttrFrom(const MEDCouplingFieldDouble *other);
+    void copyAllTinyAttrFrom(const MEDCouplingFieldDouble *other);
+    std::string simpleRepr() const;
+    std::string advancedRepr() const;
+    std::string  writeVTK(const std::string& fileName, bool isBinary=true) const;
+    MEDCouplingFieldInt *convertToIntField() const;
+    MEDCouplingFieldFloat *convertToFloatField() const;
     MEDCouplingFieldDouble *clone(bool recDeepCpy) const;
     MEDCouplingFieldDouble *cloneWithMesh(bool recDeepCpy) const;
     MEDCouplingFieldDouble *deepCopy() const;
-    MEDCouplingFieldDouble *buildNewTimeReprFromThis(TypeOfTimeDiscretization td, bool deepCopy) const throw(INTERP_KERNEL::Exception);
-    MEDCouplingFieldDouble *nodeToCellDiscretization() const throw(INTERP_KERNEL::Exception);
-    MEDCouplingFieldDouble *cellToNodeDiscretization() const throw(INTERP_KERNEL::Exception);
-    double getIJ(int tupleId, int compoId) const throw(INTERP_KERNEL::Exception);
-    double getIJK(int cellId, int nodeIdInCell, int compoId) const throw(INTERP_KERNEL::Exception);
-    void synchronizeTimeWithMesh() throw(INTERP_KERNEL::Exception);
-    void setArray(DataArrayDouble *array) throw(INTERP_KERNEL::Exception);
-    void setEndArray(DataArrayDouble *array) throw(INTERP_KERNEL::Exception);
-    void setTime(double val, int iteration, int order) throw(INTERP_KERNEL::Exception);
-    void setStartTime(double val, int iteration, int order) throw(INTERP_KERNEL::Exception);
-    void setEndTime(double val, int iteration, int order) throw(INTERP_KERNEL::Exception);
-    void applyLin(double a, double b, int compoId) throw(INTERP_KERNEL::Exception);
-    void applyLin(double a, double b) throw(INTERP_KERNEL::Exception);
-    int getNumberOfComponents() const throw(INTERP_KERNEL::Exception);
-    int getNumberOfTuples() const throw(INTERP_KERNEL::Exception);
-    int getNumberOfValues() const throw(INTERP_KERNEL::Exception);
-    void setTimeTolerance(double val) throw(INTERP_KERNEL::Exception);
-    double getTimeTolerance() const throw(INTERP_KERNEL::Exception);
-    void setIteration(int it) throw(INTERP_KERNEL::Exception);
-    void setEndIteration(int it) throw(INTERP_KERNEL::Exception);
-    void setOrder(int order) throw(INTERP_KERNEL::Exception);
-    void setEndOrder(int order) throw(INTERP_KERNEL::Exception);
-    void setTimeValue(double val) throw(INTERP_KERNEL::Exception);
-    void setEndTimeValue(double val) throw(INTERP_KERNEL::Exception);
-    void changeUnderlyingMesh(const MEDCouplingMesh *other, int levOfCheck, double precOnMesh, double eps=1e-15) throw(INTERP_KERNEL::Exception);
-    void substractInPlaceDM(const MEDCouplingFieldDouble *f, int levOfCheck, double precOnMesh, double eps=1e-15) throw(INTERP_KERNEL::Exception);
-    bool mergeNodes(double eps, double epsOnVals=1e-15) throw(INTERP_KERNEL::Exception);
-    bool mergeNodesCenter(double eps, double epsOnVals=1e-15) throw(INTERP_KERNEL::Exception);
-    bool zipCoords(double epsOnVals=1e-15) throw(INTERP_KERNEL::Exception);
-    bool zipConnectivity(int compType,double epsOnVals=1e-15) throw(INTERP_KERNEL::Exception);
-    bool simplexize(int policy) throw(INTERP_KERNEL::Exception);
-    MEDCouplingFieldDouble *doublyContractedProduct() const throw(INTERP_KERNEL::Exception);
-    MEDCouplingFieldDouble *determinant() const throw(INTERP_KERNEL::Exception);
-    MEDCouplingFieldDouble *eigenValues() const throw(INTERP_KERNEL::Exception);
-    MEDCouplingFieldDouble *eigenVectors() const throw(INTERP_KERNEL::Exception);
-    MEDCouplingFieldDouble *inverse() const throw(INTERP_KERNEL::Exception);
-    MEDCouplingFieldDouble *trace() const throw(INTERP_KERNEL::Exception);
-    MEDCouplingFieldDouble *deviator() const throw(INTERP_KERNEL::Exception);
-    MEDCouplingFieldDouble *magnitude() const throw(INTERP_KERNEL::Exception);
-    MEDCouplingFieldDouble *maxPerTuple() const throw(INTERP_KERNEL::Exception);
-    void changeNbOfComponents(int newNbOfComp, double dftValue=0.) throw(INTERP_KERNEL::Exception);
-    void sortPerTuple(bool asc) throw(INTERP_KERNEL::Exception);
-    MEDCouplingFieldDouble &operator=(double value) throw(INTERP_KERNEL::Exception);
-    void fillFromAnalytic(int nbOfComp, const std::string& func) throw(INTERP_KERNEL::Exception);
-    void fillFromAnalyticCompo(int nbOfComp, const std::string& func) throw(INTERP_KERNEL::Exception);
-    void fillFromAnalyticNamedCompo(int nbOfComp, const std::vector<std::string>& varsOrder, const std::string& func) throw(INTERP_KERNEL::Exception);
-    void applyFunc(int nbOfComp, const std::string& func) throw(INTERP_KERNEL::Exception);
-    void applyFuncCompo(int nbOfComp, const std::string& func) throw(INTERP_KERNEL::Exception);
-    void applyFuncNamedCompo(int nbOfComp, const std::vector<std::string>& varsOrder, const std::string& func) throw(INTERP_KERNEL::Exception);
-    void applyFunc(int nbOfComp, double val) throw(INTERP_KERNEL::Exception);
-    void applyFunc(const std::string& func) throw(INTERP_KERNEL::Exception);
-    void applyFuncFast32(const std::string& func) throw(INTERP_KERNEL::Exception);
-    void applyFuncFast64(const std::string& func) throw(INTERP_KERNEL::Exception);
-    double accumulate(int compId) const throw(INTERP_KERNEL::Exception);
-    double getMaxValue() const throw(INTERP_KERNEL::Exception);
-    double getMinValue() const throw(INTERP_KERNEL::Exception);
-    double getAverageValue() const throw(INTERP_KERNEL::Exception);
-    double norm2() const throw(INTERP_KERNEL::Exception);
+    MEDCouplingFieldDouble *buildNewTimeReprFromThis(TypeOfTimeDiscretization td, bool deepCopy) const;
+    MEDCouplingFieldDouble *nodeToCellDiscretization() const;
+    MEDCouplingFieldDouble *cellToNodeDiscretization() const;
+    double getIJ(int tupleId, int compoId) const;
+    double getIJK(int cellId, int nodeIdInCell, int compoId) const;
+    void synchronizeTimeWithMesh();
+    void setArray(DataArrayDouble *array);
+    void setEndArray(DataArrayDouble *array);
+    void setTime(double val, int iteration, int order);
+    void setStartTime(double val, int iteration, int order);
+    void setEndTime(double val, int iteration, int order);
+    void applyLin(double a, double b, int compoId);
+    void applyLin(double a, double b);
+    int getNumberOfComponents() const;
+    int getNumberOfTuples() const;
+    int getNumberOfValues() const;
+    void setTimeTolerance(double val);
+    double getTimeTolerance() const;
+    void setIteration(int it);
+    void setEndIteration(int it);
+    void setOrder(int order);
+    void setEndOrder(int order);
+    void setTimeValue(double val);
+    void setEndTimeValue(double val);
+    void changeUnderlyingMesh(const MEDCouplingMesh *other, int levOfCheck, double precOnMesh, double eps=1e-15);
+    void substractInPlaceDM(const MEDCouplingFieldDouble *f, int levOfCheck, double precOnMesh, double eps=1e-15);
+    bool mergeNodes(double eps, double epsOnVals=1e-15);
+    bool mergeNodesCenter(double eps, double epsOnVals=1e-15);
+    bool zipCoords(double epsOnVals=1e-15);
+    bool zipConnectivity(int compType,double epsOnVals=1e-15);
+    bool simplexize(int policy);
+    MEDCouplingFieldDouble *doublyContractedProduct() const;
+    MEDCouplingFieldDouble *determinant() const;
+    MEDCouplingFieldDouble *eigenValues() const;
+    MEDCouplingFieldDouble *eigenVectors() const;
+    MEDCouplingFieldDouble *inverse() const;
+    MEDCouplingFieldDouble *trace() const;
+    MEDCouplingFieldDouble *deviator() const;
+    MEDCouplingFieldDouble *magnitude() const;
+    MEDCouplingFieldDouble *maxPerTuple() const;
+    void changeNbOfComponents(int newNbOfComp, double dftValue=0.);
+    void sortPerTuple(bool asc);
+    MEDCouplingFieldDouble &operator=(double value);
+    void fillFromAnalytic(int nbOfComp, const std::string& func);
+    void fillFromAnalyticCompo(int nbOfComp, const std::string& func);
+    void fillFromAnalyticNamedCompo(int nbOfComp, const std::vector<std::string>& varsOrder, const std::string& func);
+    void applyFunc(int nbOfComp, const std::string& func);
+    void applyFuncCompo(int nbOfComp, const std::string& func);
+    void applyFuncNamedCompo(int nbOfComp, const std::vector<std::string>& varsOrder, const std::string& func);
+    void applyFunc(int nbOfComp, double val);
+    void applyFunc(const std::string& func);
+    void applyFuncFast32(const std::string& func);
+    void applyFuncFast64(const std::string& func);
+    double accumulate(int compId) const;
+    double getMaxValue() const;
+    double getMinValue() const;
+    double getAverageValue() const;
+    double norm2() const;
     //do not put a default value to isWAbs because confusion in python with overloaded getWeightedAverageValue method
-    double getWeightedAverageValue(int compId, bool isWAbs) const throw(INTERP_KERNEL::Exception);
-    double integral(int compId, bool isWAbs) const throw(INTERP_KERNEL::Exception);
-    double normL1(int compId) const throw(INTERP_KERNEL::Exception);
-    double normL2(int compId) const throw(INTERP_KERNEL::Exception);
-    double normMax(int compId) const throw(INTERP_KERNEL::Exception);
-    DataArrayInt *findIdsInRange(double vmin, double vmax) const throw(INTERP_KERNEL::Exception);
-    MEDCouplingFieldDouble *buildSubPartRange(int begin, int end, int step) const throw(INTERP_KERNEL::Exception);
-    static MEDCouplingFieldDouble *MergeFields(const MEDCouplingFieldDouble *f1, const MEDCouplingFieldDouble *f2) throw(INTERP_KERNEL::Exception);
-    static MEDCouplingFieldDouble *MeldFields(const MEDCouplingFieldDouble *f1, const MEDCouplingFieldDouble *f2) throw(INTERP_KERNEL::Exception);
-    static MEDCouplingFieldDouble *DotFields(const MEDCouplingFieldDouble *f1, const MEDCouplingFieldDouble *f2) throw(INTERP_KERNEL::Exception);
-    MEDCouplingFieldDouble *dot(const MEDCouplingFieldDouble& other) const throw(INTERP_KERNEL::Exception);
-    static MEDCouplingFieldDouble *CrossProductFields(const MEDCouplingFieldDouble *f1, const MEDCouplingFieldDouble *f2) throw(INTERP_KERNEL::Exception);
-    MEDCouplingFieldDouble *crossProduct(const MEDCouplingFieldDouble& other) const throw(INTERP_KERNEL::Exception);
-    static MEDCouplingFieldDouble *MaxFields(const MEDCouplingFieldDouble *f1, const MEDCouplingFieldDouble *f2) throw(INTERP_KERNEL::Exception);
-    MEDCouplingFieldDouble *max(const MEDCouplingFieldDouble& other) const throw(INTERP_KERNEL::Exception);
-    static MEDCouplingFieldDouble *MinFields(const MEDCouplingFieldDouble *f1, const MEDCouplingFieldDouble *f2) throw(INTERP_KERNEL::Exception);
-    static MEDCouplingFieldDouble *AddFields(const MEDCouplingFieldDouble *f1, const MEDCouplingFieldDouble *f2) throw(INTERP_KERNEL::Exception);
-    static MEDCouplingFieldDouble *SubstractFields(const MEDCouplingFieldDouble *f1, const MEDCouplingFieldDouble *f2) throw(INTERP_KERNEL::Exception);
-    static MEDCouplingFieldDouble *MultiplyFields(const MEDCouplingFieldDouble *f1, const MEDCouplingFieldDouble *f2) throw(INTERP_KERNEL::Exception);
-    static MEDCouplingFieldDouble *DivideFields(const MEDCouplingFieldDouble *f1, const MEDCouplingFieldDouble *f2) throw(INTERP_KERNEL::Exception);
-    MEDCouplingFieldDouble *min(const MEDCouplingFieldDouble& other) const throw(INTERP_KERNEL::Exception);
-    MEDCouplingFieldDouble *negate() const throw(INTERP_KERNEL::Exception);
+    double getWeightedAverageValue(int compId, bool isWAbs) const;
+    double integral(int compId, bool isWAbs) const;
+    double normL1(int compId) const;
+    double normL2(int compId) const;
+    double normMax(int compId) const;
+    DataArrayInt *findIdsInRange(double vmin, double vmax) const;
+    MEDCouplingFieldDouble *buildSubPartRange(int begin, int end, int step) const;
+    static MEDCouplingFieldDouble *MergeFields(const MEDCouplingFieldDouble *f1, const MEDCouplingFieldDouble *f2);
+    static MEDCouplingFieldDouble *MeldFields(const MEDCouplingFieldDouble *f1, const MEDCouplingFieldDouble *f2);
+    static MEDCouplingFieldDouble *DotFields(const MEDCouplingFieldDouble *f1, const MEDCouplingFieldDouble *f2);
+    MEDCouplingFieldDouble *dot(const MEDCouplingFieldDouble& other) const;
+    static MEDCouplingFieldDouble *CrossProductFields(const MEDCouplingFieldDouble *f1, const MEDCouplingFieldDouble *f2);
+    MEDCouplingFieldDouble *crossProduct(const MEDCouplingFieldDouble& other) const;
+    static MEDCouplingFieldDouble *MaxFields(const MEDCouplingFieldDouble *f1, const MEDCouplingFieldDouble *f2);
+    MEDCouplingFieldDouble *max(const MEDCouplingFieldDouble& other) const;
+    static MEDCouplingFieldDouble *MinFields(const MEDCouplingFieldDouble *f1, const MEDCouplingFieldDouble *f2);
+    static MEDCouplingFieldDouble *AddFields(const MEDCouplingFieldDouble *f1, const MEDCouplingFieldDouble *f2);
+    static MEDCouplingFieldDouble *SubstractFields(const MEDCouplingFieldDouble *f1, const MEDCouplingFieldDouble *f2);
+    static MEDCouplingFieldDouble *MultiplyFields(const MEDCouplingFieldDouble *f1, const MEDCouplingFieldDouble *f2);
+    static MEDCouplingFieldDouble *DivideFields(const MEDCouplingFieldDouble *f1, const MEDCouplingFieldDouble *f2);
+    MEDCouplingFieldDouble *min(const MEDCouplingFieldDouble& other) const;
+    MEDCouplingFieldDouble *negate() const;
     %extend {
       MEDCouplingFieldDouble(TypeOfField type, TypeOfTimeDiscretization td=ONE_TIME)
       {
@@ -4132,19 +3975,19 @@ namespace MEDCoupling
         return MEDCouplingFieldDouble::New(ft,td);
       }
 
-      std::string __str__() const throw(INTERP_KERNEL::Exception)
+      std::string __str__() const
       {
         return self->simpleRepr();
       }
 
-      std::string __repr__() const throw(INTERP_KERNEL::Exception)
+      std::string __repr__() const
       {
         std::ostringstream oss;
         self->reprQuickOverview(oss);
         return oss.str();
       }
 
-      PyObject *isEqualIfNotWhy(const MEDCouplingFieldDouble *other, double meshPrec, double valsPrec) const throw(INTERP_KERNEL::Exception)
+      PyObject *isEqualIfNotWhy(const MEDCouplingFieldDouble *other, double meshPrec, double valsPrec) const
       {
         std::string ret1;
         bool ret0=self->isEqualIfNotWhy(other,meshPrec,valsPrec,ret1);
@@ -4156,13 +3999,13 @@ namespace MEDCoupling
         return ret;
       }
       
-      MEDCouplingFieldDouble *voronoize(double eps) const throw(INTERP_KERNEL::Exception)
+      MEDCouplingFieldDouble *voronoize(double eps) const
       {
         MCAuto<MEDCouplingFieldDouble> ret(self->voronoize(eps));
         return ret.retn();
       }
 
-      MEDCouplingFieldDouble *convertQuadraticCellsToLinear() const throw(INTERP_KERNEL::Exception)
+      MEDCouplingFieldDouble *convertQuadraticCellsToLinear() const
       {
         MCAuto<MEDCouplingFieldDouble> ret(self->convertQuadraticCellsToLinear());
         return ret.retn();
@@ -4181,7 +4024,7 @@ namespace MEDCoupling
         return self->computeVectorFieldCyl(centerPtr,vectorPtr);
       }
 
-      DataArrayDouble *getArray() throw(INTERP_KERNEL::Exception)
+      DataArrayDouble *getArray()
       {
         DataArrayDouble *ret=self->getArray();
         if(ret)
@@ -4189,7 +4032,7 @@ namespace MEDCoupling
         return ret;
       }
 
-      PyObject *getArrays() const throw(INTERP_KERNEL::Exception)
+      PyObject *getArrays() const
       {
         std::vector<DataArrayDouble *> arrs=self->getArrays();
         for(std::vector<DataArrayDouble *>::iterator it=arrs.begin();it!=arrs.end();it++)
@@ -4207,7 +4050,7 @@ namespace MEDCoupling
         return ret;
       }
 
-      void setArrays(PyObject *ls) throw(INTERP_KERNEL::Exception)
+      void setArrays(PyObject *ls)
       {
         std::vector<const DataArrayDouble *> tmp;
         convertFromPyObjVectorOfObj<const DataArrayDouble *>(ls,SWIGTYPE_p_MEDCoupling__DataArrayDouble,"DataArrayDouble",tmp);
@@ -4218,7 +4061,7 @@ namespace MEDCoupling
         self->setArrays(arrs);
       }
 
-      DataArrayDouble *getEndArray() throw(INTERP_KERNEL::Exception)
+      DataArrayDouble *getEndArray()
       {
         DataArrayDouble *ret=self->getEndArray();
         if(ret)
@@ -4226,7 +4069,7 @@ namespace MEDCoupling
         return ret;
       }
 
-      PyObject *getValueOn(PyObject *sl) const throw(INTERP_KERNEL::Exception)
+      PyObject *getValueOn(PyObject *sl) const
       {
         double val;
         DataArrayDouble *a;
@@ -4246,7 +4089,7 @@ namespace MEDCoupling
         return convertDblArrToPyList<double>(res,sz);
       }
 
-       PyObject *getValueOnPos(int i, int j, int k) const throw(INTERP_KERNEL::Exception)
+       PyObject *getValueOnPos(int i, int j, int k) const
        {
          int sz=self->getNumberOfComponents();
          INTERP_KERNEL::AutoPtr<double> res=new double[sz];
@@ -4254,7 +4097,7 @@ namespace MEDCoupling
          return convertDblArrToPyList<double>(res,sz);
        }
 
-      DataArrayDouble *getValueOnMulti(PyObject *locs) const throw(INTERP_KERNEL::Exception)
+      DataArrayDouble *getValueOnMulti(PyObject *locs) const
       {
         const MEDCouplingMesh *mesh(self->getMesh());
         if(!mesh)
@@ -4267,7 +4110,7 @@ namespace MEDCoupling
         return self->getValueOnMulti(inp,nbPts);
       }
 
-      PyObject *getValueOn(PyObject *sl, double time) const throw(INTERP_KERNEL::Exception)
+      PyObject *getValueOn(PyObject *sl, double time) const
       {
         double val;
         DataArrayDouble *a;
@@ -4288,7 +4131,7 @@ namespace MEDCoupling
         return convertDblArrToPyList<double>(res,sz);
       }
 
-      void setValues(PyObject *li, PyObject *nbOfTuples=0, PyObject *nbOfComp=0) throw(INTERP_KERNEL::Exception)
+      void setValues(PyObject *li, PyObject *nbOfTuples=0, PyObject *nbOfComp=0)
       {
         if(self->getArray()!=0)
           MEDCoupling_DataArrayDouble_setValues__SWIG_0(self->getArray(),li,nbOfTuples,nbOfComp);
@@ -4300,7 +4143,7 @@ namespace MEDCoupling
           }
       }
       
-      PyObject *getTime() throw(INTERP_KERNEL::Exception)
+      PyObject *getTime()
       {
         int tmp1,tmp2;
         double tmp0=self->getTime(tmp1,tmp2);
@@ -4311,7 +4154,7 @@ namespace MEDCoupling
         return res;
       }
 
-      PyObject *getStartTime() throw(INTERP_KERNEL::Exception)
+      PyObject *getStartTime()
       {
         int tmp1,tmp2;
         double tmp0=self->getStartTime(tmp1,tmp2);
@@ -4322,7 +4165,7 @@ namespace MEDCoupling
         return res;
       }
 
-      PyObject *getEndTime() throw(INTERP_KERNEL::Exception)
+      PyObject *getEndTime()
       {
         int tmp1,tmp2;
         double tmp0=self->getEndTime(tmp1,tmp2);
@@ -4332,49 +4175,49 @@ namespace MEDCoupling
         PyList_SetItem(res,2,SWIG_From_int(tmp2));
         return res;
       }
-      PyObject *accumulate() const throw(INTERP_KERNEL::Exception)
+      PyObject *accumulate() const
       {
         int sz=self->getNumberOfComponents();
         INTERP_KERNEL::AutoPtr<double> tmp=new double[sz];
         self->accumulate(tmp);
         return convertDblArrToPyList<double>(tmp,sz);
       }
-      PyObject *integral(bool isWAbs) const throw(INTERP_KERNEL::Exception)
+      PyObject *integral(bool isWAbs) const
       {
         int sz=self->getNumberOfComponents();
         INTERP_KERNEL::AutoPtr<double> tmp=new double[sz];
         self->integral(isWAbs,tmp);
         return convertDblArrToPyList<double>(tmp,sz);
       }
-      PyObject *getWeightedAverageValue(bool isWAbs=true) const throw(INTERP_KERNEL::Exception)
+      PyObject *getWeightedAverageValue(bool isWAbs=true) const
       {
         int sz=self->getNumberOfComponents();
         INTERP_KERNEL::AutoPtr<double> tmp=new double[sz];
         self->getWeightedAverageValue(tmp,isWAbs);
         return convertDblArrToPyList<double>(tmp,sz);
       }
-      PyObject *normL1() const throw(INTERP_KERNEL::Exception)
+      PyObject *normL1() const
       {
         int sz=self->getNumberOfComponents();
         INTERP_KERNEL::AutoPtr<double> tmp=new double[sz];
         self->normL1(tmp);
         return convertDblArrToPyList<double>(tmp,sz);
       }
-      PyObject *normL2() const throw(INTERP_KERNEL::Exception)
+      PyObject *normL2() const
       {
         int sz=self->getNumberOfComponents();
         INTERP_KERNEL::AutoPtr<double> tmp=new double[sz];
         self->normL2(tmp);
         return convertDblArrToPyList<double>(tmp,sz);
       }
-      PyObject *normMax() const throw(INTERP_KERNEL::Exception)
+      PyObject *normMax() const
       {
         int sz=self->getNumberOfComponents();
         INTERP_KERNEL::AutoPtr<double> tmp=new double[sz];
         self->normMax(tmp);
         return convertDblArrToPyList<double>(tmp,sz);
       }
-      void renumberCells(PyObject *li, bool check=true) throw(INTERP_KERNEL::Exception)
+      void renumberCells(PyObject *li, bool check=true)
       {
         int szArr,sw,iTypppArr;
         std::vector<int> stdvecTyyppArr;
@@ -4382,7 +4225,7 @@ namespace MEDCoupling
         self->renumberCells(tmp,check);
       }
       
-      void renumberCellsWithoutMesh(PyObject *li, bool check=true) throw(INTERP_KERNEL::Exception)
+      void renumberCellsWithoutMesh(PyObject *li, bool check=true)
       {
         int szArr,sw,iTypppArr;
         std::vector<int> stdvecTyyppArr;
@@ -4390,7 +4233,7 @@ namespace MEDCoupling
         self->renumberCellsWithoutMesh(tmp,check);
       }
       
-      void renumberNodes(PyObject *li, double eps=1e-15) throw(INTERP_KERNEL::Exception)
+      void renumberNodes(PyObject *li, double eps=1e-15)
       {
         int szArr,sw,iTypppArr;
         std::vector<int> stdvecTyyppArr;
@@ -4398,7 +4241,7 @@ namespace MEDCoupling
         self->renumberNodes(tmp,eps);
       }
 
-      void renumberNodesWithoutMesh(PyObject *li, int newNbOfNodes, double eps=1e-15) throw(INTERP_KERNEL::Exception)
+      void renumberNodesWithoutMesh(PyObject *li, int newNbOfNodes, double eps=1e-15)
       {
         int szArr,sw,iTypppArr;
         std::vector<int> stdvecTyyppArr;
@@ -4406,17 +4249,17 @@ namespace MEDCoupling
         self->renumberNodesWithoutMesh(tmp,newNbOfNodes,eps);
       }
 
-      MEDCouplingFieldDouble *buildSubPart(PyObject *li) const throw(INTERP_KERNEL::Exception)
+      MEDCouplingFieldDouble *buildSubPart(PyObject *li) const
       {
         return fieldT_buildSubPart(self,li);
       }
 
-      MEDCouplingFieldDouble *__getitem__(PyObject *li) const throw(INTERP_KERNEL::Exception)
+      MEDCouplingFieldDouble *__getitem__(PyObject *li) const
       {
         return fieldT__getitem__(self,li);
       }
 
-      PyObject *getMaxValue2() const throw(INTERP_KERNEL::Exception)
+      PyObject *getMaxValue2() const
       {
         DataArrayInt *tmp;
         double r1=self->getMaxValue2(tmp);
@@ -4426,7 +4269,7 @@ namespace MEDCoupling
         return ret;
       }
       
-      PyObject *getMinValue2() const throw(INTERP_KERNEL::Exception)
+      PyObject *getMinValue2() const
       {
         DataArrayInt *tmp;
         double r1=self->getMinValue2(tmp);
@@ -4436,21 +4279,21 @@ namespace MEDCoupling
         return ret;
       }
       
-      MEDCouplingFieldDouble *keepSelectedComponents(PyObject *li) const throw(INTERP_KERNEL::Exception)
+      MEDCouplingFieldDouble *keepSelectedComponents(PyObject *li) const
       {
         std::vector<int> tmp;
         convertPyToNewIntArr3(li,tmp);
         return self->keepSelectedComponents(tmp);
       }
 
-      void setSelectedComponents(const MEDCouplingFieldDouble *f, PyObject *li) throw(INTERP_KERNEL::Exception)
+      void setSelectedComponents(const MEDCouplingFieldDouble *f, PyObject *li)
       {
         std::vector<int> tmp;
         convertPyToNewIntArr3(li,tmp);
         self->setSelectedComponents(f,tmp);
       }
 
-      MEDCouplingFieldDouble *extractSlice3D(PyObject *origin, PyObject *vec, double eps) const throw(INTERP_KERNEL::Exception)
+      MEDCouplingFieldDouble *extractSlice3D(PyObject *origin, PyObject *vec, double eps) const
       {
         double val,val2;
         DataArrayDouble *a,*a2;
@@ -4466,17 +4309,17 @@ namespace MEDCoupling
         return self->extractSlice3D(orig,vect,eps);
       }
 
-      MEDCouplingFieldDouble *__add__(PyObject *obj) throw(INTERP_KERNEL::Exception)
+      MEDCouplingFieldDouble *__add__(PyObject *obj)
       {
         return MEDCoupling_MEDCouplingFieldDouble___add__Impl(self,obj);
       }
 
-      MEDCouplingFieldDouble *__radd__(PyObject *obj) throw(INTERP_KERNEL::Exception)
+      MEDCouplingFieldDouble *__radd__(PyObject *obj)
       {
         return MEDCoupling_MEDCouplingFieldDouble___radd__Impl(self,obj);
       }
 
-      MEDCouplingFieldDouble *__sub__(PyObject *obj) throw(INTERP_KERNEL::Exception)
+      MEDCouplingFieldDouble *__sub__(PyObject *obj)
       {
         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.";
         const char msg2[]="in MEDCouplingFieldDouble.__sub__ : self field has no Array of values set !";
@@ -4532,7 +4375,7 @@ namespace MEDCoupling
             {
               if(!self->getArray())
                 throw INTERP_KERNEL::Exception(msg2);
-              MCAuto<DataArrayDouble> aaa=DataArrayDouble::New(); aaa->useArray(&bb[0],false,CPP_DEALLOC,1,(int)bb.size());
+              MCAuto<DataArrayDouble> aaa=DataArrayDouble::New(); aaa->useArray(&bb[0],false,DeallocType::CPP_DEALLOC,1,(int)bb.size());
               MCAuto<DataArrayDouble> ret=DataArrayDouble::Substract(self->getArray(),aaa);
               MCAuto<MEDCouplingFieldDouble> ret2=self->clone(false);
               ret2->setArray(ret);
@@ -4543,22 +4386,22 @@ namespace MEDCoupling
           }
       }
 
-      MEDCouplingFieldDouble *__rsub__(PyObject *obj) throw(INTERP_KERNEL::Exception)
+      MEDCouplingFieldDouble *__rsub__(PyObject *obj)
       {
         return MEDCoupling_MEDCouplingFieldDouble___rsub__Impl(self,obj);
       }
 
-      MEDCouplingFieldDouble *__mul__(PyObject *obj) throw(INTERP_KERNEL::Exception)
+      MEDCouplingFieldDouble *__mul__(PyObject *obj)
       {
         return MEDCoupling_MEDCouplingFieldDouble___mul__Impl(self,obj);
       }
 
-      MEDCouplingFieldDouble *__rmul__(PyObject *obj) throw(INTERP_KERNEL::Exception)
+      MEDCouplingFieldDouble *__rmul__(PyObject *obj)
       {
         return MEDCoupling_MEDCouplingFieldDouble___rmul__Impl(self,obj);
       }
 
-      MEDCouplingFieldDouble *__div__(PyObject *obj) throw(INTERP_KERNEL::Exception)
+      MEDCouplingFieldDouble *__div__(PyObject *obj)
       {
         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.";
         const char msg2[]="in MEDCouplingFieldDouble.__div__ : self field has no Array of values set !";
@@ -4616,7 +4459,7 @@ namespace MEDCoupling
             {
               if(!self->getArray())
                 throw INTERP_KERNEL::Exception(msg2);
-              MCAuto<DataArrayDouble> aaa=DataArrayDouble::New(); aaa->useArray(&bb[0],false,CPP_DEALLOC,1,(int)bb.size());
+              MCAuto<DataArrayDouble> aaa=DataArrayDouble::New(); aaa->useArray(&bb[0],false,DeallocType::CPP_DEALLOC,1,(int)bb.size());
               MCAuto<DataArrayDouble> ret=DataArrayDouble::Divide(self->getArray(),aaa);
               MCAuto<MEDCouplingFieldDouble> ret2=self->clone(false);
               ret2->setArray(ret);
@@ -4627,12 +4470,12 @@ namespace MEDCoupling
           }
       }
 
-      MEDCouplingFieldDouble *__rdiv__(PyObject *obj) throw(INTERP_KERNEL::Exception)
+      MEDCouplingFieldDouble *__rdiv__(PyObject *obj)
       {
         return MEDCoupling_MEDCouplingFieldDouble___rdiv__Impl(self,obj);
       }
 
-      MEDCouplingFieldDouble *__pow__(PyObject *obj) throw(INTERP_KERNEL::Exception)
+      MEDCouplingFieldDouble *__pow__(PyObject *obj)
       {
         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.";
         const char msg2[]="in MEDCouplingFieldDouble.__pow__ : self field has no Array of values set !";
@@ -4688,7 +4531,7 @@ namespace MEDCoupling
             {
               if(!self->getArray())
                 throw INTERP_KERNEL::Exception(msg2);
-              MCAuto<DataArrayDouble> aaa=DataArrayDouble::New(); aaa->useArray(&bb[0],false,CPP_DEALLOC,1,(int)bb.size());
+              MCAuto<DataArrayDouble> aaa=DataArrayDouble::New(); aaa->useArray(&bb[0],false,DeallocType::CPP_DEALLOC,1,(int)bb.size());
               MCAuto<DataArrayDouble> ret=DataArrayDouble::Pow(self->getArray(),aaa);
               MCAuto<MEDCouplingFieldDouble> ret2=self->clone(false);
               ret2->setArray(ret);
@@ -4699,12 +4542,12 @@ namespace MEDCoupling
           }
       }
 
-      MEDCouplingFieldDouble *__neg__() const throw(INTERP_KERNEL::Exception)
+      MEDCouplingFieldDouble *__neg__() const
       {
         return self->negate();
       }
 
-      PyObject *___iadd___(PyObject *trueSelf, PyObject *obj) throw(INTERP_KERNEL::Exception)
+      PyObject *___iadd___(PyObject *trueSelf, PyObject *obj)
       {
         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.";
         const char msg2[]="in MEDCouplingFieldDouble.__iadd__ : self field has no Array of values set !";
@@ -4760,7 +4603,7 @@ namespace MEDCoupling
             {
               if(!self->getArray())
                 throw INTERP_KERNEL::Exception(msg2);
-              MCAuto<DataArrayDouble> aaa=DataArrayDouble::New(); aaa->useArray(&bb[0],false,CPP_DEALLOC,1,(int)bb.size());
+              MCAuto<DataArrayDouble> aaa=DataArrayDouble::New(); aaa->useArray(&bb[0],false,DeallocType::CPP_DEALLOC,1,(int)bb.size());
               self->getArray()->addEqual(aaa);
               Py_XINCREF(trueSelf);
               return trueSelf;
@@ -4770,7 +4613,7 @@ namespace MEDCoupling
           }
       }
 
-      PyObject *___isub___(PyObject *trueSelf, PyObject *obj) throw(INTERP_KERNEL::Exception)
+      PyObject *___isub___(PyObject *trueSelf, PyObject *obj)
       {
         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.";
         const char msg2[]="in MEDCouplingFieldDouble.__isub__ : self field has no Array of values set !";
@@ -4826,7 +4669,7 @@ namespace MEDCoupling
             {
               if(!self->getArray())
                 throw INTERP_KERNEL::Exception(msg2);
-              MCAuto<DataArrayDouble> aaa=DataArrayDouble::New(); aaa->useArray(&bb[0],false,CPP_DEALLOC,1,(int)bb.size());
+              MCAuto<DataArrayDouble> aaa=DataArrayDouble::New(); aaa->useArray(&bb[0],false,DeallocType::CPP_DEALLOC,1,(int)bb.size());
               self->getArray()->substractEqual(aaa);
               Py_XINCREF(trueSelf);
               return trueSelf;
@@ -4836,7 +4679,7 @@ namespace MEDCoupling
           }
       }
 
-      PyObject *___imul___(PyObject *trueSelf, PyObject *obj) throw(INTERP_KERNEL::Exception)
+      PyObject *___imul___(PyObject *trueSelf, PyObject *obj)
       {
         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.";
         const char msg2[]="in MEDCouplingFieldDouble.__imul__ : self field has no Array of values set !";
@@ -4892,7 +4735,7 @@ namespace MEDCoupling
             {
               if(!self->getArray())
                 throw INTERP_KERNEL::Exception(msg2);
-              MCAuto<DataArrayDouble> aaa=DataArrayDouble::New(); aaa->useArray(&bb[0],false,CPP_DEALLOC,1,(int)bb.size());
+              MCAuto<DataArrayDouble> aaa=DataArrayDouble::New(); aaa->useArray(&bb[0],false,DeallocType::CPP_DEALLOC,1,(int)bb.size());
               self->getArray()->multiplyEqual(aaa);
               Py_XINCREF(trueSelf);
               return trueSelf;
@@ -4902,7 +4745,7 @@ namespace MEDCoupling
           }
       }
 
-      PyObject *___idiv___(PyObject *trueSelf, PyObject *obj) throw(INTERP_KERNEL::Exception)
+      PyObject *___idiv___(PyObject *trueSelf, PyObject *obj)
       {
         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.";
         const char msg2[]="in MEDCouplingFieldDouble.__idiv__ : self field has no Array of values set !";
@@ -4960,7 +4803,7 @@ namespace MEDCoupling
             {
               if(!self->getArray())
                 throw INTERP_KERNEL::Exception(msg2);
-              MCAuto<DataArrayDouble> aaa=DataArrayDouble::New(); aaa->useArray(&bb[0],false,CPP_DEALLOC,1,(int)bb.size());
+              MCAuto<DataArrayDouble> aaa=DataArrayDouble::New(); aaa->useArray(&bb[0],false,DeallocType::CPP_DEALLOC,1,(int)bb.size());
               self->getArray()->divideEqual(aaa);
               Py_XINCREF(trueSelf);
               return trueSelf;
@@ -4970,7 +4813,7 @@ namespace MEDCoupling
           }
       }
 
-      PyObject *___ipow___(PyObject *trueSelf, PyObject *obj) throw(INTERP_KERNEL::Exception)
+      PyObject *___ipow___(PyObject *trueSelf, PyObject *obj)
       {
         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.";
         const char msg2[]="in MEDCouplingFieldDouble.__ipow__ : self field has no Array of values set !";
@@ -5026,7 +4869,7 @@ namespace MEDCoupling
             {
               if(!self->getArray())
                 throw INTERP_KERNEL::Exception(msg2);
-              MCAuto<DataArrayDouble> aaa=DataArrayDouble::New(); aaa->useArray(&bb[0],false,CPP_DEALLOC,1,(int)bb.size());
+              MCAuto<DataArrayDouble> aaa=DataArrayDouble::New(); aaa->useArray(&bb[0],false,DeallocType::CPP_DEALLOC,1,(int)bb.size());
               self->getArray()->powEqual(aaa);
               Py_XINCREF(trueSelf);
               return trueSelf;
@@ -5036,36 +4879,36 @@ namespace MEDCoupling
           }
       }
 
-      static MEDCouplingFieldDouble *MergeFields(PyObject *li) throw(INTERP_KERNEL::Exception)
+      static MEDCouplingFieldDouble *MergeFields(PyObject *li)
       {
         std::vector<const MEDCouplingFieldDouble *> tmp;
         convertFromPyObjVectorOfObj<const MEDCoupling::MEDCouplingFieldDouble *>(li,SWIGTYPE_p_MEDCoupling__MEDCouplingFieldDouble,"MEDCouplingFieldDouble",tmp);
         return MEDCouplingFieldDouble::MergeFields(tmp);
       }
 
-      static std::string WriteVTK(const char *fileName, PyObject *li, bool isBinary=true) throw(INTERP_KERNEL::Exception)
+      static std::string WriteVTK(const char *fileName, PyObject *li, bool isBinary=true)
       {
         std::vector<const MEDCouplingFieldDouble *> tmp;
         convertFromPyObjVectorOfObj<const MEDCoupling::MEDCouplingFieldDouble *>(li,SWIGTYPE_p_MEDCoupling__MEDCouplingFieldDouble,"MEDCouplingFieldDouble",tmp);
         return MEDCouplingFieldDouble::WriteVTK(fileName,tmp,isBinary);
       }
 
-      PyObject *getTinySerializationInformation() const throw(INTERP_KERNEL::Exception)
+      PyObject *getTinySerializationInformation() const
       {
         return field_getTinySerializationInformation<MEDCouplingFieldDouble>(self);
       }
       
-      PyObject *serialize() const throw(INTERP_KERNEL::Exception)
+      PyObject *serialize() const
       {
         return field_serialize<double>(self);
       }
 
-      PyObject *__getstate__() const throw(INTERP_KERNEL::Exception)
+      PyObject *__getstate__() const
       {
         return field__getstate__<MEDCouplingFieldDouble>(self,MEDCoupling_MEDCouplingFieldDouble_getTinySerializationInformation,MEDCoupling_MEDCouplingFieldDouble_serialize);
       }
       
-      void __setstate__(PyObject *inp) throw(INTERP_KERNEL::Exception)
+      void __setstate__(PyObject *inp)
       {
         field__setstate__<double>(self,inp);
       }
@@ -5077,18 +4920,18 @@ namespace MEDCoupling
   public:
     int getNumberOfFields() const;
     MEDCouplingMultiFields *deepCopy() const;
-    virtual std::string simpleRepr() const throw(INTERP_KERNEL::Exception);
-    virtual std::string advancedRepr() const throw(INTERP_KERNEL::Exception);
+    virtual std::string simpleRepr() const;
+    virtual std::string advancedRepr() const;
     virtual bool isEqual(const MEDCouplingMultiFields *other, double meshPrec, double valsPrec) const;
     virtual bool isEqualWithoutConsideringStr(const MEDCouplingMultiFields *other, double meshPrec, double valsPrec) const;
-    virtual void checkConsistencyLight() const throw(INTERP_KERNEL::Exception);
+    virtual void checkConsistencyLight() const;
     %extend
        {
-         std::string __str__() const throw(INTERP_KERNEL::Exception)
+         std::string __str__() const
          {
            return self->simpleRepr();
          }
-         static MEDCouplingMultiFields *New(PyObject *li) throw(INTERP_KERNEL::Exception)
+         static MEDCouplingMultiFields *New(PyObject *li)
          {
            std::vector<const MEDCoupling::MEDCouplingFieldDouble *> tmp;
            convertFromPyObjVectorOfObj<const MEDCoupling::MEDCouplingFieldDouble *>(li,SWIGTYPE_p_MEDCoupling__MEDCouplingFieldDouble,"MEDCouplingFieldDouble",tmp);
@@ -5098,7 +4941,7 @@ namespace MEDCoupling
              fs[i]=const_cast<MEDCouplingFieldDouble *>(tmp[i]);
            return MEDCouplingMultiFields::New(fs);
          }
-         MEDCouplingMultiFields(PyObject *li) throw(INTERP_KERNEL::Exception)
+         MEDCouplingMultiFields(PyObject *li)
          {
            std::vector<const MEDCoupling::MEDCouplingFieldDouble *> tmp;
            convertFromPyObjVectorOfObj<const MEDCoupling::MEDCouplingFieldDouble *>(li,SWIGTYPE_p_MEDCoupling__MEDCouplingFieldDouble,"MEDCouplingFieldDouble",tmp);
@@ -5127,7 +4970,7 @@ namespace MEDCoupling
              }
            return res;
          }
-         PyObject *getFieldAtPos(int id) const throw(INTERP_KERNEL::Exception)
+         PyObject *getFieldAtPos(int id) const
          {
            const MEDCouplingFieldDouble *ret=self->getFieldAtPos(id);
            if(ret)
@@ -5138,7 +4981,7 @@ namespace MEDCoupling
            else
              return SWIG_NewPointerObj(SWIG_as_voidptr(0),SWIGTYPE_p_MEDCoupling__MEDCouplingFieldDouble, 0 );
          }
-         PyObject *getMeshes() const throw(INTERP_KERNEL::Exception)
+         PyObject *getMeshes() const
          {
            std::vector<MEDCouplingMesh *> ms=self->getMeshes();
            int sz=ms.size();
@@ -5157,7 +5000,7 @@ namespace MEDCoupling
              }
            return res;
          }
-         PyObject *getDifferentMeshes() const throw(INTERP_KERNEL::Exception)
+         PyObject *getDifferentMeshes() const
          {
            std::vector<int> refs;
            std::vector<MEDCouplingMesh *> ms=self->getDifferentMeshes(refs);
@@ -5181,7 +5024,7 @@ namespace MEDCoupling
            PyTuple_SetItem(ret,1,convertIntArrToPyList2(refs));
            return ret;
          }
-         PyObject *getArrays() const throw(INTERP_KERNEL::Exception)
+         PyObject *getArrays() const
          {
            std::vector<DataArrayDouble *> ms=self->getArrays();
            int sz=ms.size();
@@ -5200,7 +5043,7 @@ namespace MEDCoupling
              }
            return res;
          }
-         PyObject *getDifferentArrays() const throw(INTERP_KERNEL::Exception)
+         PyObject *getDifferentArrays() const
          {
            std::vector< std::vector<int> > refs;
            std::vector<DataArrayDouble *> ms=self->getDifferentArrays(refs);
@@ -5234,17 +5077,17 @@ namespace MEDCoupling
   public:
     static MEDCouplingFieldInt *New(TypeOfField type, TypeOfTimeDiscretization td=ONE_TIME);
     static MEDCouplingFieldInt *New(const MEDCouplingFieldTemplate& ft, TypeOfTimeDiscretization td=ONE_TIME);
-    bool isEqual(const MEDCouplingFieldInt *other, double meshPrec, int valsPrec) const throw(INTERP_KERNEL::Exception);
-    bool isEqualWithoutConsideringStr(const MEDCouplingFieldInt *other, double meshPrec, int valsPrec) const throw(INTERP_KERNEL::Exception);
-    void setTimeUnit(const std::string& unit) throw(INTERP_KERNEL::Exception);
-    std::string getTimeUnit() const throw(INTERP_KERNEL::Exception);
-    void setTime(double val, int iteration, int order) throw(INTERP_KERNEL::Exception);
-    void setArray(DataArrayInt *array) throw(INTERP_KERNEL::Exception);
-    MEDCouplingFieldInt *deepCopy() const throw(INTERP_KERNEL::Exception);
-    MEDCouplingFieldInt *clone(bool recDeepCpy) const throw(INTERP_KERNEL::Exception);
-    MEDCouplingFieldInt *cloneWithMesh(bool recDeepCpy) const throw(INTERP_KERNEL::Exception);
-    MEDCouplingFieldDouble *convertToDblField() const throw(INTERP_KERNEL::Exception);
-    MEDCouplingFieldInt *buildSubPartRange(int begin, int end, int step) const throw(INTERP_KERNEL::Exception);
+    bool isEqual(const MEDCouplingFieldInt *other, double meshPrec, int valsPrec) const;
+    bool isEqualWithoutConsideringStr(const MEDCouplingFieldInt *other, double meshPrec, int valsPrec) const;
+    void setTimeUnit(const std::string& unit);
+    std::string getTimeUnit() const;
+    void setTime(double val, int iteration, int order);
+    void setArray(DataArrayInt *array);
+    MEDCouplingFieldInt *deepCopy() const;
+    MEDCouplingFieldInt *clone(bool recDeepCpy) const;
+    MEDCouplingFieldInt *cloneWithMesh(bool recDeepCpy) const;
+    MEDCouplingFieldDouble *convertToDblField() const;
+    MEDCouplingFieldInt *buildSubPartRange(int begin, int end, int step) const;
     %extend {
       MEDCouplingFieldInt(TypeOfField type, TypeOfTimeDiscretization td=ONE_TIME)
       {
@@ -5256,7 +5099,7 @@ namespace MEDCoupling
         return MEDCouplingFieldInt::New(ft,td);
       }
 
-      PyObject *isEqualIfNotWhy(const MEDCouplingFieldInt *other, double meshPrec, int valsPrec) const throw(INTERP_KERNEL::Exception)
+      PyObject *isEqualIfNotWhy(const MEDCouplingFieldInt *other, double meshPrec, int valsPrec) const
       {
         std::string ret1;
         bool ret0=self->isEqualIfNotWhy(other,meshPrec,valsPrec,ret1);
@@ -5268,29 +5111,29 @@ namespace MEDCoupling
         return ret;
       }
       
-      std::string __str__() const throw(INTERP_KERNEL::Exception)
+      std::string __str__() const
       {
         return self->simpleRepr();
       }
 
-      std::string __repr__() const throw(INTERP_KERNEL::Exception)
+      std::string __repr__() const
       {
         std::ostringstream oss;
         self->reprQuickOverview(oss);
         return oss.str();
       }
 
-      MEDCouplingFieldInt *buildSubPart(PyObject *li) const throw(INTERP_KERNEL::Exception)
+      MEDCouplingFieldInt *buildSubPart(PyObject *li) const
       {
         return fieldT_buildSubPart(self,li);
       }
 
-      MEDCouplingFieldInt *__getitem__(PyObject *li) const throw(INTERP_KERNEL::Exception)
+      MEDCouplingFieldInt *__getitem__(PyObject *li) const
       {
         return fieldT__getitem__(self,li);
       }
 
-      DataArrayInt *getArray() throw(INTERP_KERNEL::Exception)
+      DataArrayInt *getArray()
       {
         DataArrayInt *ret=self->getArray();
         if(ret)
@@ -5298,7 +5141,7 @@ namespace MEDCoupling
         return ret;
       }
       
-      PyObject *getTime() throw(INTERP_KERNEL::Exception)
+      PyObject *getTime()
         {
         int tmp1,tmp2;
         double tmp0=self->getTime(tmp1,tmp2);
@@ -5309,22 +5152,22 @@ namespace MEDCoupling
         return res;
         }
 
-      PyObject *getTinySerializationInformation() const throw(INTERP_KERNEL::Exception)
+      PyObject *getTinySerializationInformation() const
       {
         return field_getTinySerializationInformation<MEDCouplingFieldInt>(self);
       }
       
-      PyObject *serialize() const throw(INTERP_KERNEL::Exception)
+      PyObject *serialize() const
       {
         return field_serialize<int>(self);
       }
 
-      PyObject *__getstate__() const throw(INTERP_KERNEL::Exception)
+      PyObject *__getstate__() const
       {
         return field__getstate__<MEDCouplingFieldInt>(self,MEDCoupling_MEDCouplingFieldInt_getTinySerializationInformation,MEDCoupling_MEDCouplingFieldInt_serialize);
       }
       
-      void __setstate__(PyObject *inp) throw(INTERP_KERNEL::Exception)
+      void __setstate__(PyObject *inp)
       {
         field__setstate__<int>(self,inp);
       }
@@ -5336,17 +5179,17 @@ namespace MEDCoupling
   public:
     static MEDCouplingFieldFloat *New(TypeOfField type, TypeOfTimeDiscretization td=ONE_TIME);
     static MEDCouplingFieldFloat *New(const MEDCouplingFieldTemplate& ft, TypeOfTimeDiscretization td=ONE_TIME);
-    bool isEqual(const MEDCouplingFieldFloat *other, double meshPrec, float valsPrec) const throw(INTERP_KERNEL::Exception);
-    bool isEqualWithoutConsideringStr(const MEDCouplingFieldFloat *other, double meshPrec, float valsPrec) const throw(INTERP_KERNEL::Exception);
-    void setTimeUnit(const std::string& unit) throw(INTERP_KERNEL::Exception);
-    std::string getTimeUnit() const throw(INTERP_KERNEL::Exception);
-    void setTime(double val, int iteration, int order) throw(INTERP_KERNEL::Exception);
-    void setArray(DataArrayFloat *array) throw(INTERP_KERNEL::Exception);
-    MEDCouplingFieldFloat *deepCopy() const throw(INTERP_KERNEL::Exception);
-    MEDCouplingFieldFloat *clone(bool recDeepCpy) const throw(INTERP_KERNEL::Exception);
-    MEDCouplingFieldFloat *cloneWithMesh(bool recDeepCpy) const throw(INTERP_KERNEL::Exception);
-    MEDCouplingFieldDouble *convertToDblField() const throw(INTERP_KERNEL::Exception);
-    MEDCouplingFieldFloat *buildSubPartRange(int begin, int end, int step) const throw(INTERP_KERNEL::Exception);
+    bool isEqual(const MEDCouplingFieldFloat *other, double meshPrec, float valsPrec) const;
+    bool isEqualWithoutConsideringStr(const MEDCouplingFieldFloat *other, double meshPrec, float valsPrec) const;
+    void setTimeUnit(const std::string& unit);
+    std::string getTimeUnit() const;
+    void setTime(double val, int iteration, int order);
+    void setArray(DataArrayFloat *array);
+    MEDCouplingFieldFloat *deepCopy() const;
+    MEDCouplingFieldFloat *clone(bool recDeepCpy) const;
+    MEDCouplingFieldFloat *cloneWithMesh(bool recDeepCpy) const;
+    MEDCouplingFieldDouble *convertToDblField() const;
+    MEDCouplingFieldFloat *buildSubPartRange(int begin, int end, int step) const;
     %extend {
       MEDCouplingFieldFloat(TypeOfField type, TypeOfTimeDiscretization td=ONE_TIME)
       {
@@ -5358,7 +5201,7 @@ namespace MEDCoupling
         return MEDCouplingFieldFloat::New(ft,td);
       }
 
-      PyObject *isEqualIfNotWhy(const MEDCouplingFieldFloat *other, double meshPrec, float valsPrec) const throw(INTERP_KERNEL::Exception)
+      PyObject *isEqualIfNotWhy(const MEDCouplingFieldFloat *other, double meshPrec, float valsPrec) const
       {
         std::string ret1;
         bool ret0=self->isEqualIfNotWhy(other,meshPrec,valsPrec,ret1);
@@ -5370,29 +5213,29 @@ namespace MEDCoupling
         return ret;
       }
 
-      std::string __str__() const throw(INTERP_KERNEL::Exception)
+      std::string __str__() const
       {
         return self->simpleRepr();
       }
 
-      std::string __repr__() const throw(INTERP_KERNEL::Exception)
+      std::string __repr__() const
       {
         std::ostringstream oss;
         self->reprQuickOverview(oss);
         return oss.str();
       }
 
-      MEDCouplingFieldFloat *buildSubPart(PyObject *li) const throw(INTERP_KERNEL::Exception)
+      MEDCouplingFieldFloat *buildSubPart(PyObject *li) const
       {
         return fieldT_buildSubPart(self,li);
       }
 
-      MEDCouplingFieldFloat *__getitem__(PyObject *li) const throw(INTERP_KERNEL::Exception)
+      MEDCouplingFieldFloat *__getitem__(PyObject *li) const
       {
         return fieldT__getitem__(self,li);
       }
 
-      DataArrayFloat *getArray() throw(INTERP_KERNEL::Exception)
+      DataArrayFloat *getArray()
       {
         DataArrayFloat *ret=self->getArray();
         if(ret)
@@ -5400,7 +5243,7 @@ namespace MEDCoupling
         return ret;
       }
       
-      PyObject *getTime() throw(INTERP_KERNEL::Exception)
+      PyObject *getTime()
       {
         int tmp1,tmp2;
         double tmp0=self->getTime(tmp1,tmp2);
@@ -5411,22 +5254,22 @@ namespace MEDCoupling
         return res;
       }
 
-      PyObject *getTinySerializationInformation() const throw(INTERP_KERNEL::Exception)
+      PyObject *getTinySerializationInformation() const
       {
         return field_getTinySerializationInformation<MEDCouplingFieldFloat>(self);
       }
       
-      PyObject *serialize() const throw(INTERP_KERNEL::Exception)
+      PyObject *serialize() const
       {
         return field_serialize<float>(self);
       }
       
-      PyObject *__getstate__() const throw(INTERP_KERNEL::Exception)
+      PyObject *__getstate__() const
       {
         return field__getstate__<MEDCouplingFieldFloat>(self,MEDCoupling_MEDCouplingFieldFloat_getTinySerializationInformation,MEDCoupling_MEDCouplingFieldFloat_serialize);
       }
         
-      void __setstate__(PyObject *inp) throw(INTERP_KERNEL::Exception)
+      void __setstate__(PyObject *inp)
       {
         field__setstate__<float>(self,inp);
       }
@@ -5443,14 +5286,14 @@ namespace MEDCoupling
     std::vector<double> getHotSpotsTime() const;
     %extend
       {
-        std::string __str__() const throw(INTERP_KERNEL::Exception)
+        std::string __str__() const
           {
             std::ostringstream oss;
             self->appendRepr(oss);
             return oss.str();
           }
 
-        PyObject *getIdsOnTimeRight(double tm) const throw(INTERP_KERNEL::Exception)
+        PyObject *getIdsOnTimeRight(double tm) const
         {
           int meshId,arrId,arrIdInField,fieldId;
           self->getIdsOnTimeRight(tm,meshId,arrId,arrIdInField,fieldId);
@@ -5462,7 +5305,7 @@ namespace MEDCoupling
           return res;
         }
 
-        PyObject *getIdsOnTimeLeft(double tm) const throw(INTERP_KERNEL::Exception)
+        PyObject *getIdsOnTimeLeft(double tm) const
         {
           int meshId,arrId,arrIdInField,fieldId;
           self->getIdsOnTimeLeft(tm,meshId,arrId,arrIdInField,fieldId);
@@ -5479,12 +5322,12 @@ namespace MEDCoupling
   class MEDCouplingFieldOverTime : public MEDCouplingMultiFields
   {
   public:
-    double getTimeTolerance() const throw(INTERP_KERNEL::Exception);
+    double getTimeTolerance() const;
     MEDCouplingDefinitionTime getDefinitionTimeZone() const;
     
     %extend
       {
-        MEDCouplingFieldOverTime(PyObject *li) throw(INTERP_KERNEL::Exception)
+        MEDCouplingFieldOverTime(PyObject *li)
           {
             std::vector<const MEDCoupling::MEDCouplingFieldDouble *> tmp;
             convertFromPyObjVectorOfObj<const MEDCoupling::MEDCouplingFieldDouble *>(li,SWIGTYPE_p_MEDCoupling__MEDCouplingFieldDouble,"MEDCouplingFieldDouble",tmp);
@@ -5494,11 +5337,11 @@ namespace MEDCoupling
               fs[i]=const_cast<MEDCouplingFieldDouble *>(tmp[i]);
             return MEDCouplingFieldOverTime::New(fs);
           }
-        std::string __str__() const throw(INTERP_KERNEL::Exception)
+        std::string __str__() const
           {
             return self->simpleRepr();
           }
-        static MEDCouplingFieldOverTime *New(PyObject *li) throw(INTERP_KERNEL::Exception)
+        static MEDCouplingFieldOverTime *New(PyObject *li)
         {
           std::vector<const MEDCoupling::MEDCouplingFieldDouble *> tmp;
           convertFromPyObjVectorOfObj<const MEDCoupling::MEDCouplingFieldDouble *>(li,SWIGTYPE_p_MEDCoupling__MEDCouplingFieldDouble,"MEDCouplingFieldDouble",tmp);
@@ -5516,12 +5359,12 @@ namespace MEDCoupling
   class MEDCouplingCartesianAMRPatchGen : public RefCountObject
   {
   public:
-    int getNumberOfCellsRecursiveWithOverlap() const throw(INTERP_KERNEL::Exception);
-    int getNumberOfCellsRecursiveWithoutOverlap() const throw(INTERP_KERNEL::Exception);
-    int getMaxNumberOfLevelsRelativeToThis() const throw(INTERP_KERNEL::Exception);
+    int getNumberOfCellsRecursiveWithOverlap() const;
+    int getNumberOfCellsRecursiveWithoutOverlap() const;
+    int getMaxNumberOfLevelsRelativeToThis() const;
     %extend
     {
-      MEDCouplingCartesianAMRMeshGen *getMesh() const throw(INTERP_KERNEL::Exception)
+      MEDCouplingCartesianAMRMeshGen *getMesh() const
       {
         MEDCouplingCartesianAMRMeshGen *ret(const_cast<MEDCouplingCartesianAMRMeshGen *>(self->getMesh()));
         if(ret)
@@ -5534,31 +5377,31 @@ namespace MEDCoupling
   class MEDCouplingCartesianAMRPatch : public MEDCouplingCartesianAMRPatchGen
   {
   public:
-    int getNumberOfOverlapedCellsForFather() const throw(INTERP_KERNEL::Exception);
-    bool isInMyNeighborhood(const MEDCouplingCartesianAMRPatch *other, int ghostLev) const throw(INTERP_KERNEL::Exception);
-    std::vector<int> computeCellGridSt() const throw(INTERP_KERNEL::Exception);
+    int getNumberOfOverlapedCellsForFather() const;
+    bool isInMyNeighborhood(const MEDCouplingCartesianAMRPatch *other, int ghostLev) const;
+    std::vector<int> computeCellGridSt() const;
     %extend
     {
-      PyObject *getBLTRRange() const throw(INTERP_KERNEL::Exception)
+      PyObject *getBLTRRange() const
       {
         const std::vector< std::pair<int,int> >& ret(self->getBLTRRange());
         return convertFromVectorPairInt(ret);
       }
 
-      PyObject *getBLTRRangeRelativeToGF() const throw(INTERP_KERNEL::Exception)
+      PyObject *getBLTRRangeRelativeToGF() const
       {
         std::vector< std::pair<int,int> > ret(self->getBLTRRangeRelativeToGF());
         return convertFromVectorPairInt(ret);
       }
 
-      void addPatch(PyObject *bottomLeftTopRight, const std::vector<int>& factors) throw(INTERP_KERNEL::Exception)
+      void addPatch(PyObject *bottomLeftTopRight, const std::vector<int>& factors)
       {
         std::vector< std::pair<int,int> > inp;
         convertPyToVectorPairInt(bottomLeftTopRight,inp);
         self->addPatch(inp,factors);
       }
 
-      MEDCouplingCartesianAMRPatch *__getitem__(int patchId) const throw(INTERP_KERNEL::Exception)
+      MEDCouplingCartesianAMRPatch *__getitem__(int patchId) const
       {
         const MEDCouplingCartesianAMRMeshGen *mesh(self->getMesh());
         if(!mesh)
@@ -5576,7 +5419,7 @@ namespace MEDCoupling
         return ret;
       }
 
-      void __delitem__(int patchId) throw(INTERP_KERNEL::Exception)
+      void __delitem__(int patchId)
       {
         MEDCouplingCartesianAMRMeshGen *mesh(const_cast<MEDCouplingCartesianAMRMeshGen *>(self->getMesh()));
         if(!mesh)
@@ -5584,7 +5427,7 @@ namespace MEDCoupling
         mesh->removePatch(patchId);
       }
 
-      int __len__() const throw(INTERP_KERNEL::Exception)
+      int __len__() const
       {
         const MEDCouplingCartesianAMRMeshGen *mesh(self->getMesh());
         if(!mesh)
@@ -5601,50 +5444,50 @@ namespace MEDCoupling
   class MEDCouplingCartesianAMRMeshGen : public RefCountObject, public TimeLabel
   {
   public:
-    int getAbsoluteLevel() const throw(INTERP_KERNEL::Exception);
-    int getAbsoluteLevelRelativeTo(const MEDCouplingCartesianAMRMeshGen *ref) const throw(INTERP_KERNEL::Exception);
-    std::vector<int> getPositionRelativeTo(const MEDCouplingCartesianAMRMeshGen *ref) const throw(INTERP_KERNEL::Exception);
-    int getSpaceDimension() const throw(INTERP_KERNEL::Exception);
-    const std::vector<int>& getFactors() const throw(INTERP_KERNEL::Exception);
-    void setFactors(const std::vector<int>& newFactors) throw(INTERP_KERNEL::Exception);
-    int getMaxNumberOfLevelsRelativeToThis() const throw(INTERP_KERNEL::Exception);
-    int getNumberOfCellsAtCurrentLevel() const throw(INTERP_KERNEL::Exception);
-    int getNumberOfCellsAtCurrentLevelGhost(int ghostLev) const throw(INTERP_KERNEL::Exception);
-    int getNumberOfCellsRecursiveWithOverlap() const throw(INTERP_KERNEL::Exception);
-    int getNumberOfCellsRecursiveWithoutOverlap() const throw(INTERP_KERNEL::Exception);
-    bool isPatchInNeighborhoodOf(int patchId1, int patchId2, int ghostLev) const throw(INTERP_KERNEL::Exception);
-   virtual void detachFromFather() throw(INTERP_KERNEL::Exception);
+    int getAbsoluteLevel() const;
+    int getAbsoluteLevelRelativeTo(const MEDCouplingCartesianAMRMeshGen *ref) const;
+    std::vector<int> getPositionRelativeTo(const MEDCouplingCartesianAMRMeshGen *ref) const;
+    int getSpaceDimension() const;
+    const std::vector<int>& getFactors() const;
+    void setFactors(const std::vector<int>& newFactors);
+    int getMaxNumberOfLevelsRelativeToThis() const;
+    int getNumberOfCellsAtCurrentLevel() const;
+    int getNumberOfCellsAtCurrentLevelGhost(int ghostLev) const;
+    int getNumberOfCellsRecursiveWithOverlap() const;
+    int getNumberOfCellsRecursiveWithoutOverlap() const;
+    bool isPatchInNeighborhoodOf(int patchId1, int patchId2, int ghostLev) const;
+   virtual void detachFromFather();
     //
-    int getNumberOfPatches() const throw(INTERP_KERNEL::Exception);
-    int getPatchIdFromChildMesh(const MEDCouplingCartesianAMRMeshGen *mesh) const throw(INTERP_KERNEL::Exception);
-    MEDCouplingUMesh *buildUnstructured() const throw(INTERP_KERNEL::Exception);
-    DataArrayDouble *extractGhostFrom(int ghostSz, const DataArrayDouble *arr) const throw(INTERP_KERNEL::Exception);
-    std::vector<int> getPatchIdsInTheNeighborhoodOf(int patchId, int ghostLev) const throw(INTERP_KERNEL::Exception);
-    MEDCoupling1SGTUMesh *buildMeshFromPatchEnvelop() const throw(INTERP_KERNEL::Exception);
-    MEDCoupling1SGTUMesh *buildMeshOfDirectChildrenOnly() const throw(INTERP_KERNEL::Exception);
-    void removeAllPatches() throw(INTERP_KERNEL::Exception);
-    void removePatch(int patchId) throw(INTERP_KERNEL::Exception);
-    void createPatchesFromCriterion(const INTERP_KERNEL::BoxSplittingOptions& bso, const DataArrayByte *criterion, const std::vector<int>& factors) throw(INTERP_KERNEL::Exception);
-    void createPatchesFromCriterion(const INTERP_KERNEL::BoxSplittingOptions& bso, const DataArrayDouble *criterion, const std::vector<int>& factors, double eps) throw(INTERP_KERNEL::Exception);
-    DataArrayDouble *createCellFieldOnPatch(int patchId, const DataArrayDouble *cellFieldOnThis) const throw(INTERP_KERNEL::Exception);
-    void fillCellFieldOnPatch(int patchId, const DataArrayDouble *cellFieldOnThis, DataArrayDouble *cellFieldOnPatch, bool isConservative=true) const throw(INTERP_KERNEL::Exception);
-    void fillCellFieldOnPatchGhost(int patchId, const DataArrayDouble *cellFieldOnThis, DataArrayDouble *cellFieldOnPatch, int ghostLev, bool isConservative=true) const throw(INTERP_KERNEL::Exception);
-    void fillCellFieldOnPatchOnlyOnGhostZone(int patchId, const DataArrayDouble *cellFieldOnThis, DataArrayDouble *cellFieldOnPatch, int ghostLev) const throw(INTERP_KERNEL::Exception);
+    int getNumberOfPatches() const;
+    int getPatchIdFromChildMesh(const MEDCouplingCartesianAMRMeshGen *mesh) const;
+    MEDCouplingUMesh *buildUnstructured() const;
+    DataArrayDouble *extractGhostFrom(int ghostSz, const DataArrayDouble *arr) const;
+    std::vector<int> getPatchIdsInTheNeighborhoodOf(int patchId, int ghostLev) const;
+    MEDCoupling1SGTUMesh *buildMeshFromPatchEnvelop() const;
+    MEDCoupling1SGTUMesh *buildMeshOfDirectChildrenOnly() const;
+    void removeAllPatches();
+    void removePatch(int patchId);
+    void createPatchesFromCriterion(const INTERP_KERNEL::BoxSplittingOptions& bso, const DataArrayByte *criterion, const std::vector<int>& factors);
+    void createPatchesFromCriterion(const INTERP_KERNEL::BoxSplittingOptions& bso, const DataArrayDouble *criterion, const std::vector<int>& factors, double eps);
+    DataArrayDouble *createCellFieldOnPatch(int patchId, const DataArrayDouble *cellFieldOnThis) const;
+    void fillCellFieldOnPatch(int patchId, const DataArrayDouble *cellFieldOnThis, DataArrayDouble *cellFieldOnPatch, bool isConservative=true) const;
+    void fillCellFieldOnPatchGhost(int patchId, const DataArrayDouble *cellFieldOnThis, DataArrayDouble *cellFieldOnPatch, int ghostLev, bool isConservative=true) const;
+    void fillCellFieldOnPatchOnlyOnGhostZone(int patchId, const DataArrayDouble *cellFieldOnThis, DataArrayDouble *cellFieldOnPatch, int ghostLev) const;
     void fillCellFieldOnPatchOnlyOnGhostZoneWith(int ghostLev, const MEDCouplingCartesianAMRPatch *patchToBeModified, const MEDCouplingCartesianAMRPatch *neighborPatch, DataArrayDouble *cellFieldOnPatch, const DataArrayDouble *cellFieldNeighbor) const;
-    void fillCellFieldComingFromPatch(int patchId, const DataArrayDouble *cellFieldOnPatch, DataArrayDouble *cellFieldOnThis, bool isConservative=true) const throw(INTERP_KERNEL::Exception);
-    void fillCellFieldComingFromPatchGhost(int patchId, const DataArrayDouble *cellFieldOnPatch, DataArrayDouble *cellFieldOnThis, int ghostLev, bool isConservative=true) const throw(INTERP_KERNEL::Exception);
-    DataArrayInt *findPatchesInTheNeighborhoodOf(int patchId, int ghostLev) const throw(INTERP_KERNEL::Exception);
-    std::string buildPythonDumpOfThis() const throw(INTERP_KERNEL::Exception);
+    void fillCellFieldComingFromPatch(int patchId, const DataArrayDouble *cellFieldOnPatch, DataArrayDouble *cellFieldOnThis, bool isConservative=true) const;
+    void fillCellFieldComingFromPatchGhost(int patchId, const DataArrayDouble *cellFieldOnPatch, DataArrayDouble *cellFieldOnThis, int ghostLev, bool isConservative=true) const;
+    DataArrayInt *findPatchesInTheNeighborhoodOf(int patchId, int ghostLev) const;
+    std::string buildPythonDumpOfThis() const;
     %extend
     {
-      void addPatch(PyObject *bottomLeftTopRight, const std::vector<int>& factors) throw(INTERP_KERNEL::Exception)
+      void addPatch(PyObject *bottomLeftTopRight, const std::vector<int>& factors)
       {
         std::vector< std::pair<int,int> > inp;
         convertPyToVectorPairInt(bottomLeftTopRight,inp);
         self->addPatch(inp,factors);
       }
 
-      PyObject *getPatches() const throw(INTERP_KERNEL::Exception)
+      PyObject *getPatches() const
       {
         std::vector< const MEDCouplingCartesianAMRPatch *> ps(self->getPatches());
         int sz(ps.size());
@@ -5660,12 +5503,12 @@ namespace MEDCoupling
       }
 
       // agy : don't know why typemap fails here ??? let it in the extend section
-      PyObject *deepCopy(MEDCouplingCartesianAMRMeshGen *father) const throw(INTERP_KERNEL::Exception)
+      PyObject *deepCopy(MEDCouplingCartesianAMRMeshGen *father) const
       {
         return convertCartesianAMRMesh(self->deepCopy(father), SWIG_POINTER_OWN | 0 );
       }
 
-      MEDCouplingCartesianAMRPatch *getPatchAtPosition(const std::vector<int>& pos) const throw(INTERP_KERNEL::Exception)
+      MEDCouplingCartesianAMRPatch *getPatchAtPosition(const std::vector<int>& pos) const
       {
         const MEDCouplingCartesianAMRPatch *ret(self->getPatchAtPosition(pos));
         MEDCouplingCartesianAMRPatch *ret2(const_cast<MEDCouplingCartesianAMRPatch *>(ret));
@@ -5674,7 +5517,7 @@ namespace MEDCoupling
         return ret2;
       }
 
-      MEDCouplingCartesianAMRMeshGen *getMeshAtPosition(const std::vector<int>& pos) const throw(INTERP_KERNEL::Exception)
+      MEDCouplingCartesianAMRMeshGen *getMeshAtPosition(const std::vector<int>& pos) const
       {
         const MEDCouplingCartesianAMRMeshGen *ret(self->getMeshAtPosition(pos));
         MEDCouplingCartesianAMRMeshGen *ret2(const_cast<MEDCouplingCartesianAMRMeshGen *>(ret));
@@ -5683,7 +5526,7 @@ namespace MEDCoupling
         return ret2;
       }
 
-      virtual PyObject *positionRelativeToGodFather() const throw(INTERP_KERNEL::Exception)
+      virtual PyObject *positionRelativeToGodFather() const
       {
         std::vector<int> out1;
         std::vector< std::pair<int,int> > out0(self->positionRelativeToGodFather(out1));
@@ -5693,7 +5536,7 @@ namespace MEDCoupling
         return ret;
       }
 
-      virtual PyObject *retrieveGridsAt(int absoluteLev) const throw(INTERP_KERNEL::Exception)
+      virtual PyObject *retrieveGridsAt(int absoluteLev) const
       {
         std::vector<MEDCouplingCartesianAMRPatchGen *> ps(self->retrieveGridsAt(absoluteLev));
         int sz(ps.size());
@@ -5710,7 +5553,7 @@ namespace MEDCoupling
         return self->buildCellFieldOnRecurseWithoutOverlapWithoutGhost(ghostSz,inp);
       }
 
-      virtual MEDCouplingCartesianAMRMeshGen *getFather() const throw(INTERP_KERNEL::Exception)
+      virtual MEDCouplingCartesianAMRMeshGen *getFather() const
       {
         MEDCouplingCartesianAMRMeshGen *ret(const_cast<MEDCouplingCartesianAMRMeshGen *>(self->getFather()));
         if(ret)
@@ -5718,7 +5561,7 @@ namespace MEDCoupling
         return ret;
       }
       
-      virtual MEDCouplingCartesianAMRMeshGen *getGodFather() const throw(INTERP_KERNEL::Exception)
+      virtual MEDCouplingCartesianAMRMeshGen *getGodFather() const
       {
         MEDCouplingCartesianAMRMeshGen *ret(const_cast<MEDCouplingCartesianAMRMeshGen *>(self->getGodFather()));
         if(ret)
@@ -5726,7 +5569,7 @@ namespace MEDCoupling
         return ret;
       }
 
-      MEDCouplingCartesianAMRPatch *getPatch(int patchId) const throw(INTERP_KERNEL::Exception)
+      MEDCouplingCartesianAMRPatch *getPatch(int patchId) const
       {
         MEDCouplingCartesianAMRPatch *ret(const_cast<MEDCouplingCartesianAMRPatch *>(self->getPatch(patchId)));
         if(ret)
@@ -5734,7 +5577,7 @@ namespace MEDCoupling
         return ret;
       }
 
-      MEDCouplingIMesh *getImageMesh() const throw(INTERP_KERNEL::Exception)
+      MEDCouplingIMesh *getImageMesh() const
       {
         const MEDCouplingIMesh *ret(self->getImageMesh());
         if(ret)
@@ -5742,7 +5585,7 @@ namespace MEDCoupling
         return const_cast<MEDCouplingIMesh *>(ret);
       }
 
-      MEDCouplingCartesianAMRPatch *__getitem__(int patchId) const throw(INTERP_KERNEL::Exception)
+      MEDCouplingCartesianAMRPatch *__getitem__(int patchId) const
       {
         if(patchId==self->getNumberOfPatches())
           {
@@ -5757,7 +5600,7 @@ namespace MEDCoupling
         return ret;
       }
 
-      void fillCellFieldOnPatchGhostAdv(int patchId, const DataArrayDouble *cellFieldOnThis, int ghostLev, PyObject *arrsOnPatches, bool isConservative=true) const throw(INTERP_KERNEL::Exception)
+      void fillCellFieldOnPatchGhostAdv(int patchId, const DataArrayDouble *cellFieldOnThis, int ghostLev, PyObject *arrsOnPatches, bool isConservative=true) const
       {
         std::vector<const MEDCoupling::DataArrayDouble *> arrsOnPatches2;
         convertFromPyObjVectorOfObj<const MEDCoupling::DataArrayDouble *>(arrsOnPatches,SWIGTYPE_p_MEDCoupling__DataArrayDouble,"DataArrayDouble",arrsOnPatches2);
@@ -5771,12 +5614,12 @@ namespace MEDCoupling
         self->fillCellFieldOnPatchOnlyGhostAdv(patchId,ghostLev,arrsOnPatches2);
       }
 
-      void __delitem__(int patchId) throw(INTERP_KERNEL::Exception)
+      void __delitem__(int patchId)
       {
         self->removePatch(patchId);
       }
 
-      int __len__() const throw(INTERP_KERNEL::Exception)
+      int __len__() const
       {
         return self->getNumberOfPatches();
       }
@@ -5790,10 +5633,10 @@ namespace MEDCoupling
   class MEDCouplingCartesianAMRMesh : public MEDCouplingCartesianAMRMeshGen
   {
   public:
-    static MEDCouplingCartesianAMRMesh *New(MEDCouplingIMesh *mesh) throw(INTERP_KERNEL::Exception);
+    static MEDCouplingCartesianAMRMesh *New(MEDCouplingIMesh *mesh);
     %extend
     {
-      static MEDCouplingCartesianAMRMesh *New(const std::string& meshName, int spaceDim, PyObject *nodeStrct, PyObject *origin, PyObject *dxyz) throw(INTERP_KERNEL::Exception)
+      static MEDCouplingCartesianAMRMesh *New(const std::string& meshName, int spaceDim, PyObject *nodeStrct, PyObject *origin, PyObject *dxyz)
       {
         static const char msg0[]="MEDCouplingCartesianAMRMesh::New : error on 'origin' parameter !";
         static const char msg1[]="MEDCouplingCartesianAMRMesh::New : error on 'dxyz' parameter !";
@@ -5812,7 +5655,7 @@ namespace MEDCoupling
         return MEDCouplingCartesianAMRMesh::New(meshName,spaceDim,nodeStrctPtr,nodeStrctPtr+sz,originPtr,originPtr+sz1,dxyzPtr,dxyzPtr+sz2);
       }
 
-      void createPatchesFromCriterionML(PyObject *bso, const DataArrayDouble *criterion, PyObject *factors, double eps) throw(INTERP_KERNEL::Exception)
+      void createPatchesFromCriterionML(PyObject *bso, const DataArrayDouble *criterion, PyObject *factors, double eps)
       {
         std::vector<const INTERP_KERNEL::BoxSplittingOptions *> inp0;
         convertFromPyObjVectorOfObj<const INTERP_KERNEL::BoxSplittingOptions *>(bso,SWIGTYPE_p_INTERP_KERNEL__BoxSplittingOptions,"BoxSplittingOptions",inp0);
@@ -5821,12 +5664,12 @@ namespace MEDCoupling
         self->createPatchesFromCriterionML(inp0,criterion,inp2,eps);
       }
 
-      MEDCouplingCartesianAMRMesh(const std::string& meshName, int spaceDim, PyObject *nodeStrct, PyObject *origin, PyObject *dxyz) throw(INTERP_KERNEL::Exception)
+      MEDCouplingCartesianAMRMesh(const std::string& meshName, int spaceDim, PyObject *nodeStrct, PyObject *origin, PyObject *dxyz)
       {
         return MEDCoupling_MEDCouplingCartesianAMRMesh_New__SWIG_1(meshName,spaceDim,nodeStrct,origin,dxyz);
       }
 
-      MEDCouplingCartesianAMRMesh(MEDCouplingIMesh *mesh) throw(INTERP_KERNEL::Exception)
+      MEDCouplingCartesianAMRMesh(MEDCouplingIMesh *mesh)
       {
         return MEDCouplingCartesianAMRMesh::New(mesh);
       }
@@ -5836,19 +5679,19 @@ namespace MEDCoupling
   class MEDCouplingDataForGodFather : public RefCountObject
   {
   public:
-    virtual void synchronizeFineToCoarse() throw(INTERP_KERNEL::Exception);
-    virtual void synchronizeFineToCoarseBetween(int fromLev, int toLev) throw(INTERP_KERNEL::Exception);
-    virtual void synchronizeCoarseToFine() throw(INTERP_KERNEL::Exception);
-    virtual void synchronizeCoarseToFineBetween(int fromLev, int toLev) throw(INTERP_KERNEL::Exception);
-    virtual void synchronizeAllGhostZones() throw(INTERP_KERNEL::Exception);
-    virtual void synchronizeAllGhostZonesOfDirectChidrenOf(const MEDCouplingCartesianAMRMeshGen *mesh) throw(INTERP_KERNEL::Exception);
-    virtual void synchronizeAllGhostZonesAtASpecifiedLevel(int level) throw(INTERP_KERNEL::Exception);
-    virtual void synchronizeAllGhostZonesAtASpecifiedLevelUsingOnlyFather(int level) throw(INTERP_KERNEL::Exception);
-    virtual void alloc() throw(INTERP_KERNEL::Exception);
-    virtual void dealloc() throw(INTERP_KERNEL::Exception);
+    virtual void synchronizeFineToCoarse();
+    virtual void synchronizeFineToCoarseBetween(int fromLev, int toLev);
+    virtual void synchronizeCoarseToFine();
+    virtual void synchronizeCoarseToFineBetween(int fromLev, int toLev);
+    virtual void synchronizeAllGhostZones();
+    virtual void synchronizeAllGhostZonesOfDirectChidrenOf(const MEDCouplingCartesianAMRMeshGen *mesh);
+    virtual void synchronizeAllGhostZonesAtASpecifiedLevel(int level);
+    virtual void synchronizeAllGhostZonesAtASpecifiedLevelUsingOnlyFather(int level);
+    virtual void alloc();
+    virtual void dealloc();
     %extend
     {
-      MEDCouplingCartesianAMRMesh *getMyGodFather() throw(INTERP_KERNEL::Exception)
+      MEDCouplingCartesianAMRMesh *getMyGodFather()
       {
         MEDCouplingCartesianAMRMesh *ret(self->getMyGodFather());
         if(ret)
@@ -5861,18 +5704,18 @@ namespace MEDCoupling
   class MEDCouplingAMRAttribute : public MEDCouplingDataForGodFather, public TimeLabel
   {
   public:
-    int getNumberOfLevels() const throw(INTERP_KERNEL::Exception);
-    MEDCouplingAMRAttribute *deepCopy() const throw(INTERP_KERNEL::Exception);
-    MEDCouplingAMRAttribute *deepCpyWithoutGodFather() const throw(INTERP_KERNEL::Exception);
-    MEDCouplingFieldDouble *buildCellFieldOnRecurseWithoutOverlapWithoutGhost(MEDCouplingCartesianAMRMeshGen *mesh, const std::string& fieldName) const throw(INTERP_KERNEL::Exception);
-    MEDCouplingFieldDouble *buildCellFieldOnWithGhost(MEDCouplingCartesianAMRMeshGen *mesh, const std::string& fieldName) const throw(INTERP_KERNEL::Exception);
-    MEDCouplingFieldDouble *buildCellFieldOnWithoutGhost(MEDCouplingCartesianAMRMeshGen *mesh, const std::string& fieldName) const throw(INTERP_KERNEL::Exception);
-    bool changeGodFather(MEDCouplingCartesianAMRMesh *gf) throw(INTERP_KERNEL::Exception);
-    MEDCouplingAMRAttribute *projectTo(MEDCouplingCartesianAMRMesh *targetGF) const throw(INTERP_KERNEL::Exception);
-    std::string writeVTHB(const std::string& fileName) const throw(INTERP_KERNEL::Exception);
+    int getNumberOfLevels() const;
+    MEDCouplingAMRAttribute *deepCopy() const;
+    MEDCouplingAMRAttribute *deepCpyWithoutGodFather() const;
+    MEDCouplingFieldDouble *buildCellFieldOnRecurseWithoutOverlapWithoutGhost(MEDCouplingCartesianAMRMeshGen *mesh, const std::string& fieldName) const;
+    MEDCouplingFieldDouble *buildCellFieldOnWithGhost(MEDCouplingCartesianAMRMeshGen *mesh, const std::string& fieldName) const;
+    MEDCouplingFieldDouble *buildCellFieldOnWithoutGhost(MEDCouplingCartesianAMRMeshGen *mesh, const std::string& fieldName) const;
+    bool changeGodFather(MEDCouplingCartesianAMRMesh *gf);
+    MEDCouplingAMRAttribute *projectTo(MEDCouplingCartesianAMRMesh *targetGF) const;
+    std::string writeVTHB(const std::string& fileName) const;
     %extend
     {
-      static MEDCouplingAMRAttribute *New(MEDCouplingCartesianAMRMesh *gf, PyObject *fieldNames, int ghostLev) throw(INTERP_KERNEL::Exception)
+      static MEDCouplingAMRAttribute *New(MEDCouplingCartesianAMRMesh *gf, PyObject *fieldNames, int ghostLev)
       {
         std::vector< std::pair<std::string,int> > fieldNamesCpp0;
         std::vector< std::pair<std::string, std::vector<std::string> > > fieldNamesCpp1;
@@ -5890,12 +5733,12 @@ namespace MEDCoupling
         return ret;
       }
 
-      MEDCouplingAMRAttribute(MEDCouplingCartesianAMRMesh *gf, PyObject *fieldNames, int ghostLev) throw(INTERP_KERNEL::Exception)
+      MEDCouplingAMRAttribute(MEDCouplingCartesianAMRMesh *gf, PyObject *fieldNames, int ghostLev)
       {
         return MEDCoupling_MEDCouplingAMRAttribute_New(gf,fieldNames,ghostLev);
       }
 
-      DataArrayDouble *getFieldOn(MEDCouplingCartesianAMRMeshGen *mesh, const std::string& fieldName) const throw(INTERP_KERNEL::Exception)
+      DataArrayDouble *getFieldOn(MEDCouplingCartesianAMRMeshGen *mesh, const std::string& fieldName) const
       {
         const DataArrayDouble *ret(self->getFieldOn(mesh,fieldName));
         DataArrayDouble *ret2(const_cast<DataArrayDouble *>(ret));
@@ -5904,14 +5747,14 @@ namespace MEDCoupling
         return ret2;
       }
 
-      void spillInfoOnComponents(PyObject *compNames) throw(INTERP_KERNEL::Exception)
+      void spillInfoOnComponents(PyObject *compNames)
       {
         std::vector< std::vector<std::string> > compNamesCpp;
         convertPyToVectorOfVectorOfString(compNames,compNamesCpp);
         self->spillInfoOnComponents(compNamesCpp);
       }
 
-      void spillNatures(PyObject *nfs) throw(INTERP_KERNEL::Exception)
+      void spillNatures(PyObject *nfs)
       {
         std::vector<int> inp0;
         if(!fillIntVector(nfs,inp0))
@@ -5923,7 +5766,7 @@ namespace MEDCoupling
         self->spillNatures(inp00);
       }
       
-      PyObject *retrieveFieldsOn(MEDCouplingCartesianAMRMeshGen *mesh) const throw(INTERP_KERNEL::Exception)
+      PyObject *retrieveFieldsOn(MEDCouplingCartesianAMRMeshGen *mesh) const
       {
         std::vector<DataArrayDouble *> ret(self->retrieveFieldsOn(mesh));
         int sz((int)ret.size());
@@ -5938,34 +5781,34 @@ namespace MEDCoupling
   class DenseMatrix : public RefCountObject, public TimeLabel
   {
   public:
-    static DenseMatrix *New(int nbRows, int nbCols) throw(INTERP_KERNEL::Exception);
-    static DenseMatrix *New(DataArrayDouble *array, int nbRows, int nbCols) throw(INTERP_KERNEL::Exception);
-    DenseMatrix *deepCopy() const throw(INTERP_KERNEL::Exception);
-    DenseMatrix *shallowCpy() const throw(INTERP_KERNEL::Exception);
+    static DenseMatrix *New(int nbRows, int nbCols);
+    static DenseMatrix *New(DataArrayDouble *array, int nbRows, int nbCols);
+    DenseMatrix *deepCopy() const;
+    DenseMatrix *shallowCpy() const;
     //
-    int getNumberOfRows() const throw(INTERP_KERNEL::Exception);
-    int getNumberOfCols() const throw(INTERP_KERNEL::Exception);
-    int getNbOfElems() const throw(INTERP_KERNEL::Exception);
-    void reBuild(DataArrayDouble *array, int nbRows=-1, int nbCols=-1) throw(INTERP_KERNEL::Exception);
-    void reShape(int nbRows, int nbCols) throw(INTERP_KERNEL::Exception);
-    void transpose() throw(INTERP_KERNEL::Exception);
+    int getNumberOfRows() const;
+    int getNumberOfCols() const;
+    int getNbOfElems() const;
+    void reBuild(DataArrayDouble *array, int nbRows=-1, int nbCols=-1);
+    void reShape(int nbRows, int nbCols);
+    void transpose();
     //
-    bool isEqual(const DenseMatrix& other, double eps) const throw(INTERP_KERNEL::Exception);
-    DataArrayDouble *matVecMult(const DataArrayDouble *vec) const throw(INTERP_KERNEL::Exception);
-    static DataArrayDouble *MatVecMult(const DenseMatrix *mat, const DataArrayDouble *vec) throw(INTERP_KERNEL::Exception);
+    bool isEqual(const DenseMatrix& other, double eps) const;
+    DataArrayDouble *matVecMult(const DataArrayDouble *vec) const;
+    static DataArrayDouble *MatVecMult(const DenseMatrix *mat, const DataArrayDouble *vec);
     %extend
     {
-      DenseMatrix(int nbRows, int nbCols) throw(INTERP_KERNEL::Exception)
+      DenseMatrix(int nbRows, int nbCols)
       {
         return DenseMatrix::New(nbRows,nbCols);
       }
 
-      DenseMatrix(DataArrayDouble *array, int nbRows, int nbCols) throw(INTERP_KERNEL::Exception)
+      DenseMatrix(DataArrayDouble *array, int nbRows, int nbCols)
       {
         return DenseMatrix::New(array,nbRows,nbCols);
       }
 
-      PyObject *isEqualIfNotWhy(const DenseMatrix& other, double eps) const throw(INTERP_KERNEL::Exception)
+      PyObject *isEqualIfNotWhy(const DenseMatrix& other, double eps) const
       {
         std::string ret1;
         bool ret0=self->isEqualIfNotWhy(other,eps,ret1);
@@ -5977,7 +5820,7 @@ namespace MEDCoupling
         return ret;
       }
 
-      DataArrayDouble *getData() throw(INTERP_KERNEL::Exception)
+      DataArrayDouble *getData()
       {
         DataArrayDouble *ret(self->getData());
         if(ret)
@@ -5985,41 +5828,41 @@ namespace MEDCoupling
         return ret;
       }
 
-      DenseMatrix *__add__(const DenseMatrix *other) throw(INTERP_KERNEL::Exception)
+      DenseMatrix *__add__(const DenseMatrix *other)
       {
         return MEDCoupling::DenseMatrix::Add(self,other);
       }
 
-      DenseMatrix *__sub__(const DenseMatrix *other) throw(INTERP_KERNEL::Exception)
+      DenseMatrix *__sub__(const DenseMatrix *other)
       {
         return MEDCoupling::DenseMatrix::Substract(self,other);
       }
 
-      DenseMatrix *__mul__(const DenseMatrix *other) throw(INTERP_KERNEL::Exception)
+      DenseMatrix *__mul__(const DenseMatrix *other)
       {
         return MEDCoupling::DenseMatrix::Multiply(self,other);
       }
 
-      DenseMatrix *__mul__(const DataArrayDouble *other) throw(INTERP_KERNEL::Exception)
+      DenseMatrix *__mul__(const DataArrayDouble *other)
       {
         return MEDCoupling::DenseMatrix::Multiply(self,other);
       }
 
-      PyObject *___iadd___(PyObject *trueSelf, const DenseMatrix *other) throw(INTERP_KERNEL::Exception)
+      PyObject *___iadd___(PyObject *trueSelf, const DenseMatrix *other)
       {
         self->addEqual(other);
         Py_XINCREF(trueSelf);
         return trueSelf;
       }
 
-      PyObject *___isub___(PyObject *trueSelf, const DenseMatrix *other) throw(INTERP_KERNEL::Exception)
+      PyObject *___isub___(PyObject *trueSelf, const DenseMatrix *other)
       {
         self->substractEqual(other);
         Py_XINCREF(trueSelf);
         return trueSelf;
       }
 #ifdef WITH_NUMPY
-      PyObject *toNumPyMatrix() throw(INTERP_KERNEL::Exception) // not const. It is not a bug !
+      PyObject *toNumPyMatrix() // not const. It is not a bug !
       {
         PyObject *obj(ToNumPyArrayUnderground<DataArrayDouble,double>(self->getData(),NPY_DOUBLE,"DataArrayDouble",self->getNumberOfRows(),self->getNumberOfCols()));
         return obj;
@@ -6056,6 +5899,18 @@ def MEDCouplingFieldFloatReduce(self):
     self.checkConsistencyLight()
     d=(self.getTypeOfField(),self.getTimeDiscretization())
     return MEDCouplingStdReduceFunct,(MEDCouplingFieldFloat,(d,(self.__getstate__()),))
+
+#
+# Forwarding DataArrayInt functions to MEDCouplingUMesh:
+#
+MEDCouplingUMesh.ExtractFromIndexedArrays           = DataArrayInt.ExtractFromIndexedArrays
+MEDCouplingUMesh.ExtractFromIndexedArraysSlice      = DataArrayInt.ExtractFromIndexedArraysSlice
+MEDCouplingUMesh.SetPartOfIndexedArrays             = DataArrayInt.SetPartOfIndexedArrays
+##MEDCouplingUMesh.SetPartOfIndexedArraysSlice        = DataArrayInt.SetPartOfIndexedArraysSlice
+MEDCouplingUMesh.SetPartOfIndexedArraysSameIdx      = DataArrayInt.SetPartOfIndexedArraysSameIdx
+MEDCouplingUMesh.RemoveIdsFromIndexedArrays         = DataArrayInt.RemoveIdsFromIndexedArrays
+##MEDCouplingUMesh.SetPartOfIndexedArraysSameIdxSlice = DataArrayInt.SetPartOfIndexedArraysSameIdxSlice
+
 %}
 
 %pythoncode %{
index 359bc7ecd8decb0c579c4d4b4e4f592545f0ead2..1601400b5de4413151c0f8d81645c7d406cbc07b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2017  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -55,7 +55,9 @@ void numarrdeal(void *pt, void *wron)
     {
       typedef void (*MyDeallocator)(void *,void *);
       MyDeallocator deall=(MyDeallocator)wronc[1];
-      deall(pt,NULL);
+      int64_t *offset=reinterpret_cast<int64_t*>(wronc[2]);
+      deall(pt,offset);
+      delete offset;
       Py_XDECREF(weakRefOnOwner);
     }
   delete [] wronc;
index ab100808969b452925b584f871a35b49fe3964a0..29049764bbb540c2c9968f111e9894176a4c7850 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2017  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -182,7 +182,7 @@ MCData *BuildNewInstance(PyObject *elt0, int npyObjectType, PyTypeObject *pytype
           std::size_t nbOfElems(sz0*sz1);
           T *dataCpy=(T*)malloc(sizeof(T)*nbOfElems);
           std::copy(reinterpret_cast<const T*>(data),reinterpret_cast<const T*>(data)+nbOfElems,dataCpy);
-          ret->useArray(dataCpy,true,MEDCoupling::C_DEALLOC,sz0,sz1);
+          ret->useArray(dataCpy,true,MEDCoupling::DeallocType::C_DEALLOC,sz0,sz1);
           return ret.retn();
         }
       typename MEDCoupling::MemArray<T>& mma=ret->accessToMemArray();
@@ -190,7 +190,7 @@ MCData *BuildNewInstance(PyObject *elt0, int npyObjectType, PyTypeObject *pytype
         {
           PyCallBackDataArraySt<MCData> *cb=PyObject_GC_New(PyCallBackDataArraySt<MCData>,pytype);
           cb->_pt_mc=ret;
-          ret->useArray(reinterpret_cast<const T *>(data),true,MEDCoupling::C_DEALLOC,sz0,sz1);
+          ret->useArray(reinterpret_cast<const T *>(data),true,MEDCoupling::DeallocType::C_DEALLOC,sz0,sz1);
           PyObject *ref=PyWeakref_NewRef(deepestObj,(PyObject *)cb);
           void **objs=new void *[2]; objs[0]=cb; objs[1]=ref;
           mma.setParameterForDeallocator(objs);
@@ -199,17 +199,23 @@ MCData *BuildNewInstance(PyObject *elt0, int npyObjectType, PyTypeObject *pytype
         }
       else
         {
-          ret->useArray(reinterpret_cast<const T *>(data),true,MEDCoupling::C_DEALLOC,sz0,sz1);
+          ret->useArray(reinterpret_cast<const T *>(data),true,MEDCoupling::DeallocType::C_DEALLOC_WITH_OFFSET,sz0,sz1);
           PyObject *ref=PyWeakref_NewRef(reinterpret_cast<PyObject *>(eltOwning),NULL);
-          typename MEDCoupling::MemArray<T>::Deallocator tmp(MEDCoupling::MemArray<T>::CDeallocator);
+          typename MEDCoupling::MemArray<T>::Deallocator tmp(MEDCoupling::MemArray<T>::COffsetDeallocator);
           void **tmp2 = reinterpret_cast<void**>(&tmp); // MSVC2010 does not support constructor()
-          void **objs=new void *[2]; objs[0]=ref; objs[1]=*tmp2;
+          const char *dataEltOwning(PyArray_BYTES(eltOwning));//In case of input array is a sub array of a 2D,3D... array there is an offset
+          int64_t offset(0);
+          if(data!=dataEltOwning)
+            {
+              offset=data>dataEltOwning?-((int64_t)(std::distance(dataEltOwning,data))):(int64_t)std::distance(data,dataEltOwning);
+            }
+          void **objs=new void *[3]; objs[0]=ref; objs[1]=*tmp2; objs[2]=new int64_t(offset);
           mma.setParameterForDeallocator(objs);
           mma.setSpecificDeallocator(numarrdeal);
         }
     }
   else if(PyArray_ISBEHAVED_RO(elt0))
-    ret->useArray(reinterpret_cast<const T *>(data),false,MEDCoupling::CPP_DEALLOC,sz0,sz1);
+    ret->useArray(reinterpret_cast<const T *>(data),false,MEDCoupling::DeallocType::CPP_DEALLOC,sz0,sz1);
   return ret.retn();
 }
 
@@ -308,7 +314,7 @@ PyObject *ToNumPyArrayUnderground(MCData *self, int npyObjectType, const char *M
           PyObject *ref(PyWeakref_NewRef(ret,NULL));
           typename MEDCoupling::MemArray<T>::Deallocator tmp(mem.getDeallocator());
           void **tmp2 = reinterpret_cast<void**>(&tmp); // MSVC2010 does not support constructor()
-          void **objs=new void *[2]; objs[0]=reinterpret_cast<void*>(ref); objs[1]=*tmp2;
+          void **objs=new void *[3]; objs[0]=reinterpret_cast<void*>(ref); objs[1]=*tmp2; objs[2]=new int64_t(0);
           mem.setParameterForDeallocator(objs);
           mem.setSpecificDeallocator(numarrdeal);
           return ret;
@@ -2608,7 +2614,7 @@ typename MEDCoupling::Traits<T>::ArrayType *DataArrayT__setitem__internal(typena
             return self;
           case 2:
             tmp=MEDCoupling::Traits<T>::ArrayType::New();
-            tmp->useArray(&v1[0],false,MEDCoupling::CPP_DEALLOC,1,v1.size());
+            tmp->useArray(&v1[0],false,MEDCoupling::DeallocType::CPP_DEALLOC,1,v1.size());
             self->setPartOfValues1(tmp,it1,it1+1,1,0,nbOfComponents,1,false);
             return self;
           case 3:
@@ -2628,7 +2634,7 @@ typename MEDCoupling::Traits<T>::ArrayType *DataArrayT__setitem__internal(typena
             return self;
           case 2:
             tmp=MEDCoupling::Traits<T>::ArrayType::New();
-            tmp->useArray(&v1[0],false,MEDCoupling::CPP_DEALLOC,1,v1.size());
+            tmp->useArray(&v1[0],false,MEDCoupling::DeallocType::CPP_DEALLOC,1,v1.size());
             self->setPartOfValues3(tmp,&vt1[0],&vt1[0]+vt1.size(),0,nbOfComponents,1,false);
             return self;
           case 3:
@@ -2648,7 +2654,7 @@ typename MEDCoupling::Traits<T>::ArrayType *DataArrayT__setitem__internal(typena
             return self;
           case 2:
             tmp=MEDCoupling::Traits<T>::ArrayType::New();
-            tmp->useArray(&v1[0],false,MEDCoupling::CPP_DEALLOC,1,v1.size());
+            tmp->useArray(&v1[0],false,MEDCoupling::DeallocType::CPP_DEALLOC,1,v1.size());
             self->setPartOfValues1(tmp,pt1.first,pt1.second.first,pt1.second.second,0,nbOfComponents,1,false);
             return self;
           case 3:
@@ -2668,7 +2674,7 @@ typename MEDCoupling::Traits<T>::ArrayType *DataArrayT__setitem__internal(typena
             return self;
           case 2:
             tmp=MEDCoupling::Traits<T>::ArrayType::New();
-            tmp->useArray(&v1[0],false,MEDCoupling::CPP_DEALLOC,1,v1.size());
+            tmp->useArray(&v1[0],false,MEDCoupling::DeallocType::CPP_DEALLOC,1,v1.size());
             self->setPartOfValues3(tmp,dt1->getConstPointer(),dt1->getConstPointer()+dt1->getNbOfElems(),0,nbOfComponents,1,false);
             return self;
           case 3:
@@ -2688,7 +2694,7 @@ typename MEDCoupling::Traits<T>::ArrayType *DataArrayT__setitem__internal(typena
             return self;
           case 2:
             tmp=MEDCoupling::Traits<T>::ArrayType::New();
-            tmp->useArray(&v1[0],false,MEDCoupling::CPP_DEALLOC,1,v1.size());
+            tmp->useArray(&v1[0],false,MEDCoupling::DeallocType::CPP_DEALLOC,1,v1.size());
             self->setPartOfValues1(tmp,it1,it1+1,1,ic1,ic1+1,1,false);
             return self;
           case 3:
@@ -2708,7 +2714,7 @@ typename MEDCoupling::Traits<T>::ArrayType *DataArrayT__setitem__internal(typena
             return self;
           case 2:
             tmp=MEDCoupling::Traits<T>::ArrayType::New();
-            tmp->useArray(&v1[0],false,MEDCoupling::CPP_DEALLOC,1,v1.size());
+            tmp->useArray(&v1[0],false,MEDCoupling::DeallocType::CPP_DEALLOC,1,v1.size());
             self->setPartOfValues3(tmp,&vt1[0],&vt1[0]+vt1.size(),ic1,ic1+1,1,false);
             return self;
           case 3:
@@ -2728,7 +2734,7 @@ typename MEDCoupling::Traits<T>::ArrayType *DataArrayT__setitem__internal(typena
             return self;
           case 2:
             tmp=MEDCoupling::Traits<T>::ArrayType::New();
-            tmp->useArray(&v1[0],false,MEDCoupling::CPP_DEALLOC,1,v1.size());
+            tmp->useArray(&v1[0],false,MEDCoupling::DeallocType::CPP_DEALLOC,1,v1.size());
             self->setPartOfValues1(tmp,pt1.first,pt1.second.first,pt1.second.second,ic1,ic1+1,1,false);
             return self;
           case 3:
@@ -2748,7 +2754,7 @@ typename MEDCoupling::Traits<T>::ArrayType *DataArrayT__setitem__internal(typena
             return self;
           case 2:
             tmp=MEDCoupling::Traits<T>::ArrayType::New();
-            tmp->useArray(&v1[0],false,MEDCoupling::CPP_DEALLOC,1,v1.size());
+            tmp->useArray(&v1[0],false,MEDCoupling::DeallocType::CPP_DEALLOC,1,v1.size());
             self->setPartOfValues3(tmp,dt1->getConstPointer(),dt1->getConstPointer()+dt1->getNbOfElems(),ic1,ic1+1,1,false);
             return self;
           case 3:
@@ -2768,7 +2774,7 @@ typename MEDCoupling::Traits<T>::ArrayType *DataArrayT__setitem__internal(typena
             return self;
           case 2:
             tmp=MEDCoupling::Traits<T>::ArrayType::New();
-            tmp->useArray(&v1[0],false,MEDCoupling::CPP_DEALLOC,1,v1.size());
+            tmp->useArray(&v1[0],false,MEDCoupling::DeallocType::CPP_DEALLOC,1,v1.size());
             self->setPartOfValues2(tmp,&it1,&it1+1,&vc1[0],&vc1[0]+vc1.size(),false);
             return self;
           case 3:
@@ -2788,7 +2794,7 @@ typename MEDCoupling::Traits<T>::ArrayType *DataArrayT__setitem__internal(typena
             return self;
           case 2:
             tmp=MEDCoupling::Traits<T>::ArrayType::New();
-            tmp->useArray(&v1[0],false,MEDCoupling::CPP_DEALLOC,1,v1.size());
+            tmp->useArray(&v1[0],false,MEDCoupling::DeallocType::CPP_DEALLOC,1,v1.size());
             self->setPartOfValues2(tmp,&vt1[0],&vt1[0]+vt1.size(),&vc1[0],&vc1[0]+vc1.size(),false);
             return self;
           case 3:
@@ -2808,7 +2814,7 @@ typename MEDCoupling::Traits<T>::ArrayType *DataArrayT__setitem__internal(typena
             return self;
           case 2:
             tmp=MEDCoupling::Traits<T>::ArrayType::New();
-            tmp->useArray(&v1[0],false,MEDCoupling::CPP_DEALLOC,1,v1.size());
+            tmp->useArray(&v1[0],false,MEDCoupling::DeallocType::CPP_DEALLOC,1,v1.size());
             self->setPartOfValues4(tmp,pt1.first,pt1.second.first,pt1.second.second,&vc1[0],&vc1[0]+vc1.size(),false);
             return self;
           case 3:
@@ -2828,7 +2834,7 @@ typename MEDCoupling::Traits<T>::ArrayType *DataArrayT__setitem__internal(typena
             return self;
           case 2:
             tmp=MEDCoupling::Traits<T>::ArrayType::New();
-            tmp->useArray(&v1[0],false,MEDCoupling::CPP_DEALLOC,1,v1.size());
+            tmp->useArray(&v1[0],false,MEDCoupling::DeallocType::CPP_DEALLOC,1,v1.size());
             self->setPartOfValues2(tmp,dt1->getConstPointer(),dt1->getConstPointer()+dt1->getNbOfElems(),&vc1[0],&vc1[0]+vc1.size(),false);
             return self;
           case 3:
@@ -2848,7 +2854,7 @@ typename MEDCoupling::Traits<T>::ArrayType *DataArrayT__setitem__internal(typena
             return self;
           case 2:
             tmp=MEDCoupling::Traits<T>::ArrayType::New();
-            tmp->useArray(&v1[0],false,MEDCoupling::CPP_DEALLOC,1,v1.size());
+            tmp->useArray(&v1[0],false,MEDCoupling::DeallocType::CPP_DEALLOC,1,v1.size());
             self->setPartOfValues1(tmp,it1,it1+1,1,pc1.first,pc1.second.first,pc1.second.second,false);
             return self;
           case 3:
@@ -2868,7 +2874,7 @@ typename MEDCoupling::Traits<T>::ArrayType *DataArrayT__setitem__internal(typena
             return self;
           case 2:
             tmp=MEDCoupling::Traits<T>::ArrayType::New();
-            tmp->useArray(&v1[0],false,MEDCoupling::CPP_DEALLOC,1,v1.size());
+            tmp->useArray(&v1[0],false,MEDCoupling::DeallocType::CPP_DEALLOC,1,v1.size());
             self->setPartOfValues3(tmp,&vt1[0],&vt1[0]+vt1.size(),pc1.first,pc1.second.first,pc1.second.second,false);
             return self;
           case 3:
@@ -2888,7 +2894,7 @@ typename MEDCoupling::Traits<T>::ArrayType *DataArrayT__setitem__internal(typena
             return self;
           case 2:
             tmp=MEDCoupling::Traits<T>::ArrayType::New();
-            tmp->useArray(&v1[0],false,MEDCoupling::CPP_DEALLOC,1,v1.size());
+            tmp->useArray(&v1[0],false,MEDCoupling::DeallocType::CPP_DEALLOC,1,v1.size());
             self->setPartOfValues1(tmp,pt1.first,pt1.second.first,pt1.second.second,pc1.first,pc1.second.first,pc1.second.second,false);
             return self;
           case 3:
@@ -2908,7 +2914,7 @@ typename MEDCoupling::Traits<T>::ArrayType *DataArrayT__setitem__internal(typena
             return self;
           case 2:
             tmp=MEDCoupling::Traits<T>::ArrayType::New();
-            tmp->useArray(&v1[0],false,MEDCoupling::CPP_DEALLOC,1,v1.size());
+            tmp->useArray(&v1[0],false,MEDCoupling::DeallocType::CPP_DEALLOC,1,v1.size());
             self->setPartOfValues3(tmp,dt1->getConstPointer(),dt1->getConstPointer()+dt1->getNbOfElems(),pc1.first,pc1.second.first,pc1.second.second,false);
             return self;
           case 3:
@@ -3138,7 +3144,7 @@ PyObject *DataArrayT_imul__internal(PyObject *trueSelf, PyObject *obj, typename
       }
     case 4:
       {
-        MEDCoupling::MCAuto< typename MEDCoupling::Traits<T>::ArrayType > aaa(MEDCoupling::Traits<T>::ArrayType::New()); aaa->useArray(&bb[0],false,MEDCoupling::CPP_DEALLOC,1,(int)bb.size());
+        MEDCoupling::MCAuto< typename MEDCoupling::Traits<T>::ArrayType > aaa(MEDCoupling::Traits<T>::ArrayType::New()); aaa->useArray(&bb[0],false,MEDCoupling::DeallocType::CPP_DEALLOC,1,(int)bb.size());
         self->multiplyEqual(aaa);
         Py_XINCREF(trueSelf);
         return trueSelf;
@@ -3183,7 +3189,7 @@ PyObject *DataArrayT_idiv__internal(PyObject *trueSelf, PyObject *obj, typename
       }
     case 4:
       {
-        MEDCoupling::MCAuto< typename MEDCoupling::Traits<T>::ArrayType > aaa(MEDCoupling::Traits<T>::ArrayType::New()); aaa->useArray(&bb[0],false,MEDCoupling::CPP_DEALLOC,1,(int)bb.size());
+        MEDCoupling::MCAuto< typename MEDCoupling::Traits<T>::ArrayType > aaa(MEDCoupling::Traits<T>::ArrayType::New()); aaa->useArray(&bb[0],false,MEDCoupling::DeallocType::CPP_DEALLOC,1,(int)bb.size());
         self->divideEqual(aaa);
         Py_XINCREF(trueSelf);
         return trueSelf;
@@ -3226,7 +3232,7 @@ PyObject *DataArrayT_iadd__internal(PyObject *trueSelf, PyObject *obj, typename
       }
     case 4:
       {
-        MEDCoupling::MCAuto< typename MEDCoupling::Traits<T>::ArrayType > aaa(MEDCoupling::Traits<T>::ArrayType::New()); aaa->useArray(&bb[0],false,MEDCoupling::CPP_DEALLOC,1,(int)bb.size());
+        MEDCoupling::MCAuto< typename MEDCoupling::Traits<T>::ArrayType > aaa(MEDCoupling::Traits<T>::ArrayType::New()); aaa->useArray(&bb[0],false,MEDCoupling::DeallocType::CPP_DEALLOC,1,(int)bb.size());
         self->addEqual(aaa);
         Py_XINCREF(trueSelf);
         return trueSelf;
@@ -3269,7 +3275,7 @@ PyObject *DataArrayT_isub__internal(PyObject *trueSelf, PyObject *obj, typename
       }
     case 4:
       {
-        MEDCoupling::MCAuto< typename MEDCoupling::Traits<T>::ArrayType > aaa(MEDCoupling::Traits<T>::ArrayType::New()); aaa->useArray(&bb[0],false,MEDCoupling::CPP_DEALLOC,1,(int)bb.size());
+        MEDCoupling::MCAuto< typename MEDCoupling::Traits<T>::ArrayType > aaa(MEDCoupling::Traits<T>::ArrayType::New()); aaa->useArray(&bb[0],false,MEDCoupling::DeallocType::CPP_DEALLOC,1,(int)bb.size());
         self->substractEqual(aaa);
         Py_XINCREF(trueSelf);
         return trueSelf;
@@ -3369,7 +3375,7 @@ typename MEDCoupling::Traits<T>::ArrayType *DataArrayFPT_rmul(typename MEDCoupli
       }
     case 4:
       {
-        typename MEDCoupling::MCAuto<typename MEDCoupling::Traits<T>::ArrayType> aaa(MEDCoupling::Traits<T>::ArrayType::New()); aaa->useArray(&bb[0],false,MEDCoupling::CPP_DEALLOC,1,(int)bb.size());
+        typename MEDCoupling::MCAuto<typename MEDCoupling::Traits<T>::ArrayType> aaa(MEDCoupling::Traits<T>::ArrayType::New()); aaa->useArray(&bb[0],false,MEDCoupling::DeallocType::CPP_DEALLOC,1,(int)bb.size());
         return MEDCoupling::Traits<T>::ArrayType::Multiply(self,aaa);
       }
     default:
index f6861f0d66fa8cbc87641e961d6a699e55a2325a..7f26f4b61e826510325b9e1b51060313869561b8 100644 (file)
@@ -1,5 +1,5 @@
 #  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+# Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -23,7 +23,7 @@ import sys
 if sys.platform == "win32":
     from MEDCouplingCompat import *
 else:
-    from MEDCoupling import *
+    from medcoupling import *
 
 class MEDCouplingDataForTest:
     def build2DTargetMesh_1(cls):
@@ -42,7 +42,7 @@ class MEDCouplingDataForTest:
         myCoords.setValues(targetCoords,9,2);
         targetMesh.setCoords(myCoords);
         return targetMesh;
-    
+
     def build2DSourceMesh_1(cls):
         sourceCoords=[-0.3,-0.3, 0.7,-0.3, -0.3,0.7, 0.7,0.7]
         sourceConn=[0,3,1,0,2,3]
@@ -55,7 +55,7 @@ class MEDCouplingDataForTest:
         myCoords.setValues(sourceCoords,4,2);
         sourceMesh.setCoords(myCoords);
         return sourceMesh;
-        
+
     def build3DTargetMesh_1(cls):
         targetCoords=[ 0., 0., 0., 50., 0., 0. , 200., 0., 0.  , 0., 50., 0., 50., 50., 0. , 200., 50., 0.,   0., 200., 0., 50., 200., 0. , 200., 200., 0. ,
                        0., 0., 50., 50., 0., 50. , 200., 0., 50.  , 0., 50., 50., 50., 50., 50. , 200., 50., 50.,   0., 200., 50., 50., 200., 50. , 200., 200., 50. ,
@@ -98,7 +98,7 @@ class MEDCouplingDataForTest:
         myCoords.setValues(sourceCoords,9,3);
         sourceMesh.setCoords(myCoords);
         return sourceMesh;
-        
+
 
     def build3DSurfTargetMesh_1(self):
         targetCoords=[-0.3,-0.3,0.5, 0.2,-0.3,1., 0.7,-0.3,1.5, -0.3,0.2,0.5, 0.2,0.2,1., 0.7,0.2,1.5, -0.3,0.7,0.5, 0.2,0.7,1., 0.7,0.7,1.5]
@@ -143,7 +143,7 @@ class MEDCouplingDataForTest:
             30,41,31,33,45,56,46,48,  31,32,34,37,43,36,-1,31,46,51,36,-1,36,51,58,43,-1,43,37,52,58,-1,37,34,49,52,-1,34,32,47,49,-1,32,31,46,47,-1,46,51,58,52,49,47,
             31,36,35,33,46,51,50,48,  43,40,39,36,58,55,54,51,
             41,38,37,34,32,31,-1,41,56,46,31,-1,31,46,47,32,-1,32,47,49,34,-1,34,49,52,37,-1,37,38,53,52,-1,38,41,56,53,-1,56,46,47,49,52,53,
-            37,42,44,43,52,57,59,58]            
+            37,42,44,43,52,57,59,58]
         conn2=[7,12,14,13, 11,8,7,4,2,1, 13,10,9,6, 1,6,5,3, 1,2,4,7,13,6, 0,11,1,3]
         #
         ret=MEDCouplingUMesh.New();
@@ -188,7 +188,7 @@ class MEDCouplingDataForTest:
         mesh2D.finishInsertingCells();
         mesh2D.setCoords(myCoords);
         return ret,mesh2D
-    
+
     def buildCU1DMesh_U(self):
         coords=[ 0.0, 0.3, 0.75, 1.0 ]
         conn=[ 0,1, 1,2, 2,3 ]
@@ -284,7 +284,7 @@ class MEDCouplingDataForTest:
         myCoords.setValues(targetCoords,9,2);
         targetMesh.setCoords(myCoords);
         return targetMesh;
-    
+
     def build1DSourceMesh_2(cls):
         ret=MEDCouplingUMesh.New("1DSourceMesh",1);
         ret.allocateCells(4);
@@ -581,7 +581,7 @@ class MEDCouplingDataForTest:
         mesh2.insertNextCell(NORM_QUAD4,4,conn2[16:20])
         mesh2.finishInsertingCells();
         return [mesh,mesh2]
-    
+
     # 2D usecase1 for interpolation Gauss Pt-> Gauss Pt. Coming from ASTER : Please, do not touch
     def buildFieldOnGauss_1(self):
         coo=DataArrayDouble([1.0,0.0,1.33333333333333,0.0,1.66666666666667,0.0,0.923879532511287,0.38268343236509006,1.23183937668172,0.510244576486786,1.53979922085214,0.6378057206084831,2.0,0.0,1.8477590650225701,0.7653668647301801,0.9428090415820631,0.9428090415820631,1.1785113019775801,1.1785113019775801,1.4142135623731,1.41421356237309,0.707106781186548,0.707106781186547,0.38268343236509006,0.923879532511287,0.510244576486786,1.23183937668172,0.6378057206084831,1.53979922085214,0.7653668647301801,1.8477590650225701,3.1550283219328204e-17,1.33333333333333,1.16009632455949e-17,1.66666666666667,-2.7620050344068196e-16,2.0,-1.3810025172034098e-16,1.0,-2.0,0.0,-1.53979922085214,0.6378057206084831,-1.66666666666667,0.0,-1.33333333333333,0.0,-0.923879532511287,0.38268343236509006,-1.8477590650225701,0.7653668647301801,-0.9428090415820631,0.9428090415820631,-1.23183937668172,0.510244576486786,-1.83333333333333,0.0,-1.6937791429373599,0.701586292669331,-1.5,0.0,-1.30771370720431,0.26012042935483803,-1.16666666666667,0.0,-1.0778594545965,0.44646400442593803,-1.38578268717091,0.9259503883660041,-1.38581929876693,0.574025148547635,-1.06066017177982,1.06066017177982,-0.8314696123025451,0.5555702330196021,-1.0,0.0,-1.1785113019775801,1.1785113019775801,-0.707106781186548,0.707106781186547,-1.63464213400538,0.325150536693547,-1.9615705608064598,0.390180644032256,-1.47117792060485,0.292635483024192,-0.9807852804032301,0.19509032201612803,-1.524360955888,1.0185454272026,-1.2963624321753402,1.2963624321753402,-1.10862614973673,0.740760310692803,-0.970047881019636,0.6481652718562021,-0.824957911384305,0.824957911384305,-1.4142135623731,1.41421356237309,-1.7981063474059198,0.357665590362902,-1.1442494938037702,0.227605375685483,-1.66293922460509,1.1111404660392,-1.24720441845382,0.833355349529403,-0.7653668647301801,1.8477590650225701,-0.6378057206084831,1.53979922085214,-0.510244576486786,1.23183937668172,-0.701586292669331,1.6937791429373599,-0.574025148547635,1.38581929876693,-0.44646400442593803,1.0778594545965,-0.38268343236509006,0.923879532511287,-0.9259503883660041,1.38578268717091,-0.740760310692803,1.10862614973673,-0.5555702330196021,0.8314696123025451,-0.325150536693547,1.63464213400538,-0.26012042935483803,1.30771370720431,-0.19509032201612803,0.9807852804032301,1.6805133673525298e-18,1.83333333333333,-2.4643915380595496e-16,1.5,-1.4799359654427099e-16,1.16666666666667,-1.1111404660392,1.66293922460509,-0.39018064403225705,1.9615705608064598],73,2)
@@ -690,40 +690,40 @@ class MEDCouplingDataForTest:
 
     def buildCircle(self, center_X, center_Y, radius):
       from cmath import rect
-      from math import pi  
-  
+      from math import pi
+
       c = [rect(radius, i * pi / 4.0) for i in range(8)]
       coords = [c[-1].real,c[-1].imag,  c[3].real,c[3].imag,
                  c[5].real,c[5].imag,  c[1].real,c[1].imag]
       connec = list(range(4))
-      baseMesh = MEDCouplingUMesh.New("circle", 2)  
+      baseMesh = MEDCouplingUMesh.New("circle", 2)
       baseMesh.allocateCells(1)
       meshCoords = DataArrayDouble.New(coords, len(coords) // 2, 2)
       meshCoords += (center_X, center_Y)
       baseMesh.setCoords(meshCoords)
-  
-      baseMesh.insertNextCell(NORM_QPOLYG, connec)  
-      baseMesh.finishInsertingCells()  
+
+      baseMesh.insertNextCell(NORM_QPOLYG, connec)
+      baseMesh.finishInsertingCells()
       return baseMesh
 
-    def buildCircle2(self, center_X, center_Y, radius):  
+    def buildCircle2(self, center_X, center_Y, radius):
       from cmath import rect
-      from math import pi  
-  
+      from math import pi
+
       c = [rect(radius, i * pi / 4.0) for i in range(8)]
       coords = []
       for i in range(8):
           coords.extend([c[i].real,c[i].imag])
       connec = [7,5,3,1,  6,4,2,0]
-      baseMesh = MEDCouplingUMesh.New("circle", 2)  
+      baseMesh = MEDCouplingUMesh.New("circle", 2)
       baseMesh.allocateCells(1)
       meshCoords = DataArrayDouble.New(coords, len(coords) // 2, 2)
       meshCoords += (center_X, center_Y)
       baseMesh.setCoords(meshCoords)
-  
-      baseMesh.insertNextCell(NORM_QPOLYG, connec)  
-      baseMesh.finishInsertingCells()  
-      return baseMesh  
+
+      baseMesh.insertNextCell(NORM_QPOLYG, connec)
+      baseMesh.finishInsertingCells()
+      return baseMesh
 
     build2DTargetMesh_1=classmethod(build2DTargetMesh_1)
     build2DSourceMesh_1=classmethod(build2DSourceMesh_1)
index 13cbd33426bd66ec9e1f7dd49e0cbd6aa616d3db..26499420cc05b4ccc5df82fe420bc3c48fd3c8c3 100644 (file)
@@ -1,5 +1,5 @@
 #  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+# Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -23,7 +23,7 @@ import sys
 if sys.platform == "win32":
     from MEDCouplingCompat import *
 else:
-    from MEDCoupling import *
+    from medcoupling import *
 import unittest
 from math import pi, sqrt
 
@@ -72,11 +72,11 @@ class MEDCouplingBasicsTest(unittest.TestCase):
         field2 = MEDCouplingFieldDouble( ON_NODES )
         field2.setArray( valsArr2 )
 
-        # max field 
+        # max field
         fieldMax = MEDCouplingFieldDouble.MaxFields( field1, field2 )
         self.assertTrue( fieldMax.getArray().getValues() == valsMax )
 
-        # min field 
+        # min field
         fieldMin = MEDCouplingFieldDouble.MinFields( field1, field2 )
         self.assertTrue( fieldMin.getArray().getValues() == valsMin )
         #! [PySnippet_MEDCouplingFieldDouble_MaxFields_1]
@@ -182,7 +182,7 @@ class MEDCouplingBasicsTest(unittest.TestCase):
         # transform the field to a 3D vector field
         func = "IVec * b + JVec * a + KVec * sqrt( a*a + b*b ) + 10"
         varNames=["a","b"] # names used to refer to X and Y components
-        field.applyFuncNamedCompo( 3, varNames, func ) # require 3 components 
+        field.applyFuncNamedCompo( 3, varNames, func ) # require 3 components
         self.assertTrue( field.getNumberOfComponents() == 3 ) # 3 components as required
         #! [PySnippet_MEDCouplingFieldDouble_applyFunc3_1]
         #! [PySnippet_MEDCouplingFieldDouble_applyFunc3_2]
@@ -205,7 +205,7 @@ class MEDCouplingBasicsTest(unittest.TestCase):
         field.setArray( array )
         # transform the field to a 3D vector field
         func = "IVec * b + JVec * a + KVec * sqrt( a*a + b*b ) + 10"
-        field.applyFuncCompo( 3, func ) # require 3 components 
+        field.applyFuncCompo( 3, func ) # require 3 components
         self.assertTrue( field.getNumberOfComponents() == 3 ) # 3 components as required
         #! [PySnippet_MEDCouplingFieldDouble_applyFunc2_1]
         #! [PySnippet_MEDCouplingFieldDouble_applyFunc2_2]
@@ -226,7 +226,7 @@ class MEDCouplingBasicsTest(unittest.TestCase):
         field.setArray( array )
         # transform the field to a 3D vector field
         func = "IVec * b + JVec * a + KVec * sqrt( a*a + b*b ) + 10"
-        field.applyFunc( 3, func ) # require 3 components 
+        field.applyFunc( 3, func ) # require 3 components
         self.assertTrue( field.getNumberOfComponents() == 3 ) # 3 components as required
         #! [PySnippet_MEDCouplingFieldDouble_applyFunc_1]
         #! [PySnippet_MEDCouplingFieldDouble_applyFunc_2]
@@ -730,9 +730,9 @@ class MEDCouplingBasicsTest(unittest.TestCase):
         mesh.setMeshDimension(2)
         mesh.allocateCells(5)
         conn=[0,3,4,1, 1,2,4, 4,5,2, 6,7,4,3, 7,8,5,4]
-        mesh.insertNextCell(NORM_QUAD4,4,conn[0:4])  
-        mesh.insertNextCell(NORM_TRI3,3, conn[4:7])  
-        mesh.insertNextCell(NORM_TRI3,3, conn[7:10]) 
+        mesh.insertNextCell(NORM_QUAD4,4,conn[0:4])
+        mesh.insertNextCell(NORM_TRI3,3, conn[4:7])
+        mesh.insertNextCell(NORM_TRI3,3, conn[7:10])
         mesh.insertNextCell(NORM_QUAD4,4,conn[10:14])
         mesh.insertNextCell(NORM_QUAD4,4,conn[14:18])
         mesh.finishInsertingCells()
@@ -876,9 +876,9 @@ class MEDCouplingBasicsTest(unittest.TestCase):
         mesh.setMeshDimension(2)
         mesh.allocateCells(5)
         conn=[0,3,4,1, 1,4,2, 4,5,2, 6,7,4,3, 7,8,5,4]
-        mesh.insertNextCell(NORM_QUAD4,4,conn[0:4])  
-        mesh.insertNextCell(NORM_TRI3,3, conn[4:7])  
-        mesh.insertNextCell(NORM_TRI3,3, conn[7:10]) 
+        mesh.insertNextCell(NORM_QUAD4,4,conn[0:4])
+        mesh.insertNextCell(NORM_TRI3,3, conn[4:7])
+        mesh.insertNextCell(NORM_TRI3,3, conn[7:10])
         mesh.insertNextCell(NORM_QUAD4,4,conn[10:14])
         mesh.insertNextCell(NORM_QUAD4,4,conn[14:18])
         mesh.finishInsertingCells()
@@ -888,7 +888,7 @@ class MEDCouplingBasicsTest(unittest.TestCase):
         #! [PySnippet_MEDCouplingUMesh_findBoundaryNodes_1]
         #! [PySnippet_MEDCouplingUMesh_findBoundaryNodes_2]
         nodeIdsArr=mesh.findBoundaryNodes()
-        assert nodeIdsArr.getNumberOfTuples() == mesh.getNumberOfNodes() - 1 
+        assert nodeIdsArr.getNumberOfTuples() == mesh.getNumberOfNodes() - 1
         #! [PySnippet_MEDCouplingUMesh_findBoundaryNodes_2]
         return
 
@@ -898,9 +898,9 @@ class MEDCouplingBasicsTest(unittest.TestCase):
         mesh.setMeshDimension(2)
         mesh.allocateCells(5)
         conn=[0,3,4,1, 1,4,2, 4,5,2, 6,7,4,3, 7,8,5,4]
-        mesh.insertNextCell(NORM_QUAD4,4,conn[0:4])  
-        mesh.insertNextCell(NORM_TRI3,3, conn[4:7])  
-        mesh.insertNextCell(NORM_TRI3,3, conn[7:10]) 
+        mesh.insertNextCell(NORM_QUAD4,4,conn[0:4])
+        mesh.insertNextCell(NORM_TRI3,3, conn[4:7])
+        mesh.insertNextCell(NORM_TRI3,3, conn[7:10])
         mesh.insertNextCell(NORM_QUAD4,4,conn[10:14])
         mesh.insertNextCell(NORM_QUAD4,4,conn[14:18])
         mesh.finishInsertingCells()
@@ -1003,9 +1003,9 @@ class MEDCouplingBasicsTest(unittest.TestCase):
         mesh.setMeshDimension(2)
         mesh.allocateCells(5)
         conn=[0,3,4,1, 1,4,2, 4,5,2, 6,7,4,3, 7,8,5,4]
-        mesh.insertNextCell(NORM_QUAD4,4,conn[0:4])  
-        mesh.insertNextCell(NORM_TRI3,3, conn[4:7])  
-        mesh.insertNextCell(NORM_TRI3,3, conn[7:10]) 
+        mesh.insertNextCell(NORM_QUAD4,4,conn[0:4])
+        mesh.insertNextCell(NORM_TRI3,3, conn[4:7])
+        mesh.insertNextCell(NORM_TRI3,3, conn[7:10])
         mesh.insertNextCell(NORM_QUAD4,4,conn[10:14])
         mesh.insertNextCell(NORM_QUAD4,4,conn[14:18])
         mesh.finishInsertingCells()
@@ -1058,8 +1058,8 @@ class MEDCouplingBasicsTest(unittest.TestCase):
         mesh.setMeshDimension(2)
         mesh.allocateCells(5)
         conn=[0,3,4,1, 1,4,2, 4,5,2]
-        mesh.insertNextCell(NORM_QUAD4,4,conn[0:4]) 
-        mesh.insertNextCell(NORM_TRI3,3, conn[4:7]) 
+        mesh.insertNextCell(NORM_QUAD4,4,conn[0:4])
+        mesh.insertNextCell(NORM_TRI3,3, conn[4:7])
         mesh.insertNextCell(NORM_TRI3,3, conn[7:10])
         mesh.finishInsertingCells()
         coords=[0.3,-0.301, # 0
@@ -1121,9 +1121,9 @@ class MEDCouplingBasicsTest(unittest.TestCase):
         mesh.setMeshDimension(2)
         mesh.allocateCells(5)
         conn=[0,3,4,1, 1,4,2, 4,5,2, 6,7,4,3, 7,8,5,4]
-        mesh.insertNextCell(NORM_QUAD4,4,conn[0:4])  
-        mesh.insertNextCell(NORM_TRI3,3, conn[4:7])  
-        mesh.insertNextCell(NORM_TRI3,3, conn[7:10]) 
+        mesh.insertNextCell(NORM_QUAD4,4,conn[0:4])
+        mesh.insertNextCell(NORM_TRI3,3, conn[4:7])
+        mesh.insertNextCell(NORM_TRI3,3, conn[7:10])
         mesh.insertNextCell(NORM_QUAD4,4,conn[10:14])
         mesh.insertNextCell(NORM_QUAD4,4,conn[14:18])
         mesh.finishInsertingCells()
@@ -1146,9 +1146,9 @@ class MEDCouplingBasicsTest(unittest.TestCase):
         mesh.setMeshDimension(2)
         mesh.allocateCells(5)
         conn=[0,3,4,1, 1,4,2, 4,5,2, 6,7,4,3, 7,8,5,4]
-        mesh.insertNextCell(NORM_QUAD4,4,conn[0:4])  
-        mesh.insertNextCell(NORM_TRI3,3, conn[4:7])  
-        mesh.insertNextCell(NORM_TRI3,3, conn[7:10]) 
+        mesh.insertNextCell(NORM_QUAD4,4,conn[0:4])
+        mesh.insertNextCell(NORM_TRI3,3, conn[4:7])
+        mesh.insertNextCell(NORM_TRI3,3, conn[7:10])
         mesh.insertNextCell(NORM_QUAD4,4,conn[10:14])
         mesh.insertNextCell(NORM_QUAD4,4,conn[14:18])
         mesh.finishInsertingCells()
@@ -1904,7 +1904,7 @@ class MEDCouplingBasicsTest(unittest.TestCase):
     def testExample_DataArrayDouble_findCommonTuples1(self):
 #! [PySnippet_DataArrayDouble_findCommonTuples1]
         array2=[2.3,2.3, 1.2,1.2, 1.3,1.3, 2.3,2.3, 2.301,2.301, 0.8,0.8]
-        da=DataArrayDouble(array2,6,2)        
+        da=DataArrayDouble(array2,6,2)
 #! [PySnippet_DataArrayDouble_findCommonTuples1]
 #! [PySnippet_DataArrayDouble_findCommonTuples2]
         c,cI=da.findCommonTuples(1.01e-1)
@@ -1976,7 +1976,7 @@ class MEDCouplingBasicsTest(unittest.TestCase):
 #! [SnippeDataArrayIntKeepSelectedComponents1_1]
         arr1=[1,2,3,4,     # tuple 0
               11,12,13,14, # tuple 1
-              21,22,23,24, # 
+              21,22,23,24, #
               31,32,33,34,
               41,42,43,44]
         a1=DataArrayInt()
@@ -2111,7 +2111,7 @@ class MEDCouplingBasicsTest(unittest.TestCase):
 
     def testExampleUMeshStdBuild1(self):
 # ! [PySnippetUMeshStdBuild1_1]
-        coords=[-0.3,-0.3,0.,   0.2,-0.3,0.,   0.7,-0.3,0.,   -0.3,0.2,0.,   0.2,0.2,0., 
+        coords=[-0.3,-0.3,0.,   0.2,-0.3,0.,   0.7,-0.3,0.,   -0.3,0.2,0.,   0.2,0.2,0.,
                  0.7,0.2,0.,    -0.3,0.7,0.,    0.2,0.7,0.,     0.7,0.7,0. ]
         nodalConnPerCell=[0,3,4,1, 1,4,2, 4,5,2, 6,7,4,3, 7,8,5,4]
 # ! [PySnippetUMeshStdBuild1_1]
@@ -2130,7 +2130,7 @@ class MEDCouplingBasicsTest(unittest.TestCase):
         mesh.finishInsertingCells()
 # ! [PySnippetUMeshStdBuild1_3]
 # ! [PySnippetUMeshStdBuild1_4]
-        coordsArr=DataArrayDouble(coords,9,3)#here coordsArr are declared to have 3 components, mesh will deduce that its spaceDim==3. 
+        coordsArr=DataArrayDouble(coords,9,3)#here coordsArr are declared to have 3 components, mesh will deduce that its spaceDim==3.
         mesh.setCoords(coordsArr)#coordsArr contains 9 tuples, that is to say mesh contains 9 nodes.
 # ! [PySnippetUMeshStdBuild1_4]
 # ! [PySnippetUMeshStdBuild1_5]
@@ -2172,7 +2172,7 @@ class MEDCouplingBasicsTest(unittest.TestCase):
 
     def testExampleUMeshAdvBuild1(self):
 # ! [PySnippetUMeshAdvBuild1_1]
-        coords=[-0.3,-0.3,0.,   0.2,-0.3,0.,   0.7,-0.3,0.,   -0.3,0.2,0.,   0.2,0.2,0., 
+        coords=[-0.3,-0.3,0.,   0.2,-0.3,0.,   0.7,-0.3,0.,   -0.3,0.2,0.,   0.2,0.2,0.,
                  0.7,0.2,0.,    -0.3,0.7,0.,    0.2,0.7,0.,     0.7,0.7,0. ]
         nodalConnPerCell=[4,0,3,4,1, 3,1,4,2, 3,4,5,2, 4,6,7,4,3, 4,7,8,5,4]
         nodalConnPerCellIndex=[0,5,9,13,18,23]
index 8c5ca3fea466b3ff4649fed8044a81aaa53082c4..4b973f2573e1a064c0cdee331f1432a3789794d9 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -35,34 +35,34 @@ namespace MEDCoupling
   class MEDCouplingFieldDiscretization : public RefCountObject, public TimeLabel
   {
   public:
-    static MEDCouplingFieldDiscretization *New(TypeOfField type) throw(INTERP_KERNEL::Exception);
-    double getPrecision() const throw(INTERP_KERNEL::Exception);
-    void setPrecision(double val) throw(INTERP_KERNEL::Exception);
-    static TypeOfField GetTypeOfFieldFromStringRepr(const std::string& repr) throw(INTERP_KERNEL::Exception);
-    virtual TypeOfField getEnum() const throw(INTERP_KERNEL::Exception);
-    virtual bool isEqual(const MEDCouplingFieldDiscretization *other, double eps) const throw(INTERP_KERNEL::Exception);
-    virtual bool isEqualIfNotWhy(const MEDCouplingFieldDiscretization *other, double eps, std::string& reason) const throw(INTERP_KERNEL::Exception);
-    virtual bool isEqualWithoutConsideringStr(const MEDCouplingFieldDiscretization *other, double eps) const throw(INTERP_KERNEL::Exception);
-    virtual MEDCouplingFieldDiscretization *deepCopy() const throw(INTERP_KERNEL::Exception);
-    virtual MEDCouplingFieldDiscretization *clone() const throw(INTERP_KERNEL::Exception);
-    virtual MEDCouplingFieldDiscretization *clonePartRange(int beginCellIds, int endCellIds, int stepCellIds) const throw(INTERP_KERNEL::Exception);
-    virtual std::string getStringRepr() const throw(INTERP_KERNEL::Exception);
-    virtual const char *getRepr() const throw(INTERP_KERNEL::Exception);
-    virtual int getNumberOfTuples(const MEDCouplingMesh *mesh) const throw(INTERP_KERNEL::Exception);
-    virtual int getNumberOfMeshPlaces(const MEDCouplingMesh *mesh) const throw(INTERP_KERNEL::Exception);
-    virtual DataArrayInt *getOffsetArr(const MEDCouplingMesh *mesh) const throw(INTERP_KERNEL::Exception);
-    virtual DataArrayDouble *getLocalizationOfDiscValues(const MEDCouplingMesh *mesh) const throw(INTERP_KERNEL::Exception);
-    virtual void checkCompatibilityWithNature(NatureOfField nat) const throw(INTERP_KERNEL::Exception);
-    virtual double getIJK(const MEDCouplingMesh *mesh, const DataArrayDouble *da, int cellId, int nodeIdInCell, int compoId) const throw(INTERP_KERNEL::Exception);
-    virtual void checkCoherencyBetween(const MEDCouplingMesh *mesh, const DataArray *da) const throw(INTERP_KERNEL::Exception);
-    virtual MEDCouplingFieldDouble *getMeasureField(const MEDCouplingMesh *mesh, bool isAbs) const throw(INTERP_KERNEL::Exception);
+    static MEDCouplingFieldDiscretization *New(TypeOfField type);
+    double getPrecision() const;
+    void setPrecision(double val);
+    static TypeOfField GetTypeOfFieldFromStringRepr(const std::string& repr);
+    virtual TypeOfField getEnum() const;
+    virtual bool isEqual(const MEDCouplingFieldDiscretization *other, double eps) const;
+    virtual bool isEqualIfNotWhy(const MEDCouplingFieldDiscretization *other, double eps, std::string& reason) const;
+    virtual bool isEqualWithoutConsideringStr(const MEDCouplingFieldDiscretization *other, double eps) const;
+    virtual MEDCouplingFieldDiscretization *deepCopy() const;
+    virtual MEDCouplingFieldDiscretization *clone() const;
+    virtual MEDCouplingFieldDiscretization *clonePartRange(int beginCellIds, int endCellIds, int stepCellIds) const;
+    virtual std::string getStringRepr() const;
+    virtual const char *getRepr() const;
+    virtual int getNumberOfTuples(const MEDCouplingMesh *mesh) const;
+    virtual int getNumberOfMeshPlaces(const MEDCouplingMesh *mesh) const;
+    virtual DataArrayInt *getOffsetArr(const MEDCouplingMesh *mesh) const;
+    virtual DataArrayDouble *getLocalizationOfDiscValues(const MEDCouplingMesh *mesh) const;
+    virtual void checkCompatibilityWithNature(NatureOfField nat) const;
+    virtual double getIJK(const MEDCouplingMesh *mesh, const DataArrayDouble *da, int cellId, int nodeIdInCell, int compoId) const;
+    virtual void checkCoherencyBetween(const MEDCouplingMesh *mesh, const DataArray *da) const;
+    virtual MEDCouplingFieldDouble *getMeasureField(const MEDCouplingMesh *mesh, bool isAbs) const;
     virtual void setGaussLocalizationOnType(const MEDCouplingMesh *m, INTERP_KERNEL::NormalizedCellType type, const std::vector<double>& refCoo,
-                                            const std::vector<double>& gsCoo, const std::vector<double>& wg) throw(INTERP_KERNEL::Exception);
-    virtual void clearGaussLocalizations() throw(INTERP_KERNEL::Exception);
-    virtual MEDCouplingGaussLocalization& getGaussLocalization(int locId) throw(INTERP_KERNEL::Exception);
-    virtual int getNbOfGaussLocalization() const throw(INTERP_KERNEL::Exception);
-    virtual int getGaussLocalizationIdOfOneCell(int cellId) const throw(INTERP_KERNEL::Exception);
-    virtual int getGaussLocalizationIdOfOneType(INTERP_KERNEL::NormalizedCellType type) const throw(INTERP_KERNEL::Exception);
+                                            const std::vector<double>& gsCoo, const std::vector<double>& wg);
+    virtual void clearGaussLocalizations();
+    virtual MEDCouplingGaussLocalization& getGaussLocalization(int locId);
+    virtual int getNbOfGaussLocalization() const;
+    virtual int getGaussLocalizationIdOfOneCell(int cellId) const;
+    virtual int getGaussLocalizationIdOfOneType(INTERP_KERNEL::NormalizedCellType type) const;
     %extend
     {
       virtual MEDCouplingFieldDiscretization *clonePart(PyObject *li)
@@ -73,7 +73,7 @@ namespace MEDCoupling
         return self->clonePart(inp,inp+sz);
       }
       
-      virtual PyObject *buildSubMeshDataRange(const MEDCouplingMesh *mesh, int beginCellIds, int endCellIds, int stepCellIds, int& beginOut, int& endOut, int& stepOut, DataArrayInt *&di) const throw(INTERP_KERNEL::Exception)
+      virtual PyObject *buildSubMeshDataRange(const MEDCouplingMesh *mesh, int beginCellIds, int endCellIds, int stepCellIds, int& beginOut, int& endOut, int& stepOut, DataArrayInt *&di) const
       {
         DataArrayInt *ret1=0;
         int bb,ee,ss;
@@ -90,7 +90,7 @@ namespace MEDCoupling
         return res;
       }
 
-      virtual int getNumberOfTuplesExpectedRegardingCode(PyObject *code, PyObject *idsPerType) const throw(INTERP_KERNEL::Exception)
+      virtual int getNumberOfTuplesExpectedRegardingCode(PyObject *code, PyObject *idsPerType) const
       {
         std::vector<int> inp0;
         convertPyToNewIntArr4(code,1,3,inp0);
@@ -99,7 +99,7 @@ namespace MEDCoupling
         return self->getNumberOfTuplesExpectedRegardingCode(inp0,inp1);
       }
 
-      virtual PyObject *computeMeshRestrictionFromTupleIds(const MEDCouplingMesh *mesh, PyObject *tupleIds) const throw(INTERP_KERNEL::Exception)
+      virtual PyObject *computeMeshRestrictionFromTupleIds(const MEDCouplingMesh *mesh, PyObject *tupleIds) const
       {
         std::vector<int> vVal; int iVal=-1;
         int sz=-1,sw=0;
@@ -114,7 +114,7 @@ namespace MEDCoupling
         return pyRet;
       }
 
-      virtual PyObject *normL1(const MEDCouplingMesh *mesh, const DataArrayDouble *arr) const throw(INTERP_KERNEL::Exception)
+      virtual PyObject *normL1(const MEDCouplingMesh *mesh, const DataArrayDouble *arr) const
       {
         if(!arr)
           throw INTERP_KERNEL::Exception("wrap of MEDCouplingFieldDiscretization::normL1 : input array is null !");
@@ -124,7 +124,7 @@ namespace MEDCoupling
         return convertDblArrToPyList<double>(tmp,sz);
       }
 
-      virtual PyObject *normL2(const MEDCouplingMesh *mesh, const DataArrayDouble *arr) const throw(INTERP_KERNEL::Exception)
+      virtual PyObject *normL2(const MEDCouplingMesh *mesh, const DataArrayDouble *arr) const
       {
         if(!arr)
           throw INTERP_KERNEL::Exception("wrap of MEDCouplingFieldDiscretization::normL2 : input array is null !");
@@ -134,7 +134,7 @@ namespace MEDCoupling
         return convertDblArrToPyList<double>(tmp,sz);
       }
 
-      virtual PyObject *integral(const MEDCouplingMesh *mesh, const DataArrayDouble *arr, bool isWAbs) const throw(INTERP_KERNEL::Exception)
+      virtual PyObject *integral(const MEDCouplingMesh *mesh, const DataArrayDouble *arr, bool isWAbs) const
       {
         if(!arr)
           throw INTERP_KERNEL::Exception("wrap of MEDCouplingFieldDiscretization::integral : input array is null !");
@@ -144,7 +144,7 @@ namespace MEDCoupling
         return convertDblArrToPyList<double>(tmp,sz);
       }
 
-      virtual PyObject *getCellIdsHavingGaussLocalization(int locId) const throw(INTERP_KERNEL::Exception)
+      virtual PyObject *getCellIdsHavingGaussLocalization(int locId) const
       {
         std::vector<int> tmp;
         self->getCellIdsHavingGaussLocalization(locId,tmp);
@@ -155,7 +155,7 @@ namespace MEDCoupling
       }
 
       virtual void setGaussLocalizationOnCells(const MEDCouplingMesh *m, PyObject *li, const std::vector<double>& refCoo,
-                                               const std::vector<double>& gsCoo, const std::vector<double>& wg) throw(INTERP_KERNEL::Exception)
+                                               const std::vector<double>& gsCoo, const std::vector<double>& wg)
       {
         void *da=0;
         int res1=SWIG_ConvertPtr(li,&da,SWIGTYPE_p_MEDCoupling__DataArrayInt, 0 |  0 );
@@ -175,13 +175,13 @@ namespace MEDCoupling
           }
       }
 
-      virtual PyObject *getGaussLocalizationIdsOfOneType(INTERP_KERNEL::NormalizedCellType type) const throw(INTERP_KERNEL::Exception)
+      virtual PyObject *getGaussLocalizationIdsOfOneType(INTERP_KERNEL::NormalizedCellType type) const
       {
         std::set<int> ret=self->getGaussLocalizationIdsOfOneType(type);
         return convertIntArrToPyList3(ret);
       }
 
-      virtual PyObject *getValueOn(const DataArrayDouble *arr, const MEDCouplingMesh *mesh, PyObject *sl) const throw(INTERP_KERNEL::Exception)
+      virtual PyObject *getValueOn(const DataArrayDouble *arr, const MEDCouplingMesh *mesh, PyObject *sl) const
       {
         double val;
         DataArrayDouble *a;
@@ -199,7 +199,7 @@ namespace MEDCoupling
         return convertDblArrToPyList<double>(res,spaceDim);
       }
 
-      virtual PyObject *getValueOnPos(const DataArrayDouble *arr, const MEDCouplingMesh *mesh, int i, int j, int k) const throw(INTERP_KERNEL::Exception)
+      virtual PyObject *getValueOnPos(const DataArrayDouble *arr, const MEDCouplingMesh *mesh, int i, int j, int k) const
       {
         if(!arr)
           throw INTERP_KERNEL::Exception("wrap of MEDCouplingFieldDiscretization::getValueOnPos : input array is null !");
@@ -209,7 +209,7 @@ namespace MEDCoupling
          return convertDblArrToPyList<double>(res,sz);
        }
       
-      virtual DataArrayDouble *getValueOnMulti(const DataArrayDouble *arr, const MEDCouplingMesh *mesh, PyObject *loc) const throw(INTERP_KERNEL::Exception)
+      virtual DataArrayDouble *getValueOnMulti(const DataArrayDouble *arr, const MEDCouplingMesh *mesh, PyObject *loc) const
       {
         if(!mesh)
           throw INTERP_KERNEL::Exception("Python wrap MEDCouplingFieldDiscretization::getValueOnMulti : null input mesh !");
@@ -221,7 +221,7 @@ namespace MEDCoupling
         return self->getValueOnMulti(arr,mesh,inp,nbPts);
       }
 
-      virtual void renumberCells(PyObject *li, bool check=true) throw(INTERP_KERNEL::Exception)
+      virtual void renumberCells(PyObject *li, bool check=true)
       {
         int sw,sz(-1);
         int v0; std::vector<int> v1;
@@ -230,7 +230,7 @@ namespace MEDCoupling
       }
 
       virtual void renumberArraysForCell(const MEDCouplingMesh *mesh, PyObject *arrays,
-                                         PyObject *old2New, bool check) throw(INTERP_KERNEL::Exception)
+                                         PyObject *old2New, bool check)
       {
         std::vector<DataArray *> input1;
         convertFromPyObjVectorOfObj<MEDCoupling::DataArray *>(arrays,SWIGTYPE_p_MEDCoupling__DataArray,"DataArray",input1);
@@ -242,7 +242,7 @@ namespace MEDCoupling
         self->renumberArraysForCell(mesh,input1,old2NewBg,check);
       }
       
-      virtual DataArrayInt *computeTupleIdsToSelectFromCellIds(const MEDCouplingMesh *mesh, PyObject *cellIds) const throw(INTERP_KERNEL::Exception)
+      virtual DataArrayInt *computeTupleIdsToSelectFromCellIds(const MEDCouplingMesh *mesh, PyObject *cellIds) const
       {
         int sw,sz(-1);
         int v0; std::vector<int> v1;
@@ -250,7 +250,7 @@ namespace MEDCoupling
         return self->computeTupleIdsToSelectFromCellIds(mesh,cellIdsBg,cellIdsBg+sz);
       }
 
-      virtual PyObject *buildSubMeshData(const MEDCouplingMesh *mesh, PyObject *ids) const throw(INTERP_KERNEL::Exception)
+      virtual PyObject *buildSubMeshData(const MEDCouplingMesh *mesh, PyObject *ids)
       {
         int sw,sz(-1);
         int v0; std::vector<int> v1;
@@ -263,7 +263,7 @@ namespace MEDCoupling
         return ret;
       }
 
-      virtual void renumberValuesOnNodes(double epsOnVals, PyObject *old2New, int newNbOfNodes, DataArrayDouble *arr) const throw(INTERP_KERNEL::Exception)
+      virtual void renumberValuesOnNodes(double epsOnVals, PyObject *old2New, int newNbOfNodes, DataArrayDouble *arr) const
       {
         int sw,sz(-1);
         int v0; std::vector<int> v1;
@@ -271,7 +271,7 @@ namespace MEDCoupling
         self->renumberValuesOnNodes(epsOnVals,old2NewBg,newNbOfNodes,arr);
       }
 
-      virtual void renumberValuesOnCells(double epsOnVals, const MEDCouplingMesh *mesh, PyObject *old2New, int newSz, DataArrayDouble *arr) const throw(INTERP_KERNEL::Exception)
+      virtual void renumberValuesOnCells(double epsOnVals, const MEDCouplingMesh *mesh, PyObject *old2New, int newSz, DataArrayDouble *arr) const
       {
         int sw,sz(-1);
         int v0; std::vector<int> v1;
@@ -279,7 +279,7 @@ namespace MEDCoupling
         self->renumberValuesOnCells(epsOnVals,mesh,old2NewBg,newSz,arr);
       }
 
-      virtual void renumberValuesOnCellsR(const MEDCouplingMesh *mesh, PyObject *new2old, int newSz, DataArrayDouble *arr) const throw(INTERP_KERNEL::Exception)
+      virtual void renumberValuesOnCellsR(const MEDCouplingMesh *mesh, PyObject *new2old, int newSz, DataArrayDouble *arr) const
       {
         int sw,sz(-1);
         int v0; std::vector<int> v1;
@@ -304,8 +304,8 @@ namespace MEDCoupling
   class MEDCouplingFieldDiscretizationPerCell : public MEDCouplingFieldDiscretization
   {
   public:
-    void setArrayOfDiscIds(const DataArrayInt *adids) throw(INTERP_KERNEL::Exception);
-    void checkNoOrphanCells() const throw(INTERP_KERNEL::Exception);
+    void setArrayOfDiscIds(const DataArrayInt *adids);
+    void checkNoOrphanCells() const;
     %extend
     {
       PyObject *getArrayOfDiscIds() const
@@ -316,7 +316,7 @@ namespace MEDCoupling
         return SWIG_NewPointerObj(SWIG_as_voidptr(ret),SWIGTYPE_p_MEDCoupling__DataArrayInt, SWIG_POINTER_OWN | 0 );
       }
 
-      PyObject *splitIntoSingleGaussDicrPerCellType() const throw(INTERP_KERNEL::Exception)
+      PyObject *splitIntoSingleGaussDicrPerCellType() const
       {
         std::vector<int> ret1;
         std::vector<DataArrayInt *> ret0=self->splitIntoSingleGaussDicrPerCellType(ret1);
@@ -349,21 +349,21 @@ namespace MEDCoupling
   public:
     %extend
     {
-      static PyObject *GetWeightArrayFromGeometricType(INTERP_KERNEL::NormalizedCellType geoType) throw(INTERP_KERNEL::Exception)
+      static PyObject *GetWeightArrayFromGeometricType(INTERP_KERNEL::NormalizedCellType geoType)
       {
         std::size_t sz(0);
         const double *ret(MEDCouplingFieldDiscretizationGaussNE::GetWeightArrayFromGeometricType(geoType,sz));
         return convertDblArrToPyList<double>(ret,sz);
       }
       
-      static PyObject *GetRefCoordsFromGeometricType(INTERP_KERNEL::NormalizedCellType geoType) throw(INTERP_KERNEL::Exception)
+      static PyObject *GetRefCoordsFromGeometricType(INTERP_KERNEL::NormalizedCellType geoType)
       {
         std::size_t sz(0);
         const double *ret(MEDCouplingFieldDiscretizationGaussNE::GetRefCoordsFromGeometricType(geoType,sz));
         return convertDblArrToPyList<double>(ret,sz);
       }
       
-      static PyObject *GetLocsFromGeometricType(INTERP_KERNEL::NormalizedCellType geoType) throw(INTERP_KERNEL::Exception)
+      static PyObject *GetLocsFromGeometricType(INTERP_KERNEL::NormalizedCellType geoType)
       {
         std::size_t sz(0);
         const double *ret(MEDCouplingFieldDiscretizationGaussNE::GetLocsFromGeometricType(geoType,sz));
@@ -375,10 +375,10 @@ namespace MEDCoupling
   class MEDCouplingFieldDiscretizationKriging : public MEDCouplingFieldDiscretizationOnNodes
   {
   public:
-    static DataArrayDouble *PerformDriftOfVec(const DataArrayDouble *arr, int isDrift) throw(INTERP_KERNEL::Exception);
+    static DataArrayDouble *PerformDriftOfVec(const DataArrayDouble *arr, int isDrift);
     %extend
     {
-      PyObject *computeVectorOfCoefficients(const MEDCouplingMesh *mesh, const DataArrayDouble *arr) const throw(INTERP_KERNEL::Exception)
+      PyObject *computeVectorOfCoefficients(const MEDCouplingMesh *mesh, const DataArrayDouble *arr) const
       {
         int ret1;
         DataArrayDouble *ret0=self->computeVectorOfCoefficients(mesh,arr,ret1);
@@ -388,7 +388,7 @@ namespace MEDCoupling
         return ret;
       }
       
-      PyObject *computeInverseMatrix(const MEDCouplingMesh *mesh) const throw(INTERP_KERNEL::Exception)
+      PyObject *computeInverseMatrix(const MEDCouplingMesh *mesh) const
       {
         int ret1(-1),ret2(-1);
         DataArrayDouble *ret0=self->computeInverseMatrix(mesh,ret1,ret2);
@@ -399,7 +399,7 @@ namespace MEDCoupling
         return ret;
       }
 
-      PyObject *computeMatrix(const MEDCouplingMesh *mesh) const throw(INTERP_KERNEL::Exception)
+      PyObject *computeMatrix(const MEDCouplingMesh *mesh) const
       {
         int ret1(-1),ret2(-1);
         DataArrayDouble *ret0=self->computeMatrix(mesh,ret1,ret2);
@@ -410,7 +410,7 @@ namespace MEDCoupling
         return ret;
       }
       
-      PyObject *computeEvaluationMatrixOnGivenPts(const MEDCouplingMesh *mesh, PyObject *locs) const throw(INTERP_KERNEL::Exception)
+      PyObject *computeEvaluationMatrixOnGivenPts(const MEDCouplingMesh *mesh, PyObject *locs) const
       {
         if(!mesh)
           throw INTERP_KERNEL::Exception("wrap of MEDCouplingFieldDiscretizationKriging::computeEvaluationMatrixOnGivenPts : input mesh is empty !");
@@ -427,14 +427,14 @@ namespace MEDCoupling
         return ret;
       }
 
-      void operateOnDenseMatrix(int spaceDimension, DataArrayDouble *myMatrix) const throw(INTERP_KERNEL::Exception)
+      void operateOnDenseMatrix(int spaceDimension, DataArrayDouble *myMatrix) const
       {
         if(!myMatrix || !myMatrix->isAllocated() || myMatrix->getNumberOfComponents()!=1)
           throw INTERP_KERNEL::Exception("Wrap of MEDCouplingFieldDiscretizationKriging::operateOnDenseMatrix : invalid input matrix as DataArrayDouble ! Must be allocated with one component !");
         self->operateOnDenseMatrix(spaceDimension,myMatrix->getNumberOfTuples(),myMatrix->getPointer());
       }
 
-      PyObject *performDrift(const DataArrayDouble *matr, const DataArrayDouble *arr) const throw(INTERP_KERNEL::Exception)
+      PyObject *performDrift(const DataArrayDouble *matr, const DataArrayDouble *arr) const
       {
         int ret1(-1);
         DataArrayDouble *ret0(self->performDrift(matr,arr,ret1));
@@ -444,7 +444,7 @@ namespace MEDCoupling
         return res;
       }
 
-      static PyObject *PerformDriftRect(const DataArrayDouble *matr, const DataArrayDouble *arr) throw(INTERP_KERNEL::Exception)
+      static PyObject *PerformDriftRect(const DataArrayDouble *matr, const DataArrayDouble *arr)
       {
         int ret1(-1);
         DataArrayDouble *ret0(MEDCouplingFieldDiscretizationKriging::PerformDriftRect(matr,arr,ret1));
@@ -454,14 +454,14 @@ namespace MEDCoupling
         return res;
       }
 
-      static void OperateOnDenseMatrixH3(DataArrayDouble *myMatrix) throw(INTERP_KERNEL::Exception)
+      static void OperateOnDenseMatrixH3(DataArrayDouble *myMatrix)
       {
         if(!myMatrix || !myMatrix->isAllocated() || myMatrix->getNumberOfComponents()!=1)
           throw INTERP_KERNEL::Exception("Wrap of MEDCouplingFieldDiscretizationKriging::OperateOnDenseMatrixH3 : invalid input matrix as DataArrayDouble ! Must be allocated with one component !");
         MEDCouplingFieldDiscretizationKriging::OperateOnDenseMatrixH3(myMatrix->getNumberOfTuples(),myMatrix->getPointer());
       }
       
-      static void OperateOnDenseMatrixH2Ln(DataArrayDouble *myMatrix) throw(INTERP_KERNEL::Exception)
+      static void OperateOnDenseMatrixH2Ln(DataArrayDouble *myMatrix) //throw(INTERP_KERNEL::Exception)
       {
         if(!myMatrix || !myMatrix->isAllocated() || myMatrix->getNumberOfComponents()!=1)
           throw INTERP_KERNEL::Exception("Wrap of MEDCouplingFieldDiscretizationKriging::OperateOnDenseMatrixH2Ln : invalid input matrix as DataArrayDouble ! Must be allocated with one component !");
index 015436ccf1635101df5cb2eea30ac7f3a5adee32..c344981e1fcdc6a8bbe2c0d281c6c4c7a2747f83 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 7694d7870bcec75c67953d22a3cafddeb97e19e4..e02005e82d86659cdc3679c46899c4e9a24291e0 100644 (file)
@@ -1,5 +1,5 @@
 #  -*- coding: utf-8 -*-
-# Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+# Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -23,7 +23,7 @@ import sys
 if sys.platform == "win32":
     from MEDCouplingCompat import *
 else:
-    from MEDCoupling import *
+    from medcoupling import *
 import unittest
 from math import pi,e,sqrt,cos,sin
 from datetime import datetime
@@ -548,6 +548,129 @@ class MEDCouplingIntersectTest(unittest.TestCase):
         self.assertEqual(map2.getValues(), [0])
         pass
 
+    def testIntersect2DMeshesTmp9(self):
+        """ Tricky case: two triangular shapes intersecting, but not perfectly, at their tips. Several issues fixed:
+            - Bug fix: seg seg intersector epsilon is to be taken absolutely for colinearity test (even for very small vectors 
+            we don't want to have false positive on colinearity. So go back to a comparison with an angle.)
+            - when intersecting nodes are merged, they were not properly added on pol2.
+            - bug fix in compute residual: the stop condition is really on pol1Zip only.
+            - correcting polygons with flat corners, they were crashing residual computation
+        """
+        eps = 1.0e-6  # This is the key parameter. DO NOT CHANGE IT.
+        back = MEDCouplingUMesh('crh8_rse3', 2)
+        coo = DataArrayDouble([(-31.313754538446631,-32.512813836330515),(-31.531462871779969,-32.135731941766032),(-31.422608705113298,-32.324272889048274),(-31.690836433011114,-32.295105502997181),(-31.621640616088342,-32.204927758688783),(-31.502295485728872,-32.403959669663848)])
+        back.setCoords(coo)
+        c = DataArrayInt([32, 0, 3, 1, 5, 4, 2])
+        cI = DataArrayInt([0, 7])
+        back.setConnectivity(c, cI)
+
+        tool = MEDCouplingUMesh('TA-536193G_expl_20181022_merged', 2)
+        coo = DataArrayDouble([(-29.918137808525149,-26.883223901634544),(-32.919909136264039,-26.939612990540404),(-27.866900000000001,-28.016680435212603),(-31.313800000000001,-32.512799999999999),(-27.866900000000001,-28.933918793630923)])
+        tool.setCoords(coo)
+        c = DataArrayInt([5, 1, 0, 3, 5, 0, 2, 3, 5, 4, 3, 2])
+        cI = DataArrayInt([0, 4, 8, 12])
+        tool.setConnectivity(c, cI)
+
+        inter, res2Back, res2Tool = MEDCouplingUMesh.Intersect2DMeshes(back, tool, eps)
+
+        self.assertEqual(inter.getNodalConnectivity().getValues(), [5, 14, 13, 11, 12, 5, 13, 15, 11, 32, 12, 3, 1, 14, 16, 17, 18, 19, 5, 15, 0, 11])
+        self.assertEqual(inter.getNodalConnectivityIndex().getValues(), [0, 5, 9, 18, 22])
+        self.assertEqual(res2Back.getValues(), [0, 0, 0, 0])
+        self.assertEqual(res2Tool.getValues(), [0, 1, -1, -1])
+        pass
+
+    def testIntersect2DMeshesTmp10(self):
+        """ Fixing issues when one of the quadratic point of the tool mesh also serves as a regular point somewhere else.
+        WARNING : the tool mesh is not conform, but this was NOT the initial cause of the problem """
+        eps = 1.0e-6
+        back = MEDCouplingUMesh('layer_1', 2)
+        coo = DataArrayDouble([(0.000000000000000,0.000000000000000),(0.000000000000007,113.449999999999960),(113.449999999999960,0.000000000000000),(80.221264325613788,80.221264325613788),(0.000000000000003,56.724999999999980),(56.724999999999980,0.000000000000000)])
+        back.setCoords(coo)
+        c = DataArrayInt([32, 0, 1, 2, 4, 3, 5])
+        cI = DataArrayInt([0, 7])
+        back.setConnectivity(c, cI)
+
+        tool = MEDCouplingUMesh('layer_2', 2)
+        coo = DataArrayDouble([(35.499999704817512,0.000000000000011),(35.413523784223756,2.476354817916448),(35.478374361065050,1.238932132335084),(35.563158391762734,2.486818288978067),(35.649999999999999,0.000000000000000),(35.628282983230761,1.244167057444159),(35.488341087993248,2.481586553447257),(35.575000000000003,0.000000000000000),(35.154516440325750,4.940645084082323),(35.305526997492230,3.710760415787641),(35.154516440325743,-4.940645084082338),(34.960674956295250,-6.164510258681856),(35.413523784223763,-2.476354817916429),(35.305526997492230,-3.710760415787643),(35.563158391762734,-2.486818288978048),(35.488341087993248,-2.481586553447238),(35.478374361018354,-1.238932133672371),(35.628282983230761,-1.244167057444150)])
+        tool.setCoords(coo)
+        c = DataArrayInt([32, 0, 1, 3, 4, 2, 6, 5, 7,        # 32,  6, 7, 9, 10, 8, 12, 11, 13
+                             32, 12, 0, 4, 14, 16, 7, 17, 15,   # 32,  18, 6, 10, 20, 22, 13, 23, 21
+                             32, 8, 1, 12, 10, 9, 0, 13, 11])   # 32,  14, 7, 18, 16, 15, 6, 19, 17
+        cI = DataArrayInt([0, 9, 18, 27])
+        tool.setConnectivity(c, cI)
+        result, res2Back, res2Tool = MEDCouplingUMesh.Intersect2DMeshes(back, tool, eps)
+
+        self.assertEqual(result.getNodalConnectivity().getValues(), [32, 10, 6, 7, 9, 25, 26, 27, 28 ,
+                                                        32, 6, 0, 24, 14, 7, 29, 30, 31, 32, 33,
+                                                        32, 24, 1, 2, 10, 9, 7,   14, 34, 35, 36, 37, 38, 39, 40])
+        self.assertEqual(result.getNodalConnectivityIndex().getValues(), [0, 9, 20, 35])
+        self.assertEqual(res2Back.getValues(), [0, 0, 0])
+        self.assertEqual(res2Tool.getValues(), [0, 2, -1])
+        pass
+
+    def testIntersect2DMeshesTmp11(self):
+        """ BuildIntersectMeshes() was merging points too aggressively (again). """
+        eps = 1.0e-6
+        back = MEDCouplingUMesh('TA-536193G_expl_20180605_merged', 2)
+        coo = DataArrayDouble([(10.19999332472057,-27.86690000000001),(12.56691001291914,-29.23343998708087),(13.93345000000000,-24.13344332472058)])
+        back.setCoords(coo)
+        c = DataArrayInt([5, 2, 1, 0])
+        cI = DataArrayInt([0, 4])
+        back.setConnectivity(c, cI)
+
+        tool = MEDCouplingUMesh('layer_1', 2)
+        cooT = DataArrayDouble([(10.44742256875032,-27.61949543124968),(18.71050449103792,-25.35195658988450),(19.05428526420611,-25.33852836835490),(18.88239487762202,-25.34524247911970),(12.62880992941098,-19.37921975458838),(18.06779356578989,-20.52447528153846),(19.22203188321684,-22.45963506363725),(19.48103923179737,-24.51987105082425),(10.50946417376372,-28.13689270184920),(13.33582148027124,-18.82710073137066),(14.70572820761054,-18.80259652845168),(17.10708000587671,-19.67863183066471),(8.97033515262005,-22.58570640281439),(15.95921032839811,-19.09586394516776),(19.45191696393912,-23.47713337575327),(17.61005728815709,-20.07586106738862),(18.53287284946306,-21.55888206618472),(19.21102524614600,-24.89967567708313),(10.47844337125702,-27.87819406654944),(14.02163025718330,-18.86267048150560)])
+        tool.setCoords(cooT)
+        c = DataArrayInt([32, 2, 1, 0, 8, 9, 3, 4, 18, 12, 11])
+        cI = DataArrayInt([0, 11])
+        tool.setConnectivity(c, cI)
+
+        result, res2Back, res2Tool = MEDCouplingUMesh.Intersect2DMeshes(back, tool, eps)
+        self.assertEqual(result.getNodalConnectivity().getValues(), [32, 26, 25, 3, 23, 24, 27, 28, 29, 30, 31, 32, 24, 0, 26, 32, 33, 34, 32, 25, 2, 1, 23, 3, 35, 36, 37, 38, 39])
+        self.assertEqual(result.getNodalConnectivityIndex().getValues(), [0, 11, 18, 29])
+        self.assertEqual(res2Back.getValues(), [0, 0, 0])
+        self.assertEqual(res2Tool.getValues(), [0, -1, -1])
+
+        # Now the same with point #0 shifted so to almost match intersection point: the intersector should then merge
+        # with point from mesh 1:
+        cooT[0,:] = [10.44741058, -27.61948395]
+        result, res2Back, res2Tool = MEDCouplingUMesh.Intersect2DMeshes(back, tool, eps)
+        self.assertEqual(result.getNodalConnectivity().getValues(), [32, 25, 3, 23, 24, 26, 27, 28, 29, 32, 24, 0, 25, 30, 31, 32, 32, 3, 2, 1, 23, 33, 34, 35, 36])
+        self.assertEqual(result.getNodalConnectivityIndex().getValues(), [0, 9, 16, 25])
+        self.assertEqual(res2Back.getValues(), [0, 0, 0])
+        self.assertEqual(res2Tool.getValues(), [0, -1, -1])
+        pass
+
+    def testIntersect2DMeshesTmp12(self):
+        """ Optimisation of SegSeg and ArcCSeg intersector which also allows to handle some degenerated cases.
+        See method identifyEarlyIntersection() in C++ """
+        eps = 1e-6
+        back = MEDCouplingUMesh('merge', 2)
+        coo = DataArrayDouble([(-22.20967875173176154,32.26829201778234335),(-16.84032124826824273,35.36829201778233767),(-19.52500000000000213,33.81829201778234051),(-22.09987113059642283,32.67809963891765790),(-17.25012886940356438,35.47809963891765506),(-19.67499999999999361,34.07809963891765648),(-16.98614843981577138,35.62087212266773406),(-22.46315640161999028,32.70732818597191027)])
+        back.setCoords(coo)
+        c = DataArrayInt([32, 1, 0, 3, 4,    2, 7, 5, 6])
+        cI = DataArrayInt([0, 9])
+        back.setConnectivity(c, cI)
+        back.checkConsistency()
+
+        tool = MEDCouplingUMesh('layer_2', 2)
+        coo = DataArrayDouble([(-16.84032124826824273,35.36829201778233767),(-19.52500000000000924,33.81829201778234051),(-19.46500000000013841,33.71436896932812743),(-22.58118035378681299,31.71175166763502418),(-16.17259236578203740,35.41175166763498083),(-21.04692233083152786,32.75014443326846703),(-17.83899589140436603,34.60224162661226899),(-19.49500000000007560,33.76633049355523042),(-22.64145235112855659,31.81614582930458823),(-16.23286436312378100,35.51614582930454134),(-21.10697925592403834,32.85419191960125573),(-17.89907519522208545,34.70627619258202401),(-22.61131635245768479,31.76394874846980798),(-16.20272836445290920,35.46394874846976109),(-19.07887754666707991,34.07586093630563795),(-19.52453703982536481,33.81855930796379539),(-19.93627714687611530,33.92725120783563142),(-19.50943608541021135,34.17368800957415687),(-17.95959939746765599,34.72207647704399136),(-16.53659280569601009,35.44221892354343595),(-19.30170729324622414,33.94721012213472022),(-19.72285661614316155,34.05046960870489414),(-19.29415681603864741,34.12477447293989741),(-19.73040709335074183,33.87290525789970985),(-19.52476851991268703,33.81842566287306795)])
+        tool.setCoords(coo)
+        c = DataArrayInt([8, 14, 15, 16, 17,   20, 23, 21, 22,
+                             32, 2, 3, 8, 1,    5, 12, 10, 7,
+                             32, 4, 2, 1, 9,    6, 7, 11, 13,
+                             32, 9, 1, 15, 14, 0,     11, 24, 20, 18, 19])
+        cI = DataArrayInt([0, 9, 18, 27, 38])
+        tool.setConnectivity(c, cI)
+
+        result, res2Back, res2Tool = MEDCouplingUMesh.Intersect2DMeshes(back, tool, eps)
+
+        self.assertEqual(result.getNodalConnectivity().getValues(), [5, 24, 25, 22, 23, 32, 23, 9, 0, 3, 24, 33, 34, 35, 36, 37, 32, 25, 4, 8, 22, 38, 39, 40, 41])
+        self.assertEqual(result.getNodalConnectivityIndex().getValues(), [0, 5, 16, 25])
+        self.assertEqual(res2Back.getValues(), [0, 0, 0])
+        self.assertEqual(res2Tool.getValues(), [0, -1, -1])
+        pass
+
     def testSwig2Intersect2DMeshWith1DLine1(self):
         """A basic test with no colinearity between m1 and m2."""
         i=MEDCouplingIMesh("mesh",2,[5,5],[0.,0.],[1.,1.])
@@ -1051,6 +1174,33 @@ class MEDCouplingIntersectTest(unittest.TestCase):
         self.assertEqual(m1.getValues(), [0, 0, 0])
         self.assertEqual(m2.getValues(), [-1, -1, 0, 2, -1, -1, 0, 1, -1, -1])
 
+    def testSwig2Intersect2DMeshWith1DLine20(self):
+        """ A line intersecting a cell more than 3 times was triggering an internal error. """
+        mesh = MEDCouplingUMesh('merge', 2)
+        coo = DataArrayDouble([(0,0),(0,9),(3,9),(3,0),(0,1),(2,1),(0,2),(2,2),(3,3),(1,3),(3,4),(1,4),(0,5),(2,5),(0,6),(2,6),(3,7),(1,7),(3,8),(1,8)])
+        mesh.setCoords(coo)
+        c = DataArrayInt([5, 3, 0, 4, 5, 7, 6, 12, 13, 15, 14, 1, 2, 18, 19, 17, 16, 10, 11, 9, 8]) # offset 20
+        cI = DataArrayInt([0, 21])
+        mesh.setConnectivity(c, cI)
+
+        tool = MEDCouplingUMesh('tool', 1)
+        coo = DataArrayDouble([(1.5, 9.5),  (1.5, 1.5)])  # line crossing 4 times
+        tool.setCoords(coo)
+        c = DataArrayInt([NORM_SEG2,0,1])
+        cI = DataArrayInt([0, 3])
+        tool.setConnectivity(c, cI)
+
+        eps=1.0e-4 # not the pb here
+        res2D, res1D, resToSelf, mapLeftRight = MEDCouplingUMesh.Intersect2DMeshWith1DLine(mesh, tool, eps)
+        self.assertEqual(res1D.getNodalConnectivity().getValues(),[1, 20, 25,   1, 25, 26,   1, 26, 27,   1, 27, 24,   1, 24, 23,   1, 23, 28,   1, 28, 29,   1, 29, 22,   1, 22, 21])
+        self.assertEqual(res1D.getNodalConnectivityIndex().getValues(),[0, 3, 6, 9, 12, 15, 18, 21, 24, 27])
+        self.assertEqual(res2D.getNodalConnectivity().getValues(),[5, 2, 18, 26, 25,   5, 13, 15, 24, 27, 16, 10, 28, 23,   5, 8, 3, 0, 4, 5, 7, 22, 29,   5, 6, 12, 23, 28, 11, 9, 29, 22,   5, 14, 1, 25, 26, 19, 17, 27, 24])
+        self.assertEqual(res2D.getNodalConnectivityIndex().getValues(),[0, 5, 14, 23, 32, 41])
+
+        self.assertEqual(resToSelf.getValues(), [0, 0, 0, 0, 0])
+        self.assertEqual(mapLeftRight.getValues(), [-1, -1, 0, 4, -1, -1, 1, 4, -1, -1, 1, 3, -1, -1, 2, 3, -1, -1])
+        pass
+
     def testSwig2Conformize2D1(self):
         eps = 1.0e-8
         coo = [0.,-0.5,0.,0.,0.5,0.,0.5,-0.5,0.25,
index 7eda73d9842a77233150afaf63ff9278676708f1..d43cca61beb6e513a6b71cc9911d986c034ed64c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -268,22 +268,22 @@ namespace MEDCoupling
   class PartDefinition : public RefCountObject, public TimeLabel
   {
   public:
-    static PartDefinition *New(int start, int stop, int step) throw(INTERP_KERNEL::Exception);
-    static PartDefinition *New(DataArrayInt *listOfIds) throw(INTERP_KERNEL::Exception);
-    virtual DataArrayInt *toDAI() const throw(INTERP_KERNEL::Exception);
-    virtual int getNumberOfElems() const throw(INTERP_KERNEL::Exception);
-    virtual std::string getRepr() const throw(INTERP_KERNEL::Exception);
-    virtual PartDefinition *composeWith(const PartDefinition *other) const throw(INTERP_KERNEL::Exception);
-    virtual void checkConsistencyLight() const throw(INTERP_KERNEL::Exception);
-    virtual PartDefinition *tryToSimplify() const throw(INTERP_KERNEL::Exception);
+    static PartDefinition *New(int start, int stop, int step);
+    static PartDefinition *New(DataArrayInt *listOfIds);
+    virtual DataArrayInt *toDAI() const;
+    virtual int getNumberOfElems() const;
+    virtual std::string getRepr() const;
+    virtual PartDefinition *composeWith(const PartDefinition *other) const;
+    virtual void checkConsistencyLight() const;
+    virtual PartDefinition *tryToSimplify() const;
     %extend
     {
-      virtual PartDefinition *__add__(const PartDefinition& other) const throw(INTERP_KERNEL::Exception)
+      virtual PartDefinition *__add__(const PartDefinition& other) const
       {
         return (*self)+other;
       }
 
-      virtual PyObject *isEqual(const PartDefinition *other) const throw(INTERP_KERNEL::Exception)
+      virtual PyObject *isEqual(const PartDefinition *other) const
       {
         std::string ret1;
         bool ret0(self->isEqual(other,ret1));
@@ -295,7 +295,7 @@ namespace MEDCoupling
         return ret;
       }
 
-      virtual PyObject *deepCopy() const throw(INTERP_KERNEL::Exception)
+      virtual PyObject *deepCopy() const
       {
         return convertPartDefinition(self->deepCopy(),SWIG_POINTER_OWN | 0);
       }
@@ -307,20 +307,20 @@ namespace MEDCoupling
   class DataArrayPartDefinition : public PartDefinition
   {
   public:
-    static DataArrayPartDefinition *New(DataArrayInt *listOfIds) throw(INTERP_KERNEL::Exception);
+    static DataArrayPartDefinition *New(DataArrayInt *listOfIds);
     %extend
     {
-      DataArrayPartDefinition(DataArrayInt *listOfIds) throw(INTERP_KERNEL::Exception)
+      DataArrayPartDefinition(DataArrayInt *listOfIds)
       {
         return DataArrayPartDefinition::New(listOfIds);
       }
 
-      std::string __str__() const throw(INTERP_KERNEL::Exception)
+      std::string __str__() const
       {
         return self->getRepr();
       }
       
-      std::string __repr__() const throw(INTERP_KERNEL::Exception)
+      std::string __repr__() const
       {
         std::ostringstream oss; oss << "DataArrayPartDefinition C++ instance at " << self << "." << std::endl;
         oss << self->getRepr();
@@ -334,28 +334,28 @@ namespace MEDCoupling
   class SlicePartDefinition : public PartDefinition
   {
   public:
-    static SlicePartDefinition *New(int start, int stop, int step) throw(INTERP_KERNEL::Exception);
-    int getEffectiveStop() const throw(INTERP_KERNEL::Exception);
+    static SlicePartDefinition *New(int start, int stop, int step);
+    int getEffectiveStop() const;
     %extend
     {
-      SlicePartDefinition(int start, int stop, int step) throw(INTERP_KERNEL::Exception)
+      SlicePartDefinition(int start, int stop, int step)
       {
         return SlicePartDefinition::New(start,stop,step);
       }
 
-      PyObject *getSlice() const throw(INTERP_KERNEL::Exception)
+      PyObject *getSlice() const
       {
         int a,b,c;
         self->getSlice(a,b,c);
         return PySlice_New(PyInt_FromLong(a),PyInt_FromLong(b),PyInt_FromLong(c));
       }
       
-      std::string __str__() const throw(INTERP_KERNEL::Exception)
+      std::string __str__() const
       {
         return self->getRepr();
       }
       
-      std::string __repr__() const throw(INTERP_KERNEL::Exception)
+      std::string __repr__() const
       {
         std::ostringstream oss; oss << "SlicePartDefinition C++ instance at " << self << "." << std::endl;
         oss << self->getRepr();
@@ -370,53 +370,53 @@ namespace MEDCoupling
   {
   public:
     void setName(const std::string& name);
-    void copyStringInfoFrom(const DataArray& other) throw(INTERP_KERNEL::Exception);
-    void copyPartOfStringInfoFrom(const DataArray& other, const std::vector<int>& compoIds) throw(INTERP_KERNEL::Exception);
-    void copyPartOfStringInfoFrom2(const std::vector<int>& compoIds, const DataArray& other) throw(INTERP_KERNEL::Exception);
-    bool areInfoEqualsIfNotWhy(const DataArray& other, std::string& reason) const throw(INTERP_KERNEL::Exception);
-    bool areInfoEquals(const DataArray& other) const throw(INTERP_KERNEL::Exception);
-    std::string cppRepr(const std::string& varName) const throw(INTERP_KERNEL::Exception);
+    void copyStringInfoFrom(const DataArray& other);
+    void copyPartOfStringInfoFrom(const DataArray& other, const std::vector<int>& compoIds);
+    void copyPartOfStringInfoFrom2(const std::vector<int>& compoIds, const DataArray& other);
+    bool areInfoEqualsIfNotWhy(const DataArray& other, std::string& reason) const;
+    bool areInfoEquals(const DataArray& other) const;
+    std::string cppRepr(const std::string& varName) const;
     std::string getName() const;
-    void setInfoOnComponents(const std::vector<std::string>& info) throw(INTERP_KERNEL::Exception);
-    void setInfoAndChangeNbOfCompo(const std::vector<std::string>& info) throw(INTERP_KERNEL::Exception);
-    std::vector<std::string> getVarsOnComponent() const throw(INTERP_KERNEL::Exception);
-    std::vector<std::string> getUnitsOnComponent() const throw(INTERP_KERNEL::Exception);
-    std::string getInfoOnComponent(int i) const throw(INTERP_KERNEL::Exception);
-    std::string getVarOnComponent(int i) const throw(INTERP_KERNEL::Exception);
-    std::string getUnitOnComponent(int i) const throw(INTERP_KERNEL::Exception);
-    void setInfoOnComponent(int i, const std::string& info) throw(INTERP_KERNEL::Exception);
+    void setInfoOnComponents(const std::vector<std::string>& info);
+    void setInfoAndChangeNbOfCompo(const std::vector<std::string>& info);
+    std::vector<std::string> getVarsOnComponent() const;
+    std::vector<std::string> getUnitsOnComponent() const;
+    std::string getInfoOnComponent(int i) const;
+    std::string getVarOnComponent(int i) const;
+    std::string getUnitOnComponent(int i) const;
+    void setInfoOnComponent(int i, const std::string& info);
     int getNumberOfComponents() const;
-    virtual void alloc(int nbOfTuple, int nbOfCompo=1) throw(INTERP_KERNEL::Exception);
-    virtual void reAlloc(int nbOfTuples) throw(INTERP_KERNEL::Exception);
-    virtual bool isAllocated() const throw(INTERP_KERNEL::Exception);
-    virtual void checkAllocated() const throw(INTERP_KERNEL::Exception);
-    virtual void desallocate() throw(INTERP_KERNEL::Exception);
-    virtual int getNumberOfTuples() const throw(INTERP_KERNEL::Exception);
-    virtual std::size_t getNbOfElems() const throw(INTERP_KERNEL::Exception);
-    virtual std::size_t getNbOfElemAllocated() const throw(INTERP_KERNEL::Exception);
-    virtual DataArray *deepCopy() const throw(INTERP_KERNEL::Exception);
-    virtual DataArray *buildNewEmptyInstance() const throw(INTERP_KERNEL::Exception);
-    virtual DataArray *selectByTupleIdSafeSlice(int bg, int end2, int step) const throw(INTERP_KERNEL::Exception);
-    virtual void rearrange(int newNbOfCompo) throw(INTERP_KERNEL::Exception);
-    virtual void circularPermutation(int nbOfShift=1) throw(INTERP_KERNEL::Exception);
-    virtual void circularPermutationPerTuple(int nbOfShift=1) throw(INTERP_KERNEL::Exception);
-    virtual void reversePerTuple() throw(INTERP_KERNEL::Exception);
-    void checkNbOfTuples(int nbOfTuples, const std::string& msg) const throw(INTERP_KERNEL::Exception);
-    void checkNbOfComps(int nbOfCompo, const std::string& msg) const throw(INTERP_KERNEL::Exception);
-    void checkNbOfTuplesAndComp(const DataArray& other, const std::string& msg) const throw(INTERP_KERNEL::Exception);
-    void checkNbOfTuplesAndComp(int nbOfTuples, int nbOfCompo, const std::string& msg) const throw(INTERP_KERNEL::Exception);
-    void checkNbOfElems(std::size_t nbOfElems, const std::string& msg) const throw(INTERP_KERNEL::Exception);
-    static int GetNumberOfItemGivenBES(int begin, int end, int step, const std::string& msg) throw(INTERP_KERNEL::Exception);
-    static int GetNumberOfItemGivenBESRelative(int begin, int end, int step, const std::string& msg) throw(INTERP_KERNEL::Exception);
-    static int GetPosOfItemGivenBESRelativeNoThrow(int value, int begin, int end, int step) throw(INTERP_KERNEL::Exception);
-    static std::string GetVarNameFromInfo(const std::string& info) throw(INTERP_KERNEL::Exception);
-    static std::string GetUnitFromInfo(const std::string& info) throw(INTERP_KERNEL::Exception);
-    static std::string BuildInfoFromVarAndUnit(const std::string& var, const std::string& unit) throw(INTERP_KERNEL::Exception);
-    static std::string GetAxisTypeRepr(MEDCouplingAxisType at) throw(INTERP_KERNEL::Exception);
+    virtual void alloc(int nbOfTuple, int nbOfCompo=1);
+    virtual void reAlloc(int nbOfTuples);
+    virtual bool isAllocated() const;
+    virtual void checkAllocated() const;
+    virtual void desallocate();
+    virtual int getNumberOfTuples() const;
+    virtual std::size_t getNbOfElems() const;
+    virtual std::size_t getNbOfElemAllocated() const;
+    virtual DataArray *deepCopy() const;
+    virtual DataArray *buildNewEmptyInstance() const;
+    virtual DataArray *selectByTupleIdSafeSlice(int bg, int end2, int step) const;
+    virtual void rearrange(int newNbOfCompo);
+    virtual void circularPermutation(int nbOfShift=1);
+    virtual void circularPermutationPerTuple(int nbOfShift=1);
+    virtual void reversePerTuple();
+    void checkNbOfTuples(int nbOfTuples, const std::string& msg) const;
+    void checkNbOfComps(int nbOfCompo, const std::string& msg) const;
+    void checkNbOfTuplesAndComp(const DataArray& other, const std::string& msg) const;
+    void checkNbOfTuplesAndComp(int nbOfTuples, int nbOfCompo, const std::string& msg) const;
+    void checkNbOfElems(std::size_t nbOfElems, const std::string& msg) const;
+    static int GetNumberOfItemGivenBES(int begin, int end, int step, const std::string& msg);
+    static int GetNumberOfItemGivenBESRelative(int begin, int end, int step, const std::string& msg);
+    static int GetPosOfItemGivenBESRelativeNoThrow(int value, int begin, int end, int step);
+    static std::string GetVarNameFromInfo(const std::string& info);
+    static std::string GetUnitFromInfo(const std::string& info);
+    static std::string BuildInfoFromVarAndUnit(const std::string& var, const std::string& unit);
+    static std::string GetAxisTypeRepr(MEDCouplingAxisType at);
     void updateTime() const;
     %extend
     {
-      PyObject *getInfoOnComponents() const throw(INTERP_KERNEL::Exception)
+      PyObject *getInfoOnComponents() const
       {
         const std::vector<std::string>& comps=self->getInfoOnComponents();
         PyObject *ret=PyList_New((int)comps.size());
@@ -425,21 +425,21 @@ namespace MEDCoupling
         return ret;
       }
       
-      void copyPartOfStringInfoFrom(const DataArray& other, PyObject *li) throw(INTERP_KERNEL::Exception)
+      void copyPartOfStringInfoFrom(const DataArray& other, PyObject *li)
       {
         std::vector<int> tmp;
         convertPyToNewIntArr3(li,tmp);
         self->copyPartOfStringInfoFrom(other,tmp);
       }
 
-      void copyPartOfStringInfoFrom2(PyObject *li, const DataArray& other) throw(INTERP_KERNEL::Exception)
+      void copyPartOfStringInfoFrom2(PyObject *li, const DataArray& other)
       {
         std::vector<int> tmp;
         convertPyToNewIntArr3(li,tmp);
         self->copyPartOfStringInfoFrom2(tmp,other);
       }
 
-      virtual void renumberInPlace(PyObject *li) throw(INTERP_KERNEL::Exception)
+      virtual void renumberInPlace(PyObject *li)
       {
         void *da=0;
         int res1=SWIG_ConvertPtr(li,&da,SWIGTYPE_p_MEDCoupling__DataArrayInt, 0 |  0 );
@@ -468,7 +468,7 @@ namespace MEDCoupling
           }
       }
 
-      virtual void renumberInPlaceR(PyObject *li) throw(INTERP_KERNEL::Exception)
+      virtual void renumberInPlaceR(PyObject *li)
       {
         void *da=0;
         int res1=SWIG_ConvertPtr(li,&da,SWIGTYPE_p_MEDCoupling__DataArrayInt, 0 |  0 );
@@ -498,7 +498,7 @@ namespace MEDCoupling
       }
 
       //tuplesSelec in PyObject * because DataArrayInt is not already existing !
-      virtual void setContigPartOfSelectedValues(int tupleIdStart, PyObject *aBase, PyObject *tuplesSelec) throw(INTERP_KERNEL::Exception)
+      virtual void setContigPartOfSelectedValues(int tupleIdStart, PyObject *aBase, PyObject *tuplesSelec)
       {
         static const char msg[]="DataArray::setContigPartOfSelectedValuesSlice : 4th parameter \"tuplesSelec\" should be of type DataArrayInt";
           DataArray *a=CheckAndRetrieveDataArrayInstance(aBase,"DataArray::setContigPartOfSelectedValuesSlice : 3rd parameter \"aBase\" should be of type DataArray");
@@ -513,20 +513,20 @@ namespace MEDCoupling
         self->setContigPartOfSelectedValues(tupleIdStart,a,tuplesSelecPtr2);
       }
       
-      virtual void setContigPartOfSelectedValuesSlice(int tupleIdStart, PyObject *aBase, int bg, int end2, int step) throw(INTERP_KERNEL::Exception)
+      virtual void setContigPartOfSelectedValuesSlice(int tupleIdStart, PyObject *aBase, int bg, int end2, int step)
       {
         DataArray *a=CheckAndRetrieveDataArrayInstance(aBase,"DataArray::setContigPartOfSelectedValuesSlice : 2nd parameter \"aBase\" should be of type DataArray");
         self->setContigPartOfSelectedValuesSlice(tupleIdStart,a,bg,end2,step);
       }
 
-      virtual DataArray *selectByTupleRanges(PyObject *li) const throw(INTERP_KERNEL::Exception)
+      virtual DataArray *selectByTupleRanges(PyObject *li) const
       {
         std::vector<std::pair<int,int> > ranges;
         convertPyToVectorPairInt(li,ranges);
         return self->selectByTupleRanges(ranges);
       }
 
-      virtual DataArray *selectByTupleId(PyObject *li) const throw(INTERP_KERNEL::Exception)
+      virtual DataArray *selectByTupleId(PyObject *li) const
       {
         void *da=0;
         int res1=SWIG_ConvertPtr(li,&da,SWIGTYPE_p_MEDCoupling__DataArrayInt, 0 |  0 );
@@ -546,7 +546,7 @@ namespace MEDCoupling
           }
       }
 
-      virtual DataArray *selectByTupleIdSafe(PyObject *li) const throw(INTERP_KERNEL::Exception)
+      virtual DataArray *selectByTupleIdSafe(PyObject *li) const
       {
         void *da=0;
         int res1=SWIG_ConvertPtr(li,&da,SWIGTYPE_p_MEDCoupling__DataArrayInt, 0 |  0 );
@@ -566,7 +566,7 @@ namespace MEDCoupling
           }
       }
 
-      virtual PyObject *keepSelectedComponents(PyObject *li) const throw(INTERP_KERNEL::Exception)
+      virtual PyObject *keepSelectedComponents(PyObject *li) const
       {
         std::vector<int> tmp;
         convertPyToNewIntArr3(li,tmp);
@@ -574,7 +574,7 @@ namespace MEDCoupling
         return convertDataArray(ret,SWIG_POINTER_OWN | 0 );
       }
 
-      static PyObject *GetSlice(PyObject *slic, int sliceId, int nbOfSlices) throw(INTERP_KERNEL::Exception)
+      static PyObject *GetSlice(PyObject *slic, int sliceId, int nbOfSlices)
       {
         if(!PySlice_Check(slic))
           throw INTERP_KERNEL::Exception("DataArray::GetSlice (wrap) : expecting a pyslice as second (first) parameter !");
@@ -585,7 +585,7 @@ namespace MEDCoupling
         return PySlice_New(PyInt_FromLong(a),PyInt_FromLong(b),PyInt_FromLong(step));
       }
 
-      PyObject *getSlice(PyObject *slic, int sliceId, int nbOfSlices) const throw(INTERP_KERNEL::Exception)
+      PyObject *getSlice(PyObject *slic, int sliceId, int nbOfSlices) const
       {
         if(!PySlice_Check(slic))
           throw INTERP_KERNEL::Exception("DataArray::getSlice (wrap) : expecting a pyslice as second (first) parameter !");
@@ -596,7 +596,7 @@ namespace MEDCoupling
         return PySlice_New(PyInt_FromLong(a),PyInt_FromLong(b),PyInt_FromLong(step));
       }
 
-      static int GetNumberOfItemGivenBES(PyObject *slic) throw(INTERP_KERNEL::Exception)
+      static int GetNumberOfItemGivenBES(PyObject *slic)
       {
         if(!PySlice_Check(slic))
           throw INTERP_KERNEL::Exception("DataArray::GetNumberOfItemGivenBES (wrap) : expecting a pyslice as second (first) parameter !");
@@ -605,7 +605,7 @@ namespace MEDCoupling
         return DataArray::GetNumberOfItemGivenBES(strt,stp,step,"");
       }
 
-      static int GetNumberOfItemGivenBESRelative(PyObject *slic) throw(INTERP_KERNEL::Exception)
+      static int GetNumberOfItemGivenBESRelative(PyObject *slic)
       {
         if(!PySlice_Check(slic))
           throw INTERP_KERNEL::Exception("DataArray::GetNumberOfItemGivenBESRelative (wrap) : expecting a pyslice as second (first) parameter !");
@@ -614,14 +614,14 @@ namespace MEDCoupling
         return DataArray::GetNumberOfItemGivenBESRelative(strt,stp,step,"");
       }
       
-      static DataArray *Aggregate(PyObject *arrs) throw(INTERP_KERNEL::Exception)
+      static DataArray *Aggregate(PyObject *arrs)
       {
         std::vector<const DataArray *> tmp;
         convertFromPyObjVectorOfObj<const MEDCoupling::DataArray *>(arrs,SWIGTYPE_p_MEDCoupling__DataArray,"DataArray",tmp);
         return DataArray::Aggregate(tmp);
       }
 
-      int getNumberOfItemGivenBES(PyObject *slic) const throw(INTERP_KERNEL::Exception)
+      int getNumberOfItemGivenBES(PyObject *slic) const
       {
         if(!PySlice_Check(slic))
           throw INTERP_KERNEL::Exception("DataArray::getNumberOfItemGivenBES (wrap) : expecting a pyslice as second (first) parameter !");
@@ -630,7 +630,7 @@ namespace MEDCoupling
         return DataArray::GetNumberOfItemGivenBES(strt,stp,step,"");
       }
 
-      int getNumberOfItemGivenBESRelative(PyObject *slic) throw(INTERP_KERNEL::Exception)
+      int getNumberOfItemGivenBESRelative(PyObject *slic)
       {
         if(!PySlice_Check(slic))
           throw INTERP_KERNEL::Exception("DataArray::getNumberOfItemGivenBESRelative (wrap) : expecting a pyslice as second (first) parameter !");
@@ -639,7 +639,7 @@ namespace MEDCoupling
         return DataArray::GetNumberOfItemGivenBESRelative(strt,stp,step,"");
       }
 
-      PyObject *__getstate__() const throw(INTERP_KERNEL::Exception)
+      PyObject *__getstate__() const
       {
         PyObject *ret(PyTuple_New(2));
         std::string a0(self->getName());
@@ -655,7 +655,7 @@ namespace MEDCoupling
         return ret;
       }
 
-      void __setstate__(PyObject *inp) throw(INTERP_KERNEL::Exception)
+      void __setstate__(PyObject *inp)
       {
         static const char MSG[]="DataArrayDouble.__setstate__ : expected input is a tuple of size 2 with string as 1st arg and list of string as 2nd arg !";
         if(!PyTuple_Check(inp))
@@ -680,50 +680,50 @@ namespace MEDCoupling
   {
   public:
     static DataArrayFloat *New();
-    void fillWithValue(float val) throw(INTERP_KERNEL::Exception);
-    bool isEqual(const DataArrayFloat& other, float prec) const throw(INTERP_KERNEL::Exception);
-    bool isEqualWithoutConsideringStr(const DataArrayFloat& other, float prec) const throw(INTERP_KERNEL::Exception);
-    bool isUniform(float val, float eps) const throw(INTERP_KERNEL::Exception);
-    void pushBackSilent(float val) throw(INTERP_KERNEL::Exception);
-    void iota(float init=0.) throw(INTERP_KERNEL::Exception);
-    DataArrayFloatIterator *iterator() throw(INTERP_KERNEL::Exception);
-    MCAuto<DataArrayDouble> convertToDblArr() const throw(INTERP_KERNEL::Exception);
-    static DataArrayFloat *Meld(const DataArrayFloat *a1, const DataArrayFloat *a2) throw(INTERP_KERNEL::Exception);
+    void fillWithValue(float val);
+    bool isEqual(const DataArrayFloat& other, float prec) const;
+    bool isEqualWithoutConsideringStr(const DataArrayFloat& other, float prec) const;
+    bool isUniform(float val, float eps) const;
+    void pushBackSilent(float val);
+    void iota(float init=0.);
+    DataArrayFloatIterator *iterator();
+    MCAuto<DataArrayDouble> convertToDblArr() const;
+    static DataArrayFloat *Meld(const DataArrayFloat *a1, const DataArrayFloat *a2);
     %extend
     {
-      DataArrayFloat() throw(INTERP_KERNEL::Exception)
+      DataArrayFloat()
       {
         return DataArrayFloat::New();
       }
 
-      static DataArrayFloat *New(PyObject *elt0, PyObject *nbOfTuples=0, PyObject *elt2=0) throw(INTERP_KERNEL::Exception)
+      static DataArrayFloat *New(PyObject *elt0, PyObject *nbOfTuples=0, PyObject *elt2=0)
       {
         return DataArrayT_New<float>(elt0,nbOfTuples,elt2);
       }
    
-      DataArrayFloat(PyObject *elt0, PyObject *nbOfTuples=0, PyObject *elt2=0) throw(INTERP_KERNEL::Exception)
+      DataArrayFloat(PyObject *elt0, PyObject *nbOfTuples=0, PyObject *elt2=0)
       {
         return MEDCoupling_DataArrayFloat_New__SWIG_1(elt0,nbOfTuples,elt2);
       }
 
-      DataArrayFloatIterator *__iter__() throw(INTERP_KERNEL::Exception)
+      DataArrayFloatIterator *__iter__()
       {
         return self->iterator();
       }
 
-      std::string __repr__() const throw(INTERP_KERNEL::Exception)
+      std::string __repr__() const
       {
         std::ostringstream oss;
         self->reprQuickOverview(oss);
         return oss.str();
       }
 
-      std::string __str__() const throw(INTERP_KERNEL::Exception)
+      std::string __str__() const
       {
         return self->reprNotTooLong();
       }
 
-      int __len__() const throw(INTERP_KERNEL::Exception)
+      int __len__() const
       {
         if(self->isAllocated())
           {
@@ -735,20 +735,20 @@ namespace MEDCoupling
           }
       }
 
-      PyObject *getValues() const throw(INTERP_KERNEL::Exception)
+      PyObject *getValues() const
       {
         const float *vals(self->begin());
         return convertDblArrToPyList<float>(vals,self->getNbOfElems());
       }
 
-      PyObject *getValuesAsTuple() const throw(INTERP_KERNEL::Exception)
+      PyObject *getValuesAsTuple() const
       {
         const float *vals(self->begin());
         int nbOfComp(self->getNumberOfComponents()),nbOfTuples(self->getNumberOfTuples());
         return convertDblArrToPyListOfTuple<float>(vals,nbOfComp,nbOfTuples);
       }
 
-      PyObject *isEqualIfNotWhy(const DataArrayFloat& other, float prec) const throw(INTERP_KERNEL::Exception)
+      PyObject *isEqualIfNotWhy(const DataArrayFloat& other, float prec) const
       {
         std::string ret1;
         bool ret0=self->isEqualIfNotWhy(other,prec,ret1);
@@ -760,43 +760,43 @@ namespace MEDCoupling
         return ret;
       }
       
-      PyObject *__getitem__(PyObject *obj) throw(INTERP_KERNEL::Exception)
+      PyObject *__getitem__(PyObject *obj)
       {
         return DataArrayT__getitem<float>(self,obj);
       }
 
-      DataArrayFloat *__setitem__(PyObject *obj, PyObject *value) throw(INTERP_KERNEL::Exception)
+      DataArrayFloat *__setitem__(PyObject *obj, PyObject *value)
       {
         return DataArrayT__setitem__<float>(self,obj,value);
       }
       
-      PyObject *___iadd___(PyObject *trueSelf, PyObject *obj) throw(INTERP_KERNEL::Exception)
+      PyObject *___iadd___(PyObject *trueSelf, PyObject *obj)
       {
         return DataArrayT_iadd<float>(trueSelf,obj,self);
       }
 
-      PyObject *___isub___(PyObject *trueSelf, PyObject *obj) throw(INTERP_KERNEL::Exception)
+      PyObject *___isub___(PyObject *trueSelf, PyObject *obj)
       {
         return DataArrayT_isub<float>(trueSelf,obj,self);
       }
 
-      PyObject *___imul___(PyObject *trueSelf, PyObject *obj) throw(INTERP_KERNEL::Exception)
+      PyObject *___imul___(PyObject *trueSelf, PyObject *obj)
       {
         return DataArrayT_imul<float>(trueSelf,obj,self);
       }
 
-      DataArrayFloat *__rmul__(PyObject *obj) throw(INTERP_KERNEL::Exception)
+      DataArrayFloat *__rmul__(PyObject *obj)
       {
         return DataArrayFPT_rmul<float>(self,obj);
       }
 
-      PyObject *___idiv___(PyObject *trueSelf, PyObject *obj) throw(INTERP_KERNEL::Exception)
+      PyObject *___idiv___(PyObject *trueSelf, PyObject *obj)
       {
         return DataArrayT_idiv<float>(trueSelf,obj,self);
       }
       
 #ifdef WITH_NUMPY
-      PyObject *toNumPyArray() throw(INTERP_KERNEL::Exception) // not const. It is not a bug !
+      PyObject *toNumPyArray() // not const. It is not a bug !
       {
         return ToNumPyArray<DataArrayFloat,float>(self,NPY_FLOAT,"DataArrayFloat");
       }
@@ -830,26 +830,26 @@ namespace MEDCoupling
   class DataArrayFloatTuple
   {
   public:
-    int getNumberOfCompo() const throw(INTERP_KERNEL::Exception);
-    DataArrayFloat *buildDAFloat(int nbOfTuples, int nbOfCompo) const throw(INTERP_KERNEL::Exception);
+    int getNumberOfCompo() const;
+    DataArrayFloat *buildDAFloat(int nbOfTuples, int nbOfCompo) const;
     %extend
     {
-      std::string __str__() const throw(INTERP_KERNEL::Exception)
+      std::string __str__() const
       {
         return self->repr();
       }
 
-      float __float__() const throw(INTERP_KERNEL::Exception)
+      float __float__() const
       {
         return self->floatValue();
       }
 
-      DataArrayFloat *buildDAFloat() throw(INTERP_KERNEL::Exception)
+      DataArrayFloat *buildDAFloat()
       {
         return self->buildDAFloat(1,self->getNumberOfCompo());
       }
   
-      /*PyObject *___imul___(PyObject *trueSelf, PyObject *obj) throw(INTERP_KERNEL::Exception)
+      /*PyObject *___imul___(PyObject *trueSelf, PyObject *obj)
       {
         MCAuto<DataArrayFloat> ret=self->buildDAFloat(1,self->getNumberOfCompo());
         MEDCoupling_DataArrayFloat____imul___(ret,0,obj);
@@ -857,7 +857,7 @@ namespace MEDCoupling
         return trueSelf;
         }*/
 
-      PyObject *__len__() throw(INTERP_KERNEL::Exception)
+      PyObject *__len__()
       {
         return PyInt_FromLong(self->getNumberOfCompo());
       }
@@ -871,142 +871,142 @@ namespace MEDCoupling
   {
   public:
     static DataArrayDouble *New();
-    double doubleValue() const throw(INTERP_KERNEL::Exception);
-    bool empty() const throw(INTERP_KERNEL::Exception);
-    void aggregate(const DataArrayDouble *other) throw(INTERP_KERNEL::Exception);
-    DataArrayDouble *performCopyOrIncrRef(bool deepCopy) const throw(INTERP_KERNEL::Exception);
-    void deepCopyFrom(const DataArrayDouble& other) throw(INTERP_KERNEL::Exception);
-    void reserve(std::size_t nbOfElems) throw(INTERP_KERNEL::Exception);
-    void pushBackSilent(double val) throw(INTERP_KERNEL::Exception);
-    double popBackSilent() throw(INTERP_KERNEL::Exception);
-    void pack() const throw(INTERP_KERNEL::Exception);
-    void allocIfNecessary(int nbOfTuple, int nbOfCompo) throw(INTERP_KERNEL::Exception);
-    void fillWithZero() throw(INTERP_KERNEL::Exception);
-    void fillWithValue(double val) throw(INTERP_KERNEL::Exception);
-    void iota(double init=0.) throw(INTERP_KERNEL::Exception);
-    bool isUniform(double val, double eps) const throw(INTERP_KERNEL::Exception);
-    void sort(bool asc=true) throw(INTERP_KERNEL::Exception);
-    void reverse() throw(INTERP_KERNEL::Exception);
-    void checkMonotonic(bool increasing, double eps) const throw(INTERP_KERNEL::Exception);
-    bool isMonotonic(bool increasing, double eps) const throw(INTERP_KERNEL::Exception);
-    std::string repr() const throw(INTERP_KERNEL::Exception);
-    std::string reprZip() const throw(INTERP_KERNEL::Exception);
-    std::string reprNotTooLong() const throw(INTERP_KERNEL::Exception);
-    bool isEqual(const DataArrayDouble& other, double prec) const throw(INTERP_KERNEL::Exception);
-    bool isEqualWithoutConsideringStr(const DataArrayDouble& other, double prec) const throw(INTERP_KERNEL::Exception);
-    DataArrayDouble *fromNoInterlace() const throw(INTERP_KERNEL::Exception);
-    DataArrayDouble *toNoInterlace() const throw(INTERP_KERNEL::Exception);
-    DataArrayDouble *subArray(int tupleIdBg, int tupleIdEnd=-1) const throw(INTERP_KERNEL::Exception);
-    void transpose() throw(INTERP_KERNEL::Exception);
-    DataArrayDouble *changeNbOfComponents(int newNbOfComp, double dftValue) const throw(INTERP_KERNEL::Exception);
-    void meldWith(const DataArrayDouble *other) throw(INTERP_KERNEL::Exception);
-    DataArrayDouble *duplicateEachTupleNTimes(int nbTimes) const throw(INTERP_KERNEL::Exception);
-    DataArrayDouble *getDifferentValues(double prec, int limitTupleId=-1) const throw(INTERP_KERNEL::Exception);
-    DataArrayInt *findClosestTupleId(const DataArrayDouble *other) const throw(INTERP_KERNEL::Exception);
-    DataArrayInt *computeNbOfInteractionsWith(const DataArrayDouble *otherBBoxFrmt, double eps) const throw(INTERP_KERNEL::Exception);
-    void setPartOfValues1(const DataArrayDouble *a, int bgTuples, int endTuples, int stepTuples, int bgComp, int endComp, int stepComp, bool strictCompoCompare=true) throw(INTERP_KERNEL::Exception);
-    void setPartOfValuesSimple1(double a, int bgTuples, int endTuples, int stepTuples, int bgComp, int endComp, int stepComp) throw(INTERP_KERNEL::Exception);
-    void setPartOfValuesAdv(const DataArrayDouble *a, const DataArrayInt *tuplesSelec) throw(INTERP_KERNEL::Exception);
-    double getIJ(int tupleId, int compoId) const throw(INTERP_KERNEL::Exception);
-    double front() const throw(INTERP_KERNEL::Exception);
-    double back() const throw(INTERP_KERNEL::Exception);
-    double getIJSafe(int tupleId, int compoId) const throw(INTERP_KERNEL::Exception);
-    void setIJ(int tupleId, int compoId, double newVal) throw(INTERP_KERNEL::Exception);
-    void setIJSilent(int tupleId, int compoId, double newVal) throw(INTERP_KERNEL::Exception);
-    double *getPointer() throw(INTERP_KERNEL::Exception);
-    void checkNoNullValues() const throw(INTERP_KERNEL::Exception);
-    DataArrayDouble *computeBBoxPerTuple(double epsilon=0.0) const throw(INTERP_KERNEL::Exception);
-    void recenterForMaxPrecision(double eps) throw(INTERP_KERNEL::Exception);
-    double getMaxValueInArray() const throw(INTERP_KERNEL::Exception);
-    double getMaxAbsValueInArray() const throw(INTERP_KERNEL::Exception);
-    double getMinValueInArray() const throw(INTERP_KERNEL::Exception);
-    int count(double value, double eps) const throw(INTERP_KERNEL::Exception);
-    double getAverageValue() const throw(INTERP_KERNEL::Exception);
-    double norm2() const throw(INTERP_KERNEL::Exception);
-    double normMax() const throw(INTERP_KERNEL::Exception);
-    double normMin() const throw(INTERP_KERNEL::Exception);
-    double accumulate(int compId) const throw(INTERP_KERNEL::Exception);
-    DataArrayDouble *fromPolarToCart() const throw(INTERP_KERNEL::Exception);
-    DataArrayDouble *fromCylToCart() const throw(INTERP_KERNEL::Exception);
-    DataArrayDouble *fromSpherToCart() const throw(INTERP_KERNEL::Exception);
-    DataArrayDouble *fromCartToPolar() const throw(INTERP_KERNEL::Exception);
-    DataArrayDouble *fromCartToCyl() const throw(INTERP_KERNEL::Exception);
-    DataArrayDouble *fromCartToSpher() const throw(INTERP_KERNEL::Exception);
-    DataArrayDouble *cartesianize(MEDCouplingAxisType atOfThis) const throw(INTERP_KERNEL::Exception);
-    DataArrayDouble *doublyContractedProduct() const throw(INTERP_KERNEL::Exception);
-    DataArrayDouble *determinant() const throw(INTERP_KERNEL::Exception);
-    DataArrayDouble *eigenValues() const throw(INTERP_KERNEL::Exception);
-    DataArrayDouble *eigenVectors() const throw(INTERP_KERNEL::Exception);
-    DataArrayDouble *inverse() const throw(INTERP_KERNEL::Exception);
-    DataArrayDouble *trace() const throw(INTERP_KERNEL::Exception);
-    DataArrayDouble *deviator() const throw(INTERP_KERNEL::Exception);
-    DataArrayDouble *magnitude() const throw(INTERP_KERNEL::Exception);
-    DataArrayDouble *maxPerTuple() const throw(INTERP_KERNEL::Exception);
-    DataArrayDouble *sumPerTuple() const throw(INTERP_KERNEL::Exception);
-    DataArrayDouble *buildEuclidianDistanceDenseMatrix() const throw(INTERP_KERNEL::Exception);
-    DataArrayDouble *buildEuclidianDistanceDenseMatrixWith(const DataArrayDouble *other) const throw(INTERP_KERNEL::Exception);
-    void sortPerTuple(bool asc) throw(INTERP_KERNEL::Exception);
-    void abs() throw(INTERP_KERNEL::Exception);
-    DataArrayDouble *computeAbs() const throw(INTERP_KERNEL::Exception);
-    void applyLin(double a, double b, int compoId) throw(INTERP_KERNEL::Exception);
-    void applyLin(double a, double b) throw(INTERP_KERNEL::Exception);
-    void applyInv(double numerator) throw(INTERP_KERNEL::Exception);
-    void applyPow(double val) throw(INTERP_KERNEL::Exception);
-    void applyRPow(double val) throw(INTERP_KERNEL::Exception);
-    DataArrayDouble *negate() const throw(INTERP_KERNEL::Exception);
-    DataArrayDouble *applyFunc(int nbOfComp, FunctionToEvaluate func) const throw(INTERP_KERNEL::Exception);
-    DataArrayDouble *applyFunc(int nbOfComp, const std::string& func, bool isSafe=true) const throw(INTERP_KERNEL::Exception);
-    DataArrayDouble *applyFunc(const std::string& func, bool isSafe=true) const throw(INTERP_KERNEL::Exception);
-    void applyFuncOnThis(const std::string& func, bool isSafe=true) throw(INTERP_KERNEL::Exception);
-    DataArrayDouble *applyFuncCompo(int nbOfComp, const std::string& func, bool isSafe=true) const throw(INTERP_KERNEL::Exception);
-    DataArrayDouble *applyFuncNamedCompo(int nbOfComp, const std::vector<std::string>& varsOrder, const std::string& func, bool isSafe=true) const throw(INTERP_KERNEL::Exception);
-    void applyFuncFast32(const std::string& func) throw(INTERP_KERNEL::Exception);
-    void applyFuncFast64(const std::string& func) throw(INTERP_KERNEL::Exception);
-    DataArrayInt *findIdsInRange(double vmin, double vmax) const throw(INTERP_KERNEL::Exception);
-    DataArrayInt *findIdsNotInRange(double vmin, double vmax) const throw(INTERP_KERNEL::Exception);
-    DataArrayInt *findIdsStrictlyNegative() const throw(INTERP_KERNEL::Exception);
-    static DataArrayDouble *Aggregate(const DataArrayDouble *a1, const DataArrayDouble *a2) throw(INTERP_KERNEL::Exception);
-    static DataArrayDouble *Meld(const DataArrayDouble *a1, const DataArrayDouble *a2) throw(INTERP_KERNEL::Exception);
-    static DataArrayDouble *Dot(const DataArrayDouble *a1, const DataArrayDouble *a2) throw(INTERP_KERNEL::Exception);
-    static DataArrayDouble *CrossProduct(const DataArrayDouble *a1, const DataArrayDouble *a2) throw(INTERP_KERNEL::Exception);
-    static DataArrayDouble *Max(const DataArrayDouble *a1, const DataArrayDouble *a2) throw(INTERP_KERNEL::Exception);
-    static DataArrayDouble *Min(const DataArrayDouble *a1, const DataArrayDouble *a2) throw(INTERP_KERNEL::Exception);
-    static DataArrayDouble *Add(const DataArrayDouble *a1, const DataArrayDouble *a2) throw(INTERP_KERNEL::Exception);
-    void addEqual(const DataArrayDouble *other) throw(INTERP_KERNEL::Exception);
-    static DataArrayDouble *Substract(const DataArrayDouble *a1, const DataArrayDouble *a2) throw(INTERP_KERNEL::Exception);
-    void substractEqual(const DataArrayDouble *other) throw(INTERP_KERNEL::Exception);
-    static DataArrayDouble *Multiply(const DataArrayDouble *a1, const DataArrayDouble *a2) throw(INTERP_KERNEL::Exception);
-    void multiplyEqual(const DataArrayDouble *other) throw(INTERP_KERNEL::Exception);
-    static DataArrayDouble *Divide(const DataArrayDouble *a1, const DataArrayDouble *a2) throw(INTERP_KERNEL::Exception);
-    void divideEqual(const DataArrayDouble *other) throw(INTERP_KERNEL::Exception);
-    static DataArrayDouble *Pow(const DataArrayDouble *a1, const DataArrayDouble *a2) throw(INTERP_KERNEL::Exception);
-    void powEqual(const DataArrayDouble *other) throw(INTERP_KERNEL::Exception);
-    MCAuto<DataArrayInt> findIdsGreaterOrEqualTo(double val) const throw(INTERP_KERNEL::Exception);
-    MCAuto<DataArrayInt> findIdsGreaterThan(double val) const throw(INTERP_KERNEL::Exception);
-    MCAuto<DataArrayInt> findIdsLowerOrEqualTo(double val) const throw(INTERP_KERNEL::Exception);
-    MCAuto<DataArrayInt> findIdsLowerThan(double val) const throw(INTERP_KERNEL::Exception);
-    MCAuto<DataArrayInt> convertToIntArr() const throw(INTERP_KERNEL::Exception);
-    MCAuto<DataArrayDouble> selectPartDef(const PartDefinition* pd) const throw(INTERP_KERNEL::Exception);
-    MCAuto<DataArrayDouble> cumSum() const throw(INTERP_KERNEL::Exception);
-    MCAuto<DataArrayFloat> convertToFloatArr() const throw(INTERP_KERNEL::Exception);
+    double doubleValue() const;
+    bool empty() const;
+    void aggregate(const DataArrayDouble *other);
+    DataArrayDouble *performCopyOrIncrRef(bool deepCopy) const;
+    void deepCopyFrom(const DataArrayDouble& other);
+    void reserve(std::size_t nbOfElems);
+    void pushBackSilent(double val);
+    double popBackSilent();
+    void pack() const;
+    void allocIfNecessary(int nbOfTuple, int nbOfCompo);
+    void fillWithZero();
+    void fillWithValue(double val);
+    void iota(double init=0.);
+    bool isUniform(double val, double eps) const;
+    void sort(bool asc=true);
+    void reverse();
+    void checkMonotonic(bool increasing, double eps) const;
+    bool isMonotonic(bool increasing, double eps) const;
+    std::string repr() const;
+    std::string reprZip() const;
+    std::string reprNotTooLong() const;
+    bool isEqual(const DataArrayDouble& other, double prec) const;
+    bool isEqualWithoutConsideringStr(const DataArrayDouble& other, double prec) const;
+    DataArrayDouble *fromNoInterlace() const;
+    DataArrayDouble *toNoInterlace() const;
+    DataArrayDouble *subArray(int tupleIdBg, int tupleIdEnd=-1) const;
+    void transpose();
+    DataArrayDouble *changeNbOfComponents(int newNbOfComp, double dftValue) const;
+    void meldWith(const DataArrayDouble *other);
+    DataArrayDouble *duplicateEachTupleNTimes(int nbTimes) const;
+    DataArrayDouble *getDifferentValues(double prec, int limitTupleId=-1) const;
+    DataArrayInt *findClosestTupleId(const DataArrayDouble *other) const;
+    DataArrayInt *computeNbOfInteractionsWith(const DataArrayDouble *otherBBoxFrmt, double eps) const;
+    void setPartOfValues1(const DataArrayDouble *a, int bgTuples, int endTuples, int stepTuples, int bgComp, int endComp, int stepComp, bool strictCompoCompare=true);
+    void setPartOfValuesSimple1(double a, int bgTuples, int endTuples, int stepTuples, int bgComp, int endComp, int stepComp);
+    void setPartOfValuesAdv(const DataArrayDouble *a, const DataArrayInt *tuplesSelec);
+    double getIJ(int tupleId, int compoId) const;
+    double front() const;
+    double back() const;
+    double getIJSafe(int tupleId, int compoId) const;
+    void setIJ(int tupleId, int compoId, double newVal);
+    void setIJSilent(int tupleId, int compoId, double newVal);
+    double *getPointer();
+    void checkNoNullValues() const;
+    DataArrayDouble *computeBBoxPerTuple(double epsilon=0.0) const;
+    void recenterForMaxPrecision(double eps);
+    double getMaxValueInArray() const;
+    double getMaxAbsValueInArray() const;
+    double getMinValueInArray() const;
+    int count(double value, double eps) const;
+    double getAverageValue() const;
+    double norm2() const;
+    double normMax() const;
+    double normMin() const;
+    double accumulate(int compId) const;
+    DataArrayDouble *fromPolarToCart() const;
+    DataArrayDouble *fromCylToCart() const;
+    DataArrayDouble *fromSpherToCart() const;
+    DataArrayDouble *fromCartToPolar() const;
+    DataArrayDouble *fromCartToCyl() const;
+    DataArrayDouble *fromCartToSpher() const;
+    DataArrayDouble *cartesianize(MEDCouplingAxisType atOfThis) const;
+    DataArrayDouble *doublyContractedProduct() const;
+    DataArrayDouble *determinant() const;
+    DataArrayDouble *eigenValues() const;
+    DataArrayDouble *eigenVectors() const;
+    DataArrayDouble *inverse() const;
+    DataArrayDouble *trace() const;
+    DataArrayDouble *deviator() const;
+    DataArrayDouble *magnitude() const;
+    DataArrayDouble *maxPerTuple() const;
+    DataArrayDouble *sumPerTuple() const;
+    DataArrayDouble *buildEuclidianDistanceDenseMatrix() const;
+    DataArrayDouble *buildEuclidianDistanceDenseMatrixWith(const DataArrayDouble *other) const;
+    void sortPerTuple(bool asc);
+    void abs();
+    DataArrayDouble *computeAbs() const;
+    void applyLin(double a, double b, int compoId);
+    void applyLin(double a, double b);
+    void applyInv(double numerator);
+    void applyPow(double val);
+    void applyRPow(double val);
+    DataArrayDouble *negate() const;
+    DataArrayDouble *applyFunc(int nbOfComp, FunctionToEvaluate func) const;
+    DataArrayDouble *applyFunc(int nbOfComp, const std::string& func, bool isSafe=true) const;
+    DataArrayDouble *applyFunc(const std::string& func, bool isSafe=true) const;
+    void applyFuncOnThis(const std::string& func, bool isSafe=true);
+    DataArrayDouble *applyFuncCompo(int nbOfComp, const std::string& func, bool isSafe=true) const;
+    DataArrayDouble *applyFuncNamedCompo(int nbOfComp, const std::vector<std::string>& varsOrder, const std::string& func, bool isSafe=true) const;
+    void applyFuncFast32(const std::string& func);
+    void applyFuncFast64(const std::string& func);
+    DataArrayInt *findIdsInRange(double vmin, double vmax) const;
+    DataArrayInt *findIdsNotInRange(double vmin, double vmax) const;
+    DataArrayInt *findIdsStrictlyNegative() const;
+    static DataArrayDouble *Aggregate(const DataArrayDouble *a1, const DataArrayDouble *a2);
+    static DataArrayDouble *Meld(const DataArrayDouble *a1, const DataArrayDouble *a2);
+    static DataArrayDouble *Dot(const DataArrayDouble *a1, const DataArrayDouble *a2);
+    static DataArrayDouble *CrossProduct(const DataArrayDouble *a1, const DataArrayDouble *a2);
+    static DataArrayDouble *Max(const DataArrayDouble *a1, const DataArrayDouble *a2);
+    static DataArrayDouble *Min(const DataArrayDouble *a1, const DataArrayDouble *a2);
+    static DataArrayDouble *Add(const DataArrayDouble *a1, const DataArrayDouble *a2);
+    void addEqual(const DataArrayDouble *other);
+    static DataArrayDouble *Substract(const DataArrayDouble *a1, const DataArrayDouble *a2);
+    void substractEqual(const DataArrayDouble *other);
+    static DataArrayDouble *Multiply(const DataArrayDouble *a1, const DataArrayDouble *a2);
+    void multiplyEqual(const DataArrayDouble *other);
+    static DataArrayDouble *Divide(const DataArrayDouble *a1, const DataArrayDouble *a2);
+    void divideEqual(const DataArrayDouble *other);
+    static DataArrayDouble *Pow(const DataArrayDouble *a1, const DataArrayDouble *a2);
+    void powEqual(const DataArrayDouble *other);
+    MCAuto<DataArrayInt> findIdsGreaterOrEqualTo(double val) const;
+    MCAuto<DataArrayInt> findIdsGreaterThan(double val) const;
+    MCAuto<DataArrayInt> findIdsLowerOrEqualTo(double val) const;
+    MCAuto<DataArrayInt> findIdsLowerThan(double val) const;
+    MCAuto<DataArrayInt> convertToIntArr() const;
+    MCAuto<DataArrayDouble> selectPartDef(const PartDefinition* pd) const;
+    MCAuto<DataArrayDouble> cumSum() const;
+    MCAuto<DataArrayFloat> convertToFloatArr() const;
     %extend
     {
-      DataArrayDouble() throw(INTERP_KERNEL::Exception)
+      DataArrayDouble()
       {
         return DataArrayDouble::New();
       }
 
-      static DataArrayDouble *New(PyObject *elt0, PyObject *nbOfTuples=0, PyObject *elt2=0) throw(INTERP_KERNEL::Exception)
+      static DataArrayDouble *New(PyObject *elt0, PyObject *nbOfTuples=0, PyObject *elt2=0)
       {
         return DataArrayT_New<double>(elt0,nbOfTuples,elt2);
       }
    
-      DataArrayDouble(PyObject *elt0, PyObject *nbOfTuples=0, PyObject *elt2=0) throw(INTERP_KERNEL::Exception)
+      DataArrayDouble(PyObject *elt0, PyObject *nbOfTuples=0, PyObject *elt2=0)
       {
         return MEDCoupling_DataArrayDouble_New__SWIG_1(elt0,nbOfTuples,elt2);
       }
 
-      void pushBackValsSilent(PyObject *li) throw(INTERP_KERNEL::Exception)
+      void pushBackValsSilent(PyObject *li)
       {
         double val;
         std::vector<double> bb;
@@ -1016,24 +1016,24 @@ namespace MEDCoupling
         self->pushBackValsSilent(tmp,tmp+nbTuples);
       }
 
-      std::string __repr__() const throw(INTERP_KERNEL::Exception)
+      std::string __repr__() const
       {
         std::ostringstream oss;
         self->reprQuickOverview(oss);
         return oss.str();
       }
 
-      std::string __str__() const throw(INTERP_KERNEL::Exception)
+      std::string __str__() const
       {
         return self->reprNotTooLong();
       }
 
-      double __float__() const throw(INTERP_KERNEL::Exception)
+      double __float__() const
       {
         return self->doubleValue();
       }
 
-      int __len__() const throw(INTERP_KERNEL::Exception)
+      int __len__() const
       {
         if(self->isAllocated())
           {
@@ -1045,7 +1045,7 @@ namespace MEDCoupling
           }
       }
 
-      PyObject *asArcOfCircle() const throw(INTERP_KERNEL::Exception)
+      PyObject *asArcOfCircle() const
       {
         double center[2],radius,ang;
         self->asArcOfCircle(center,radius,ang);
@@ -1061,24 +1061,24 @@ namespace MEDCoupling
         return ret;
       }
 
-      DataArrayDoubleIterator *__iter__() throw(INTERP_KERNEL::Exception)
+      DataArrayDoubleIterator *__iter__()
       {
         return self->iterator();
       }
    
-      void setValues(PyObject *li, PyObject *nbOfTuples=0, PyObject *nbOfComp=0) throw(INTERP_KERNEL::Exception)
+      void setValues(PyObject *li, PyObject *nbOfTuples=0, PyObject *nbOfComp=0)
       {
         const char *msg="MEDCoupling::DataArrayDouble::setValues : Available API are : \n-DataArrayDouble.setValues([1.,3.,4.])\n-DataArrayDouble.setValues([1.,3.,4.],3)\n-DataArrayDouble.setValues([1.,3.,4.,5.],2,2)\n-DataArrayDouble.setValues([(1.,1.7),(3.,3.7),(4.,4.7)])\n !";
         if(PyList_Check(li) || PyTuple_Check(li))
           {
-            if(nbOfTuples)
+            if(nbOfTuples && nbOfTuples != Py_None)
               {
                 if(PyInt_Check(nbOfTuples))
                   {
                     int nbOfTuples1=PyInt_AS_LONG(nbOfTuples);
                     if(nbOfTuples1<0)
                       throw INTERP_KERNEL::Exception("DataArrayDouble::setValues : should be a positive set of allocated memory !");
-                    if(nbOfComp)
+                    if(nbOfComp && nbOfComp != Py_None)
                       {
                         if(PyInt_Check(nbOfComp))
                           {//DataArrayDouble.setValues([1.,3.,4.,5.],2,2)
@@ -1112,20 +1112,20 @@ namespace MEDCoupling
           throw INTERP_KERNEL::Exception(msg);
       }
 
-      PyObject *getValues() const throw(INTERP_KERNEL::Exception)
+      PyObject *getValues() const
       {
         const double *vals(self->begin());
         return convertDblArrToPyList<double>(vals,self->getNbOfElems());
       }
 
 #ifdef WITH_NUMPY
-      PyObject *toNumPyArray() throw(INTERP_KERNEL::Exception) // not const. It is not a bug !
+      PyObject *toNumPyArray() // not const. It is not a bug !
       {
         return ToNumPyArray<DataArrayDouble,double>(self,NPY_DOUBLE,"DataArrayDouble");
       }
 #endif
 
-      PyObject *isEqualIfNotWhy(const DataArrayDouble& other, double prec) const throw(INTERP_KERNEL::Exception)
+      PyObject *isEqualIfNotWhy(const DataArrayDouble& other, double prec) const
       {
         std::string ret1;
         bool ret0=self->isEqualIfNotWhy(other,prec,ret1);
@@ -1137,14 +1137,14 @@ namespace MEDCoupling
         return ret;
       }
 
-      PyObject *getValuesAsTuple() const throw(INTERP_KERNEL::Exception)
+      PyObject *getValuesAsTuple() const
       {
         const double *vals(self->begin());
         int nbOfComp(self->getNumberOfComponents()),nbOfTuples(self->getNumberOfTuples());
         return convertDblArrToPyListOfTuple<double>(vals,nbOfComp,nbOfTuples);
       }
 
-      static PyObject *ComputeIntegralOfSeg2IntoTri3(PyObject *seg2, PyObject *tri3) throw(INTERP_KERNEL::Exception)
+      static PyObject *ComputeIntegralOfSeg2IntoTri3(PyObject *seg2, PyObject *tri3)
       {
         const char msg[]="Python wrap of DataArrayDouble::ComputeIntegralOfSeg2IntoTri3 : ";
         double val,val2;
@@ -1166,7 +1166,7 @@ namespace MEDCoupling
         return ret;
       }
       
-      DataArrayDouble *symmetry3DPlane(PyObject *point, PyObject *normalVector) throw(INTERP_KERNEL::Exception)
+      DataArrayDouble *symmetry3DPlane(PyObject *point, PyObject *normalVector)
       {
         const char msg[]="Python wrap of DataArrayDouble::symmetry3DPlane : ";
         double val,val2;
@@ -1180,7 +1180,7 @@ namespace MEDCoupling
         return ret.retn();
       }
 
-      static PyObject *GiveBaseForPlane(PyObject *normalVector) throw(INTERP_KERNEL::Exception)
+      static PyObject *GiveBaseForPlane(PyObject *normalVector)
       {
         const char msg[]="Python wrap of DataArrayDouble::GiveBaseForPlane : ";
         double val,val2;
@@ -1207,7 +1207,7 @@ namespace MEDCoupling
         return self->fromCartToCylGiven(coords,centerPtr,vectorPtr);
       }
       
-      DataArrayDouble *renumber(PyObject *li) throw(INTERP_KERNEL::Exception)
+      DataArrayDouble *renumber(PyObject *li)
       {
         void *da=0;
         int res1=SWIG_ConvertPtr(li,&da,SWIGTYPE_p_MEDCoupling__DataArrayInt, 0 |  0 );
@@ -1236,7 +1236,7 @@ namespace MEDCoupling
           }
       }
 
-      DataArrayDouble *renumberR(PyObject *li) throw(INTERP_KERNEL::Exception)
+      DataArrayDouble *renumberR(PyObject *li)
       {
         void *da=0;
         int res1=SWIG_ConvertPtr(li,&da,SWIGTYPE_p_MEDCoupling__DataArrayInt, 0 |  0 );
@@ -1265,7 +1265,7 @@ namespace MEDCoupling
           }
       }
 
-      DataArrayDouble *renumberAndReduce(PyObject *li, int newNbOfTuple) throw(INTERP_KERNEL::Exception)
+      DataArrayDouble *renumberAndReduce(PyObject *li, int newNbOfTuple)
       {
         void *da=0;
         int res1=SWIG_ConvertPtr(li,&da,SWIGTYPE_p_MEDCoupling__DataArrayInt, 0 |  0 );
@@ -1294,7 +1294,7 @@ namespace MEDCoupling
           }
       }
 
-      PyObject *minimalDistanceTo(const DataArrayDouble *other) const throw(INTERP_KERNEL::Exception)
+      PyObject *minimalDistanceTo(const DataArrayDouble *other) const
       {
         int thisTupleId,otherTupleId;
         double r0=self->minimalDistanceTo(other,thisTupleId,otherTupleId);
@@ -1305,7 +1305,7 @@ namespace MEDCoupling
         return ret;
       }
 
-      PyObject *getMaxValue() const throw(INTERP_KERNEL::Exception)
+      PyObject *getMaxValue() const
       {
         int tmp;
         double r1=self->getMaxValue(tmp);
@@ -1315,7 +1315,7 @@ namespace MEDCoupling
         return ret;
       }
 
-         PyObject *getMaxAbsValue() const throw(INTERP_KERNEL::Exception)
+         PyObject *getMaxAbsValue() const
       {
         std::size_t tmp;
         double r1=self->getMaxAbsValue(tmp);
@@ -1325,7 +1325,7 @@ namespace MEDCoupling
         return ret;
       }
 
-      PyObject *getMaxValue2() const throw(INTERP_KERNEL::Exception)
+      PyObject *getMaxValue2() const
       {
         DataArrayInt *tmp;
         double r1=self->getMaxValue2(tmp);
@@ -1335,7 +1335,7 @@ namespace MEDCoupling
         return ret;
       }
 
-      PyObject *getMinValue() const throw(INTERP_KERNEL::Exception)
+      PyObject *getMinValue() const
       {
         int tmp;
         double r1=self->getMinValue(tmp);
@@ -1345,7 +1345,7 @@ namespace MEDCoupling
         return ret;
       }
 
-      PyObject *getMinValue2() const throw(INTERP_KERNEL::Exception)
+      PyObject *getMinValue2() const
       {
         DataArrayInt *tmp;
         double r1=self->getMinValue2(tmp);
@@ -1355,7 +1355,7 @@ namespace MEDCoupling
         return ret;
       }
 
-      PyObject *getMinMaxPerComponent() const throw(INTERP_KERNEL::Exception)
+      PyObject *getMinMaxPerComponent() const
       {
         int nbOfCompo(self->getNumberOfComponents());
         INTERP_KERNEL::AutoPtr<double> tmp(new double[2*nbOfCompo]);
@@ -1364,7 +1364,7 @@ namespace MEDCoupling
         return ret;
       }
       
-      PyObject *normMaxPerComponent() const throw(INTERP_KERNEL::Exception)
+      PyObject *normMaxPerComponent() const
       {
         int nbOfCompo(self->getNumberOfComponents());
         INTERP_KERNEL::AutoPtr<double> tmp(new double[nbOfCompo]);
@@ -1372,7 +1372,7 @@ namespace MEDCoupling
         return convertDblArrToPyList<double>(tmp,nbOfCompo);
       }
 
-      PyObject *accumulate() const throw(INTERP_KERNEL::Exception)
+      PyObject *accumulate() const
       {
         int sz=self->getNumberOfComponents();
         INTERP_KERNEL::AutoPtr<double> tmp=new double[sz];
@@ -1380,7 +1380,7 @@ namespace MEDCoupling
         return convertDblArrToPyList<double>(tmp,sz);
       }
 
-      DataArrayDouble *accumulatePerChunck(PyObject *indexArr) const throw(INTERP_KERNEL::Exception)
+      DataArrayDouble *accumulatePerChunck(PyObject *indexArr) const
       {
         int sw,sz,val;
         std::vector<int> val2;
@@ -1388,7 +1388,7 @@ namespace MEDCoupling
         return self->accumulatePerChunck(bg,bg+sz);
       }
 
-      PyObject *findCommonTuples(double prec, int limitNodeId=-1) const throw(INTERP_KERNEL::Exception)
+      PyObject *findCommonTuples(double prec, int limitNodeId=-1) const
       {
         DataArrayInt *comm, *commIndex;
         self->findCommonTuples(prec,limitNodeId,comm,commIndex);
@@ -1398,7 +1398,7 @@ namespace MEDCoupling
         return res;
       }
 
-      PyObject *distanceToTuple(PyObject *tuple) const throw(INTERP_KERNEL::Exception)
+      PyObject *distanceToTuple(PyObject *tuple) const
       {
         double val;
         DataArrayDouble *a;
@@ -1415,14 +1415,14 @@ namespace MEDCoupling
         return ret;
       }
 
-      void setSelectedComponents(const DataArrayDouble *a, PyObject *li) throw(INTERP_KERNEL::Exception)
+      void setSelectedComponents(const DataArrayDouble *a, PyObject *li)
       {
         std::vector<int> tmp;
         convertPyToNewIntArr3(li,tmp);
         self->setSelectedComponents(a,tmp);
       }
 
-      PyObject *explodeComponents() const throw(INTERP_KERNEL::Exception)
+      PyObject *explodeComponents() const
       {
         std::vector< MCAuto<DataArrayDouble> > retCpp(self->explodeComponents());
         std::size_t sz(retCpp.size());
@@ -1432,7 +1432,7 @@ namespace MEDCoupling
         return res;
       }
    
-      PyObject *getTuple(int tupleId) throw(INTERP_KERNEL::Exception)
+      PyObject *getTuple(int tupleId)
       {
         int sz=self->getNumberOfComponents();
         INTERP_KERNEL::AutoPtr<double> tmp=new double[sz];
@@ -1440,21 +1440,21 @@ namespace MEDCoupling
         return convertDblArrToPyList<double>(tmp,sz);
       }
 
-      static DataArrayDouble *Aggregate(PyObject *li) throw(INTERP_KERNEL::Exception)
+      static DataArrayDouble *Aggregate(PyObject *li)
       {
         std::vector<const DataArrayDouble *> tmp;
         convertFromPyObjVectorOfObj<const DataArrayDouble *>(li,SWIGTYPE_p_MEDCoupling__DataArrayDouble,"DataArrayDouble",tmp);
         return DataArrayDouble::Aggregate(tmp);
       }
 
-      static DataArrayDouble *Meld(PyObject *li) throw(INTERP_KERNEL::Exception)
+      static DataArrayDouble *Meld(PyObject *li)
       {
         std::vector<const DataArrayDouble *> tmp;
         convertFromPyObjVectorOfObj<const DataArrayDouble *>(li,SWIGTYPE_p_MEDCoupling__DataArrayDouble,"DataArrayDouble",tmp);
         return DataArrayDouble::Meld(tmp);
       }
 
-      PyObject *computeTupleIdsNearTuples(PyObject *pt, double eps) const throw(INTERP_KERNEL::Exception)
+      PyObject *computeTupleIdsNearTuples(PyObject *pt, double eps) const
       {
         double val;
         DataArrayDouble *a;
@@ -1464,7 +1464,7 @@ namespace MEDCoupling
         int nbComp=self->getNumberOfComponents(),nbTuples=-1;
         const char msg[]="Python wrap of DataArrayDouble::computeTupleIdsNearTuples : ";
         const double *pos=convertObjToPossibleCpp5_Safe2(pt,sw,val,a,aa,bb,msg,nbComp,true,nbTuples);
-        MCAuto<DataArrayDouble> inpu=DataArrayDouble::New(); inpu->useArray(pos,false,CPP_DEALLOC,nbTuples,nbComp);
+        MCAuto<DataArrayDouble> inpu=DataArrayDouble::New(); inpu->useArray(pos,false,DeallocType::CPP_DEALLOC,nbTuples,nbComp);
         DataArrayInt *c=0,*cI=0;
         self->computeTupleIdsNearTuples(inpu,eps,c,cI);
         PyObject *ret=PyTuple_New(2);
@@ -1473,7 +1473,7 @@ namespace MEDCoupling
         return ret;
       }
 
-      PyObject *areIncludedInMe(const DataArrayDouble *other, double prec) const throw(INTERP_KERNEL::Exception)
+      PyObject *areIncludedInMe(const DataArrayDouble *other, double prec) const
       {
         DataArrayInt *ret1=0;
         bool ret0=self->areIncludedInMe(other,prec,ret1);
@@ -1485,22 +1485,22 @@ namespace MEDCoupling
         return ret;
       }
 
-      PyObject *__getitem__(PyObject *obj) throw(INTERP_KERNEL::Exception)
+      PyObject *__getitem__(PyObject *obj)
       {
         return DataArrayT__getitem<double>(self,obj);
       }
 
-      DataArrayDouble *__setitem__(PyObject *obj, PyObject *value) throw(INTERP_KERNEL::Exception)
+      DataArrayDouble *__setitem__(PyObject *obj, PyObject *value)
       {
         return DataArrayT__setitem__<double>(self,obj,value);
       }
 
-      DataArrayDouble *__neg__() const throw(INTERP_KERNEL::Exception)
+      DataArrayDouble *__neg__() const
       {
         return self->negate();
       }
 
-      PyObject *__add__(PyObject *obj) throw(INTERP_KERNEL::Exception)
+      PyObject *__add__(PyObject *obj)
       {
         const char msg[]="Unexpected situation in DataArrayDouble.__add__ !";
         double val;
@@ -1546,7 +1546,7 @@ namespace MEDCoupling
             }
           case 4:
             {
-              MCAuto<DataArrayDouble> aaa=DataArrayDouble::New(); aaa->useArray(&bb[0],false,CPP_DEALLOC,1,(int)bb.size());
+              MCAuto<DataArrayDouble> aaa=DataArrayDouble::New(); aaa->useArray(&bb[0],false,DeallocType::CPP_DEALLOC,1,(int)bb.size());
               return SWIG_NewPointerObj(SWIG_as_voidptr(DataArrayDouble::Add(self,aaa)),SWIGTYPE_p_MEDCoupling__DataArrayDouble, SWIG_POINTER_OWN | 0 );
             }
           default:
@@ -1554,7 +1554,7 @@ namespace MEDCoupling
           }
       }
 
-      DataArrayDouble *__radd__(PyObject *obj) throw(INTERP_KERNEL::Exception)
+      DataArrayDouble *__radd__(PyObject *obj)
       {
         const char msg[]="Unexpected situation in __radd__ !";
         double val;
@@ -1578,7 +1578,7 @@ namespace MEDCoupling
             }
           case 4:
             {
-              MCAuto<DataArrayDouble> aaa=DataArrayDouble::New(); aaa->useArray(&bb[0],false,CPP_DEALLOC,1,(int)bb.size());
+              MCAuto<DataArrayDouble> aaa=DataArrayDouble::New(); aaa->useArray(&bb[0],false,DeallocType::CPP_DEALLOC,1,(int)bb.size());
               return DataArrayDouble::Add(self,aaa);
             }
           default:
@@ -1586,12 +1586,12 @@ namespace MEDCoupling
           }
       }
    
-      PyObject *___iadd___(PyObject *trueSelf, PyObject *obj) throw(INTERP_KERNEL::Exception)
+      PyObject *___iadd___(PyObject *trueSelf, PyObject *obj)
       {
         return DataArrayT_iadd<double>(trueSelf,obj,self);
       }
 
-      PyObject *__sub__(PyObject *obj) throw(INTERP_KERNEL::Exception)
+      PyObject *__sub__(PyObject *obj)
       {
         const char msg[]="Unexpected situation in __sub__ !";
         double val;
@@ -1637,7 +1637,7 @@ namespace MEDCoupling
             }
           case 4:
             {
-              MCAuto<DataArrayDouble> aaa=DataArrayDouble::New(); aaa->useArray(&bb[0],false,CPP_DEALLOC,1,(int)bb.size());
+              MCAuto<DataArrayDouble> aaa=DataArrayDouble::New(); aaa->useArray(&bb[0],false,DeallocType::CPP_DEALLOC,1,(int)bb.size());
               return SWIG_NewPointerObj(SWIG_as_voidptr(DataArrayDouble::Substract(self,aaa)),SWIGTYPE_p_MEDCoupling__DataArrayDouble, SWIG_POINTER_OWN | 0 );
             }
           default:
@@ -1645,7 +1645,7 @@ namespace MEDCoupling
           }
       }
 
-      DataArrayDouble *__rsub__(PyObject *obj) throw(INTERP_KERNEL::Exception)
+      DataArrayDouble *__rsub__(PyObject *obj)
       {
         const char msg[]="Unexpected situation in __rsub__ !";
         double val;
@@ -1669,7 +1669,7 @@ namespace MEDCoupling
             }
           case 4:
             {
-              MCAuto<DataArrayDouble> aaa=DataArrayDouble::New(); aaa->useArray(&bb[0],false,CPP_DEALLOC,1,(int)bb.size());
+              MCAuto<DataArrayDouble> aaa=DataArrayDouble::New(); aaa->useArray(&bb[0],false,DeallocType::CPP_DEALLOC,1,(int)bb.size());
               return DataArrayDouble::Substract(aaa,self);
             }
           default:
@@ -1677,12 +1677,12 @@ namespace MEDCoupling
           }
       }
 
-      PyObject *___isub___(PyObject *trueSelf, PyObject *obj) throw(INTERP_KERNEL::Exception)
+      PyObject *___isub___(PyObject *trueSelf, PyObject *obj)
       {
         return DataArrayT_isub<double>(trueSelf,obj,self);
       }
 
-      PyObject *__mul__(PyObject *obj) throw(INTERP_KERNEL::Exception)
+      PyObject *__mul__(PyObject *obj)
       {
         const char msg[]="Unexpected situation in __mul__ !";
         double val;
@@ -1728,7 +1728,7 @@ namespace MEDCoupling
             }
           case 4:
             {
-              MCAuto<DataArrayDouble> aaa=DataArrayDouble::New(); aaa->useArray(&bb[0],false,CPP_DEALLOC,1,(int)bb.size());
+              MCAuto<DataArrayDouble> aaa=DataArrayDouble::New(); aaa->useArray(&bb[0],false,DeallocType::CPP_DEALLOC,1,(int)bb.size());
               return SWIG_NewPointerObj(SWIG_as_voidptr(DataArrayDouble::Multiply(self,aaa)),SWIGTYPE_p_MEDCoupling__DataArrayDouble, SWIG_POINTER_OWN | 0 );
             }
           default:
@@ -1736,17 +1736,17 @@ namespace MEDCoupling
           }
       }
 
-      DataArrayDouble *__rmul__(PyObject *obj) throw(INTERP_KERNEL::Exception)
+      DataArrayDouble *__rmul__(PyObject *obj)
       {
         return DataArrayFPT_rmul<double>(self,obj);
       }
 
-      PyObject *___imul___(PyObject *trueSelf, PyObject *obj) throw(INTERP_KERNEL::Exception)
+      PyObject *___imul___(PyObject *trueSelf, PyObject *obj)
       {
         return DataArrayT_imul<double>(trueSelf,obj,self);
       }
 
-      PyObject *__div__(PyObject *obj) throw(INTERP_KERNEL::Exception)
+      PyObject *__div__(PyObject *obj)
       {
         const char msg[]="Unexpected situation in __div__ !";
         double val;
@@ -1794,7 +1794,7 @@ namespace MEDCoupling
             }
           case 4:
             {
-              MCAuto<DataArrayDouble> aaa=DataArrayDouble::New(); aaa->useArray(&bb[0],false,CPP_DEALLOC,1,(int)bb.size());
+              MCAuto<DataArrayDouble> aaa=DataArrayDouble::New(); aaa->useArray(&bb[0],false,DeallocType::CPP_DEALLOC,1,(int)bb.size());
               return SWIG_NewPointerObj(SWIG_as_voidptr(DataArrayDouble::Divide(self,aaa)),SWIGTYPE_p_MEDCoupling__DataArrayDouble, SWIG_POINTER_OWN | 0 );
             }
           default:
@@ -1802,7 +1802,7 @@ namespace MEDCoupling
           }
       }
 
-      DataArrayDouble *__rdiv__(PyObject *obj) throw(INTERP_KERNEL::Exception)
+      DataArrayDouble *__rdiv__(PyObject *obj)
       {
         const char msg[]="Unexpected situation in __rdiv__ !";
         double val;
@@ -1826,7 +1826,7 @@ namespace MEDCoupling
             }
           case 4:
             {
-              MCAuto<DataArrayDouble> aaa=DataArrayDouble::New(); aaa->useArray(&bb[0],false,CPP_DEALLOC,1,(int)bb.size());
+              MCAuto<DataArrayDouble> aaa=DataArrayDouble::New(); aaa->useArray(&bb[0],false,DeallocType::CPP_DEALLOC,1,(int)bb.size());
               return DataArrayDouble::Divide(aaa,self);
             }
           default:
@@ -1834,12 +1834,12 @@ namespace MEDCoupling
           }
       }
 
-      PyObject *___idiv___(PyObject *trueSelf, PyObject *obj) throw(INTERP_KERNEL::Exception)
+      PyObject *___idiv___(PyObject *trueSelf, PyObject *obj)
       {
         return DataArrayT_idiv<double>(trueSelf,obj,self);
       }
    
-      DataArrayDouble *__pow__(PyObject *obj) throw(INTERP_KERNEL::Exception)
+      DataArrayDouble *__pow__(PyObject *obj)
       {
         const char msg[]="Unexpected situation in __pow__ !";
         double val;
@@ -1867,7 +1867,7 @@ namespace MEDCoupling
             }
           case 4:
             {
-              MCAuto<DataArrayDouble> aaa=DataArrayDouble::New(); aaa->useArray(&bb[0],false,CPP_DEALLOC,1,(int)bb.size());
+              MCAuto<DataArrayDouble> aaa=DataArrayDouble::New(); aaa->useArray(&bb[0],false,DeallocType::CPP_DEALLOC,1,(int)bb.size());
               return DataArrayDouble::Pow(self,aaa);
             }
           default:
@@ -1875,7 +1875,7 @@ namespace MEDCoupling
           }
       }
 
-      DataArrayDouble *__rpow__(PyObject *obj) throw(INTERP_KERNEL::Exception)
+      DataArrayDouble *__rpow__(PyObject *obj)
       {
         const char msg[]="Unexpected situation in __rpow__ !";
         double val;
@@ -1899,7 +1899,7 @@ namespace MEDCoupling
             }
           case 4:
             {
-              MCAuto<DataArrayDouble> aaa=DataArrayDouble::New(); aaa->useArray(&bb[0],false,CPP_DEALLOC,1,(int)bb.size());
+              MCAuto<DataArrayDouble> aaa=DataArrayDouble::New(); aaa->useArray(&bb[0],false,DeallocType::CPP_DEALLOC,1,(int)bb.size());
               return DataArrayDouble::Pow(aaa,self);
             }
           default:
@@ -1907,7 +1907,7 @@ namespace MEDCoupling
           }
       }
 
-      PyObject *___ipow___(PyObject *trueSelf, PyObject *obj) throw(INTERP_KERNEL::Exception)
+      PyObject *___ipow___(PyObject *trueSelf, PyObject *obj)
       {
         const char msg[]="Unexpected situation in __ipow__ !";
         double val;
@@ -1939,7 +1939,7 @@ namespace MEDCoupling
             }
           case 4:
             {
-              MCAuto<DataArrayDouble> aaa=DataArrayDouble::New(); aaa->useArray(&bb[0],false,CPP_DEALLOC,1,(int)bb.size());
+              MCAuto<DataArrayDouble> aaa=DataArrayDouble::New(); aaa->useArray(&bb[0],false,DeallocType::CPP_DEALLOC,1,(int)bb.size());
               self->powEqual(aaa);
               Py_XINCREF(trueSelf);
               return trueSelf;
@@ -1960,7 +1960,7 @@ namespace MEDCoupling
         return ret;
       }
 
-      PyObject *maxPerTupleWithCompoId() const throw(INTERP_KERNEL::Exception)
+      PyObject *maxPerTupleWithCompoId() const
       {
         DataArrayInt *ret1=0;
         DataArrayDouble *ret0=self->maxPerTupleWithCompoId(ret1);
@@ -1998,26 +1998,26 @@ namespace MEDCoupling
   class DataArrayDoubleTuple
   {
   public:
-    int getNumberOfCompo() const throw(INTERP_KERNEL::Exception);
-    DataArrayDouble *buildDADouble(int nbOfTuples, int nbOfCompo) const throw(INTERP_KERNEL::Exception);
+    int getNumberOfCompo() const;
+    DataArrayDouble *buildDADouble(int nbOfTuples, int nbOfCompo) const;
     %extend
     {
-      std::string __str__() const throw(INTERP_KERNEL::Exception)
+      std::string __str__() const
       {
         return self->repr();
       }
 
-      double __float__() const throw(INTERP_KERNEL::Exception)
+      double __float__() const
       {
         return self->doubleValue();
       }
 
-      DataArrayDouble *buildDADouble() throw(INTERP_KERNEL::Exception)
+      DataArrayDouble *buildDADouble()
       {
         return self->buildDADouble(1,self->getNumberOfCompo());
       }
 
-      PyObject *___iadd___(PyObject *trueSelf, PyObject *obj) throw(INTERP_KERNEL::Exception)
+      PyObject *___iadd___(PyObject *trueSelf, PyObject *obj)
       {
         MCAuto<DataArrayDouble> ret=self->buildDADouble(1,self->getNumberOfCompo());
         MEDCoupling_DataArrayDouble____iadd___(ret,0,obj);
@@ -2025,7 +2025,7 @@ namespace MEDCoupling
         return trueSelf;
       }
   
-      PyObject *___isub___(PyObject *trueSelf, PyObject *obj) throw(INTERP_KERNEL::Exception)
+      PyObject *___isub___(PyObject *trueSelf, PyObject *obj)
       {
         MCAuto<DataArrayDouble> ret=self->buildDADouble(1,self->getNumberOfCompo());
         MEDCoupling_DataArrayDouble____isub___(ret,0,obj);
@@ -2033,7 +2033,7 @@ namespace MEDCoupling
         return trueSelf;
       }
   
-      PyObject *___imul___(PyObject *trueSelf, PyObject *obj) throw(INTERP_KERNEL::Exception)
+      PyObject *___imul___(PyObject *trueSelf, PyObject *obj)
       {
         MCAuto<DataArrayDouble> ret=self->buildDADouble(1,self->getNumberOfCompo());
         MEDCoupling_DataArrayDouble____imul___(ret,0,obj);
@@ -2041,7 +2041,7 @@ namespace MEDCoupling
         return trueSelf;
       }
 
-      PyObject *___idiv___(PyObject *trueSelf, PyObject *obj) throw(INTERP_KERNEL::Exception)
+      PyObject *___idiv___(PyObject *trueSelf, PyObject *obj)
       {
         MCAuto<DataArrayDouble> ret=self->buildDADouble(1,self->getNumberOfCompo());
         MEDCoupling_DataArrayDouble____idiv___(ret,0,obj);
@@ -2049,12 +2049,12 @@ namespace MEDCoupling
         return trueSelf;
       }
 
-      PyObject *__len__() throw(INTERP_KERNEL::Exception)
+      PyObject *__len__()
       {
         return PyInt_FromLong(self->getNumberOfCompo());
       }
 
-      PyObject *__getitem__(PyObject *obj) throw(INTERP_KERNEL::Exception)
+      PyObject *__getitem__(PyObject *obj)
       {
         const char msg2[]="DataArrayDoubleTuple::__getitem__ : Mismatch of slice values in 2nd parameter (components) !";
         int sw;
@@ -2119,7 +2119,7 @@ namespace MEDCoupling
           }
       }
 
-      DataArrayDoubleTuple *__setitem__(PyObject *obj, PyObject *value) throw(INTERP_KERNEL::Exception)
+      DataArrayDoubleTuple *__setitem__(PyObject *obj, PyObject *value)
       {
         const char msg[]="DataArrayDoubleTuple::__setitem__ : unrecognized type entered, int, slice, list<int>, tuple<int> !";
         const char msg2[]="DataArrayDoubleTuple::__setitem__ : Mismatch of slice values in 2nd parameter (components) !";
@@ -2280,150 +2280,150 @@ namespace MEDCoupling
   {
   public:
     static DataArrayInt *New();
-    int intValue() const throw(INTERP_KERNEL::Exception);
-    int getHashCode() const throw(INTERP_KERNEL::Exception);
-    bool empty() const throw(INTERP_KERNEL::Exception);
-    void aggregate(const DataArrayInt *other) throw(INTERP_KERNEL::Exception);
-    DataArrayInt *performCopyOrIncrRef(bool deepCopy) const throw(INTERP_KERNEL::Exception);
-    void deepCopyFrom(const DataArrayInt& other) throw(INTERP_KERNEL::Exception);
-    void reserve(std::size_t nbOfElems) throw(INTERP_KERNEL::Exception);
-    void pushBackSilent(int val) throw(INTERP_KERNEL::Exception);
-    int popBackSilent() throw(INTERP_KERNEL::Exception);
-    void pack() const throw(INTERP_KERNEL::Exception);
-    void allocIfNecessary(int nbOfTuple, int nbOfCompo) throw(INTERP_KERNEL::Exception);
-    bool isEqual(const DataArrayInt& other) const throw(INTERP_KERNEL::Exception);
-    bool isEqualWithoutConsideringStr(const DataArrayInt& other) const throw(INTERP_KERNEL::Exception);
-    bool isEqualWithoutConsideringStrAndOrder(const DataArrayInt& other) const throw(INTERP_KERNEL::Exception);
-    DataArrayInt *buildPermutationArr(const DataArrayInt& other) const throw(INTERP_KERNEL::Exception);
-    DataArrayInt *sumPerTuple() const throw(INTERP_KERNEL::Exception);
-    void sort(bool asc=true) throw(INTERP_KERNEL::Exception);
-    void reverse() throw(INTERP_KERNEL::Exception);
-    void checkMonotonic(bool increasing) const throw(INTERP_KERNEL::Exception);
-    bool isMonotonic(bool increasing) const throw(INTERP_KERNEL::Exception);
-    void checkStrictlyMonotonic(bool increasing) const throw(INTERP_KERNEL::Exception);
-    bool isStrictlyMonotonic(bool increasing) const throw(INTERP_KERNEL::Exception);
-    void fillWithZero() throw(INTERP_KERNEL::Exception);
-    void fillWithValue(int val) throw(INTERP_KERNEL::Exception);
-    void iota(int init=0) throw(INTERP_KERNEL::Exception);
-    std::string repr() const throw(INTERP_KERNEL::Exception);
-    std::string reprZip() const throw(INTERP_KERNEL::Exception);
-    std::string reprNotTooLong() const throw(INTERP_KERNEL::Exception);
-    DataArrayInt *invertArrayO2N2N2O(int newNbOfElem) const throw(INTERP_KERNEL::Exception);
-    DataArrayInt *invertArrayN2O2O2N(int oldNbOfElem) const throw(INTERP_KERNEL::Exception);
-    DataArrayInt *invertArrayO2N2N2OBis(int newNbOfElem) const throw(INTERP_KERNEL::Exception);
-    MCAuto< MapII > invertArrayN2O2O2NOptimized() const throw(INTERP_KERNEL::Exception);
-    MCAuto< MapII > giveN2OOptimized() const throw(INTERP_KERNEL::Exception);
-    DataArrayInt *indicesOfSubPart(const DataArrayInt& partOfThis) const throw(INTERP_KERNEL::Exception);
-    DataArrayInt *fromNoInterlace() const throw(INTERP_KERNEL::Exception);
-    DataArrayInt *toNoInterlace() const throw(INTERP_KERNEL::Exception);
-    DataArrayInt *selectByTupleIdSafeSlice(int bg, int end, int step) const throw(INTERP_KERNEL::Exception);
-    DataArrayInt *checkAndPreparePermutation() const throw(INTERP_KERNEL::Exception);
-    DataArrayInt *buildPermArrPerLevel() const throw(INTERP_KERNEL::Exception);
-    bool isIota(int sizeExpected) const throw(INTERP_KERNEL::Exception);
-    bool isUniform(int val) const throw(INTERP_KERNEL::Exception);
-    int checkUniformAndGuess() const throw(INTERP_KERNEL::Exception);
-    bool hasUniqueValues() const throw(INTERP_KERNEL::Exception);
-    DataArrayInt *subArray(int tupleIdBg, int tupleIdEnd=-1) const throw(INTERP_KERNEL::Exception);
-    void transpose() throw(INTERP_KERNEL::Exception);
-    DataArrayInt *changeNbOfComponents(int newNbOfComp, int dftValue) const throw(INTERP_KERNEL::Exception);
-    void meldWith(const DataArrayInt *other) throw(INTERP_KERNEL::Exception);
-    void setPartOfValues1(const DataArrayInt *a, int bgTuples, int endTuples, int stepTuples, int bgComp, int endComp, int stepComp, bool strictCompoCompare=true) throw(INTERP_KERNEL::Exception);
-    void setPartOfValuesSimple1(int a, int bgTuples, int endTuples, int stepTuples, int bgComp, int endComp, int stepComp) throw(INTERP_KERNEL::Exception);
-    void setPartOfValuesAdv(const DataArrayInt *a, const DataArrayInt *tuplesSelec) throw(INTERP_KERNEL::Exception);
-    void getTuple(int tupleId, int *res) const throw(INTERP_KERNEL::Exception);
-    int getIJ(int tupleId, int compoId) const throw(INTERP_KERNEL::Exception);
-    int getIJSafe(int tupleId, int compoId) const throw(INTERP_KERNEL::Exception);
-    int front() const throw(INTERP_KERNEL::Exception);
-    int back() const throw(INTERP_KERNEL::Exception);
-    void setIJ(int tupleId, int compoId, int newVal) throw(INTERP_KERNEL::Exception);
-    void setIJSilent(int tupleId, int compoId, int newVal) throw(INTERP_KERNEL::Exception);
-    int *getPointer() throw(INTERP_KERNEL::Exception);
-    const int *getConstPointer() const throw(INTERP_KERNEL::Exception);
-    DataArrayIntIterator *iterator() throw(INTERP_KERNEL::Exception);
-    const int *begin() const throw(INTERP_KERNEL::Exception);
-    const int *end() const throw(INTERP_KERNEL::Exception);
-    DataArrayInt *findIdsEqual(int val) const throw(INTERP_KERNEL::Exception);
-    DataArrayInt *findIdsNotEqual(int val) const throw(INTERP_KERNEL::Exception);
-    int changeValue(int oldValue, int newValue) throw(INTERP_KERNEL::Exception);
-    int findIdFirstEqualTuple(const std::vector<int>& tupl) const throw(INTERP_KERNEL::Exception);
-    int findIdFirstEqual(int value) const throw(INTERP_KERNEL::Exception);
-    int findIdFirstEqual(const std::vector<int>& vals) const throw(INTERP_KERNEL::Exception);
-    int findIdSequence(const std::vector<int>& vals) const throw(INTERP_KERNEL::Exception);
-    bool presenceOfTuple(const std::vector<int>& tupl) const throw(INTERP_KERNEL::Exception);
-    bool presenceOfValue(int value) const throw(INTERP_KERNEL::Exception);
-    bool presenceOfValue(const std::vector<int>& vals) const throw(INTERP_KERNEL::Exception);
-    int count(int value) const throw(INTERP_KERNEL::Exception);
-    int accumulate(int compId) const throw(INTERP_KERNEL::Exception);
-    int getMaxValueInArray() const throw(INTERP_KERNEL::Exception);
-    int getMaxAbsValueInArray() const throw(INTERP_KERNEL::Exception);
-    int getMinValueInArray() const throw(INTERP_KERNEL::Exception);
-    void abs() throw(INTERP_KERNEL::Exception);
-    DataArrayInt *computeAbs() const throw(INTERP_KERNEL::Exception);
-    void applyLin(int a, int b, int compoId) throw(INTERP_KERNEL::Exception);
-    void applyLin(int a, int b) throw(INTERP_KERNEL::Exception);
-    void applyInv(int numerator) throw(INTERP_KERNEL::Exception);
-    DataArrayInt *negate() const throw(INTERP_KERNEL::Exception);
-    void applyDivideBy(int val) throw(INTERP_KERNEL::Exception);
-    void applyModulus(int val) throw(INTERP_KERNEL::Exception);
-    void applyRModulus(int val) throw(INTERP_KERNEL::Exception);
-    void applyPow(int val) throw(INTERP_KERNEL::Exception);
-    void applyRPow(int val) throw(INTERP_KERNEL::Exception);
-    DataArrayInt *findIdsInRange(int vmin, int vmax) const throw(INTERP_KERNEL::Exception);
-    DataArrayInt *findIdsNotInRange(int vmin, int vmax) const throw(INTERP_KERNEL::Exception);
-    DataArrayInt *findIdsStrictlyNegative() const throw(INTERP_KERNEL::Exception);
-    bool checkAllIdsInRange(int vmin, int vmax) const throw(INTERP_KERNEL::Exception);
-    static DataArrayInt *Aggregate(const DataArrayInt *a1, const DataArrayInt *a2, int offsetA2) throw(INTERP_KERNEL::Exception);
-    static DataArrayInt *Meld(const DataArrayInt *a1, const DataArrayInt *a2) throw(INTERP_KERNEL::Exception);
-    static DataArrayInt *MakePartition(const std::vector<const DataArrayInt *>& groups, int newNb, std::vector< std::vector<int> >& fidsOfGroups) throw(INTERP_KERNEL::Exception);
-    static DataArrayInt *BuildUnion(const std::vector<const DataArrayInt *>& arr) throw(INTERP_KERNEL::Exception);
-    static DataArrayInt *BuildIntersection(const std::vector<const DataArrayInt *>& arr) throw(INTERP_KERNEL::Exception);
-    static DataArrayInt *FindPermutationFromFirstToSecond(const DataArrayInt *ids1, const DataArrayInt *ids2) throw(INTERP_KERNEL::Exception);
-    DataArrayInt *buildComplement(int nbOfElement) const throw(INTERP_KERNEL::Exception);
-    DataArrayInt *buildSubstraction(const DataArrayInt *other) const throw(INTERP_KERNEL::Exception);
-    DataArrayInt *buildSubstractionOptimized(const DataArrayInt *other) const throw(INTERP_KERNEL::Exception);
-    DataArrayInt *buildUnion(const DataArrayInt *other) const throw(INTERP_KERNEL::Exception);
-    DataArrayInt *buildIntersection(const DataArrayInt *other) const throw(INTERP_KERNEL::Exception);
-    DataArrayInt *buildUnique() const throw(INTERP_KERNEL::Exception);
-    DataArrayInt *buildUniqueNotSorted() const throw(INTERP_KERNEL::Exception);
-    DataArrayInt *deltaShiftIndex() const throw(INTERP_KERNEL::Exception);
-    void computeOffsets() throw(INTERP_KERNEL::Exception);
-    void computeOffsetsFull() throw(INTERP_KERNEL::Exception);
-    DataArrayInt *buildExplicitArrByRanges(const DataArrayInt *offsets) const throw(INTERP_KERNEL::Exception);
-    DataArrayInt *findRangeIdForEachTuple(const DataArrayInt *ranges) const throw(INTERP_KERNEL::Exception);
-    DataArrayInt *findIdInRangeForEachTuple(const DataArrayInt *ranges) const throw(INTERP_KERNEL::Exception);
-    void sortEachPairToMakeALinkedList() throw(INTERP_KERNEL::Exception);
-    DataArrayInt *duplicateEachTupleNTimes(int nbTimes) const throw(INTERP_KERNEL::Exception);
-    DataArrayInt *getDifferentValues() const throw(INTERP_KERNEL::Exception);
-    static DataArrayInt *Add(const DataArrayInt *a1, const DataArrayInt *a2) throw(INTERP_KERNEL::Exception);
-    void addEqual(const DataArrayInt *other) throw(INTERP_KERNEL::Exception);
-    static DataArrayInt *Substract(const DataArrayInt *a1, const DataArrayInt *a2) throw(INTERP_KERNEL::Exception);
-    void substractEqual(const DataArrayInt *other) throw(INTERP_KERNEL::Exception);
-    static DataArrayInt *Multiply(const DataArrayInt *a1, const DataArrayInt *a2) throw(INTERP_KERNEL::Exception);
-    void multiplyEqual(const DataArrayInt *other) throw(INTERP_KERNEL::Exception);
-    static DataArrayInt *Divide(const DataArrayInt *a1, const DataArrayInt *a2) throw(INTERP_KERNEL::Exception);
-    void divideEqual(const DataArrayInt *other) throw(INTERP_KERNEL::Exception);
-    static DataArrayInt *Modulus(const DataArrayInt *a1, const DataArrayInt *a2) throw(INTERP_KERNEL::Exception);
-    void modulusEqual(const DataArrayInt *other) throw(INTERP_KERNEL::Exception);
-    static DataArrayInt *Pow(const DataArrayInt *a1, const DataArrayInt *a2) throw(INTERP_KERNEL::Exception);
-    void powEqual(const DataArrayInt *other) throw(INTERP_KERNEL::Exception);
-    MCAuto<DataArrayInt> fromLinkedListOfPairToList() const throw(INTERP_KERNEL::Exception);
-    MCAuto<DataArrayInt> findIdsGreaterOrEqualTo(int val) const throw(INTERP_KERNEL::Exception);
-    MCAuto<DataArrayInt> findIdsGreaterThan(int val) const throw(INTERP_KERNEL::Exception);
-    MCAuto<DataArrayInt> findIdsLowerOrEqualTo(int val) const throw(INTERP_KERNEL::Exception);
-    MCAuto<DataArrayInt> findIdsLowerThan(int val) const throw(INTERP_KERNEL::Exception);
-    MCAuto<DataArrayInt> selectPartDef(const PartDefinition* pd) const throw(INTERP_KERNEL::Exception);
-    MCAuto<DataArrayDouble> convertToDblArr() const throw(INTERP_KERNEL::Exception);
-    MCAuto<DataArrayFloat> convertToFloatArr() const throw(INTERP_KERNEL::Exception);
+    int intValue() const;
+    int getHashCode() const;
+    bool empty() const;
+    void aggregate(const DataArrayInt *other);
+    DataArrayInt *performCopyOrIncrRef(bool deepCopy) const;
+    void deepCopyFrom(const DataArrayInt& other);
+    void reserve(std::size_t nbOfElems);
+    void pushBackSilent(int val);
+    int popBackSilent();
+    void pack() const;
+    void allocIfNecessary(int nbOfTuple, int nbOfCompo);
+    bool isEqual(const DataArrayInt& other) const;
+    bool isEqualWithoutConsideringStr(const DataArrayInt& other) const;
+    bool isEqualWithoutConsideringStrAndOrder(const DataArrayInt& other) const;
+    DataArrayInt *buildPermutationArr(const DataArrayInt& other) const;
+    DataArrayInt *sumPerTuple() const;
+    void sort(bool asc=true);
+    void reverse();
+    void checkMonotonic(bool increasing) const;
+    bool isMonotonic(bool increasing) const;
+    void checkStrictlyMonotonic(bool increasing) const;
+    bool isStrictlyMonotonic(bool increasing) const;
+    void fillWithZero();
+    void fillWithValue(int val);
+    void iota(int init=0);
+    std::string repr() const;
+    std::string reprZip() const;
+    std::string reprNotTooLong() const;
+    DataArrayInt *invertArrayO2N2N2O(int newNbOfElem) const;
+    DataArrayInt *invertArrayN2O2O2N(int oldNbOfElem) const;
+    DataArrayInt *invertArrayO2N2N2OBis(int newNbOfElem) const;
+    MCAuto< MapII > invertArrayN2O2O2NOptimized() const;
+    MCAuto< MapII > giveN2OOptimized() const;
+    DataArrayInt *indicesOfSubPart(const DataArrayInt& partOfThis) const;
+    DataArrayInt *fromNoInterlace() const;
+    DataArrayInt *toNoInterlace() const;
+    DataArrayInt *selectByTupleIdSafeSlice(int bg, int end, int step) const;
+    DataArrayInt *checkAndPreparePermutation() const;
+    DataArrayInt *buildPermArrPerLevel() const;
+    bool isIota(int sizeExpected) const;
+    bool isUniform(int val) const;
+    int checkUniformAndGuess() const;
+    bool hasUniqueValues() const;
+    DataArrayInt *subArray(int tupleIdBg, int tupleIdEnd=-1) const;
+    void transpose();
+    DataArrayInt *changeNbOfComponents(int newNbOfComp, int dftValue) const;
+    void meldWith(const DataArrayInt *other);
+    void setPartOfValues1(const DataArrayInt *a, int bgTuples, int endTuples, int stepTuples, int bgComp, int endComp, int stepComp, bool strictCompoCompare=true);
+    void setPartOfValuesSimple1(int a, int bgTuples, int endTuples, int stepTuples, int bgComp, int endComp, int stepComp);
+    void setPartOfValuesAdv(const DataArrayInt *a, const DataArrayInt *tuplesSelec);
+    void getTuple(int tupleId, int *res) const;
+    int getIJ(int tupleId, int compoId) const;
+    int getIJSafe(int tupleId, int compoId) const;
+    int front() const;
+    int back() const;
+    void setIJ(int tupleId, int compoId, int newVal);
+    void setIJSilent(int tupleId, int compoId, int newVal);
+    int *getPointer();
+    const int *getConstPointer() const;
+    DataArrayIntIterator *iterator();
+    const int *begin() const;
+    const int *end() const;
+    DataArrayInt *findIdsEqual(int val) const;
+    DataArrayInt *findIdsNotEqual(int val) const;
+    int changeValue(int oldValue, int newValue);
+    int findIdFirstEqualTuple(const std::vector<int>& tupl) const;
+    int findIdFirstEqual(int value) const;
+    int findIdFirstEqual(const std::vector<int>& vals) const;
+    int findIdSequence(const std::vector<int>& vals) const;
+    bool presenceOfTuple(const std::vector<int>& tupl) const;
+    bool presenceOfValue(int value) const;
+    bool presenceOfValue(const std::vector<int>& vals) const;
+    int count(int value) const;
+    int accumulate(int compId) const;
+    int getMaxValueInArray() const;
+    int getMaxAbsValueInArray() const;
+    int getMinValueInArray() const;
+    void abs();
+    DataArrayInt *computeAbs() const;
+    void applyLin(int a, int b, int compoId);
+    void applyLin(int a, int b);
+    void applyInv(int numerator);
+    DataArrayInt *negate() const;
+    void applyDivideBy(int val);
+    void applyModulus(int val);
+    void applyRModulus(int val);
+    void applyPow(int val);
+    void applyRPow(int val);
+    DataArrayInt *findIdsInRange(int vmin, int vmax) const;
+    DataArrayInt *findIdsNotInRange(int vmin, int vmax) const;
+    DataArrayInt *findIdsStrictlyNegative() const;
+    bool checkAllIdsInRange(int vmin, int vmax) const;
+    static DataArrayInt *Aggregate(const DataArrayInt *a1, const DataArrayInt *a2, int offsetA2);
+    static DataArrayInt *Meld(const DataArrayInt *a1, const DataArrayInt *a2);
+    static DataArrayInt *MakePartition(const std::vector<const DataArrayInt *>& groups, int newNb, std::vector< std::vector<int> >& fidsOfGroups);
+    static DataArrayInt *BuildUnion(const std::vector<const DataArrayInt *>& arr);
+    static DataArrayInt *BuildIntersection(const std::vector<const DataArrayInt *>& arr);
+    static DataArrayInt *FindPermutationFromFirstToSecond(const DataArrayInt *ids1, const DataArrayInt *ids2);
+    DataArrayInt *buildComplement(int nbOfElement) const;
+    DataArrayInt *buildSubstraction(const DataArrayInt *other) const;
+    DataArrayInt *buildSubstractionOptimized(const DataArrayInt *other) const;
+    DataArrayInt *buildUnion(const DataArrayInt *other) const;
+    DataArrayInt *buildIntersection(const DataArrayInt *other) const;
+    DataArrayInt *buildUnique() const;
+    DataArrayInt *buildUniqueNotSorted() const;
+    DataArrayInt *deltaShiftIndex() const;
+    void computeOffsets();
+    void computeOffsetsFull();
+    DataArrayInt *buildExplicitArrByRanges(const DataArrayInt *offsets) const;
+    DataArrayInt *findRangeIdForEachTuple(const DataArrayInt *ranges) const;
+    DataArrayInt *findIdInRangeForEachTuple(const DataArrayInt *ranges) const;
+    void sortEachPairToMakeALinkedList();
+    DataArrayInt *duplicateEachTupleNTimes(int nbTimes) const;
+    DataArrayInt *getDifferentValues() const;
+    static DataArrayInt *Add(const DataArrayInt *a1, const DataArrayInt *a2);
+    void addEqual(const DataArrayInt *other);
+    static DataArrayInt *Substract(const DataArrayInt *a1, const DataArrayInt *a2);
+    void substractEqual(const DataArrayInt *other);
+    static DataArrayInt *Multiply(const DataArrayInt *a1, const DataArrayInt *a2);
+    void multiplyEqual(const DataArrayInt *other);
+    static DataArrayInt *Divide(const DataArrayInt *a1, const DataArrayInt *a2);
+    void divideEqual(const DataArrayInt *other);
+    static DataArrayInt *Modulus(const DataArrayInt *a1, const DataArrayInt *a2);
+    void modulusEqual(const DataArrayInt *other);
+    static DataArrayInt *Pow(const DataArrayInt *a1, const DataArrayInt *a2);
+    void powEqual(const DataArrayInt *other);
+    MCAuto<DataArrayInt> fromLinkedListOfPairToList() const;
+    MCAuto<DataArrayInt> findIdsGreaterOrEqualTo(int val) const;
+    MCAuto<DataArrayInt> findIdsGreaterThan(int val) const;
+    MCAuto<DataArrayInt> findIdsLowerOrEqualTo(int val) const;
+    MCAuto<DataArrayInt> findIdsLowerThan(int val) const;
+    MCAuto<DataArrayInt> selectPartDef(const PartDefinition* pd) const;
+    MCAuto<DataArrayDouble> convertToDblArr() const;
+    MCAuto<DataArrayFloat> convertToFloatArr() const;
   public:
-    static DataArrayInt *Range(int begin, int end, int step) throw(INTERP_KERNEL::Exception);
+    static DataArrayInt *Range(int begin, int end, int step);
     %extend
     {
-      DataArrayInt() throw(INTERP_KERNEL::Exception)
+      DataArrayInt()
         {
           return DataArrayInt::New();
         }
 
-      static DataArrayInt *New(PyObject *elt0, PyObject *nbOfTuples=0, PyObject *nbOfComp=0) throw(INTERP_KERNEL::Exception)
+      static DataArrayInt *New(PyObject *elt0, PyObject *nbOfTuples=0, PyObject *nbOfComp=0)
       {
         const char *msgBase="MEDCoupling::DataArrayInt::New : Available API are : \n-DataArrayInt.New()\n-DataArrayInt.New([1,3,4])\n-DataArrayInt.New([1,3,4],3)\n-DataArrayInt.New([1,3,4,5],2,2)\n-DataArrayInt.New([1,3,4,5,7,8],3,2)\n-DataArrayInt.New([(1,3),(4,5),(7,8)])\n-DataArrayInt.New(5)\n-DataArrayInt.New(5,2)";
         std::string msg(msgBase);
@@ -2518,17 +2518,17 @@ namespace MEDCoupling
         throw INTERP_KERNEL::Exception(msg.c_str());//to make g++ happy
       }
 
-      DataArrayInt(PyObject *elt0, PyObject *nbOfTuples=0, PyObject *nbOfComp=0) throw(INTERP_KERNEL::Exception)
+      DataArrayInt(PyObject *elt0, PyObject *nbOfTuples=0, PyObject *nbOfComp=0)
         {
           return MEDCoupling_DataArrayInt_New__SWIG_1(elt0,nbOfTuples,nbOfComp);
         }
       
-      std::string __str__() const throw(INTERP_KERNEL::Exception)
+      std::string __str__() const
       {
         return self->reprNotTooLong();
       }
 
-      int __len__() const throw(INTERP_KERNEL::Exception)
+      int __len__() const
       {
         if(self->isAllocated())
           {
@@ -2540,17 +2540,17 @@ namespace MEDCoupling
           }
       }
 
-      int __int__() const throw(INTERP_KERNEL::Exception)
+      int __int__() const
       {
         return self->intValue();
       }
 
-      DataArrayIntIterator *__iter__() throw(INTERP_KERNEL::Exception)
+      DataArrayIntIterator *__iter__()
       {
         return self->iterator();
       }
    
-      PyObject *accumulate() const throw(INTERP_KERNEL::Exception)
+      PyObject *accumulate() const
       {
         int sz=self->getNumberOfComponents();
         INTERP_KERNEL::AutoPtr<int> tmp=new int[sz];
@@ -2558,7 +2558,7 @@ namespace MEDCoupling
         return convertIntArrToPyList(tmp,sz);
       }
 
-      DataArrayInt *accumulatePerChunck(PyObject *indexArr) const throw(INTERP_KERNEL::Exception)
+      DataArrayInt *accumulatePerChunck(PyObject *indexArr) const
       {
         int sw,sz,val;
         std::vector<int> val2;
@@ -2566,7 +2566,7 @@ namespace MEDCoupling
         return self->accumulatePerChunck(bg,bg+sz);
       }
 
-      DataArrayInt *findIdsEqualTuple(PyObject *inputTuple) const throw(INTERP_KERNEL::Exception)
+      DataArrayInt *findIdsEqualTuple(PyObject *inputTuple) const
       {
         int sw,sz,val;
         std::vector<int> val2;
@@ -2574,7 +2574,7 @@ namespace MEDCoupling
         return self->findIdsEqualTuple(bg,bg+sz);
       }
 
-      DataArrayInt *findIdForEach(PyObject *vals) const throw(INTERP_KERNEL::Exception)
+      DataArrayInt *findIdForEach(PyObject *vals) const
       {
         int sw,sz,val;
         std::vector<int> val2;
@@ -2583,7 +2583,7 @@ namespace MEDCoupling
         return ret.retn();
       }
 
-      PyObject *splitInBalancedSlices(int nbOfSlices) const throw(INTERP_KERNEL::Exception)
+      PyObject *splitInBalancedSlices(int nbOfSlices) const
       {
         std::vector< std::pair<int,int> > slcs(self->splitInBalancedSlices(nbOfSlices));
         PyObject *ret=PyList_New(slcs.size());
@@ -2592,7 +2592,7 @@ namespace MEDCoupling
         return ret;
       }
 
-      DataArrayInt *buildExplicitArrOfSliceOnScaledArr(PyObject *slic) const throw(INTERP_KERNEL::Exception)
+      DataArrayInt *buildExplicitArrOfSliceOnScaledArr(PyObject *slic) const
       {
         if(!PySlice_Check(slic))
           throw INTERP_KERNEL::Exception("DataArrayInt::buildExplicitArrOfSliceOnScaledArr (wrap) : expecting a pyslice as second (first) parameter !");
@@ -2603,7 +2603,7 @@ namespace MEDCoupling
         return self->buildExplicitArrOfSliceOnScaledArr(strt,stp,step);
       }
 
-      PyObject *getMinMaxValues() const throw(INTERP_KERNEL::Exception)
+      PyObject *getMinMaxValues() const
       {
         int a,b;
         self->getMinMaxValues(a,b);
@@ -2613,7 +2613,7 @@ namespace MEDCoupling
         return ret;
       }
    
-      static PyObject *ConvertIndexArrayToO2N(int nbOfOldTuples, PyObject *arr, PyObject *arrI) throw(INTERP_KERNEL::Exception)
+      static PyObject *ConvertIndexArrayToO2N(int nbOfOldTuples, PyObject *arr, PyObject *arrI)
       {
         int newNbOfTuples=-1;
         int szArr,szArrI,sw,iTypppArr,iTypppArrI;
@@ -2627,18 +2627,18 @@ namespace MEDCoupling
         return ret;
       }
 
-      static DataArrayInt *CheckAndPreparePermutation(PyObject *arr) throw(INTERP_KERNEL::Exception)
+      static DataArrayInt *CheckAndPreparePermutation(PyObject *arr)
       {
         MCAuto<DataArrayInt> ret(DataArrayInt::New());
         int szArr,sw,iTypppArr;
         std::vector<int> stdvecTyyppArr;
         const int *arrPtr(convertIntStarLikePyObjToCppIntStar(arr,sw,szArr,iTypppArr,stdvecTyyppArr));
         int *pt(MEDCoupling::DataArrayInt::CheckAndPreparePermutation(arrPtr,arrPtr+szArr));
-        ret->useArray(pt,true,MEDCoupling::C_DEALLOC,szArr,1);
+        ret->useArray(pt,true,MEDCoupling::DeallocType::C_DEALLOC,szArr,1);
         return ret.retn();
       }
 
-      void setValues(PyObject *li, PyObject *nbOfTuples=0, PyObject *nbOfComp=0) throw(INTERP_KERNEL::Exception)
+      void setValues(PyObject *li, PyObject *nbOfTuples=0, PyObject *nbOfComp=0)
       {
         const char *msg="MEDCoupling::DataArrayInt::setValues : Available API are : \n-DataArrayInt.setValues([1,3,4])\n-DataArrayInt.setValues([1,3,4],3)\n-DataArrayInt.setValues([1,3,4,5],2,2)\n-DataArrayInt.New(5)\n !";
         if(PyList_Check(li) || PyTuple_Check(li))
@@ -2684,20 +2684,20 @@ namespace MEDCoupling
           throw INTERP_KERNEL::Exception(msg);
       }
 
-      PyObject *getValues() const throw(INTERP_KERNEL::Exception)
+      PyObject *getValues() const
       {
         const int *vals=self->getConstPointer();
         return convertIntArrToPyList(vals,self->getNbOfElems());
       }
 
 #ifdef WITH_NUMPY
-      PyObject *toNumPyArray() throw(INTERP_KERNEL::Exception) // not const. It is not a bug !
+      PyObject *toNumPyArray() // not const. It is not a bug !
       {
         return ToNumPyArray<DataArrayInt,int>(self,NPY_INT32,"DataArrayInt");
       }
 #endif
 
-      PyObject *isEqualIfNotWhy(const DataArrayInt& other) const throw(INTERP_KERNEL::Exception)
+      PyObject *isEqualIfNotWhy(const DataArrayInt& other) const
       {
         std::string ret1;
         bool ret0=self->isEqualIfNotWhy(other,ret1);
@@ -2709,7 +2709,7 @@ namespace MEDCoupling
         return ret;
       }
 
-      PyObject *getValuesAsTuple() const throw(INTERP_KERNEL::Exception)
+      PyObject *getValuesAsTuple() const
       {
         const int *vals=self->getConstPointer();
         int nbOfComp=self->getNumberOfComponents();
@@ -2717,7 +2717,7 @@ namespace MEDCoupling
         return convertIntArrToPyListOfTuple(vals,nbOfComp,nbOfTuples);
       }
 
-      static PyObject *MakePartition(PyObject *gps, int newNb) throw(INTERP_KERNEL::Exception)
+      static PyObject *MakePartition(PyObject *gps, int newNb)
       {
         std::vector<const DataArrayInt *> groups;
         std::vector< std::vector<int> > fidsOfGroups;
@@ -2733,7 +2733,7 @@ namespace MEDCoupling
         return ret;
       }
 
-      void transformWithIndArr(PyObject *li) throw(INTERP_KERNEL::Exception)
+      void transformWithIndArr(PyObject *li)
       {
         void *da=0;
         int res1(SWIG_ConvertPtr(li,&da,SWIGTYPE_p_MEDCoupling__DataArrayInt, 0 |  0 ));
@@ -2759,7 +2759,7 @@ namespace MEDCoupling
           }
       }
 
-      DataArrayInt *findIdsEqualList(PyObject *obj) throw(INTERP_KERNEL::Exception)
+      DataArrayInt *findIdsEqualList(PyObject *obj)
       {
         int sw;
         int singleVal;
@@ -2780,7 +2780,7 @@ namespace MEDCoupling
           }
       }
 
-      DataArrayInt *findIdsNotEqualList(PyObject *obj) throw(INTERP_KERNEL::Exception)
+      DataArrayInt *findIdsNotEqualList(PyObject *obj)
       {
         int sw;
         int singleVal;
@@ -2801,7 +2801,7 @@ namespace MEDCoupling
           }
       }
 
-      PyObject *splitByValueRange(PyObject *li) const throw(INTERP_KERNEL::Exception)
+      PyObject *splitByValueRange(PyObject *li) const
       {
         DataArrayInt *ret0=0,*ret1=0,*ret2=0;
         void *da=0;
@@ -2827,7 +2827,7 @@ namespace MEDCoupling
         return ret;
       }
 
-      DataArrayInt *transformWithIndArrR(PyObject *li) const throw(INTERP_KERNEL::Exception)
+      DataArrayInt *transformWithIndArrR(PyObject *li) const
       {
         void *da=0;
         int res1=SWIG_ConvertPtr(li,&da,SWIGTYPE_p_MEDCoupling__DataArrayInt, 0 |  0 );
@@ -2844,7 +2844,7 @@ namespace MEDCoupling
           }
       }
 
-      DataArrayInt *renumberAndReduce(PyObject *li, int newNbOfTuple) throw(INTERP_KERNEL::Exception)
+      DataArrayInt *renumberAndReduce(PyObject *li, int newNbOfTuple)
       {
         void *da=0;
         int res1=SWIG_ConvertPtr(li,&da,SWIGTYPE_p_MEDCoupling__DataArrayInt, 0 |  0 );
@@ -2873,7 +2873,7 @@ namespace MEDCoupling
           }
       }
 
-      DataArrayInt *renumber(PyObject *li) throw(INTERP_KERNEL::Exception)
+      DataArrayInt *renumber(PyObject *li)
       {
         void *da=0;
         int res1=SWIG_ConvertPtr(li,&da,SWIGTYPE_p_MEDCoupling__DataArrayInt, 0 |  0 );
@@ -2902,7 +2902,7 @@ namespace MEDCoupling
           }
       }
 
-      DataArrayInt *renumberR(PyObject *li) throw(INTERP_KERNEL::Exception)
+      DataArrayInt *renumberR(PyObject *li)
       {
         void *da=0;
         int res1=SWIG_ConvertPtr(li,&da,SWIGTYPE_p_MEDCoupling__DataArrayInt, 0 |  0 );
@@ -2931,14 +2931,14 @@ namespace MEDCoupling
           }
       }
 
-      void setSelectedComponents(const DataArrayInt *a, PyObject *li) throw(INTERP_KERNEL::Exception)
+      void setSelectedComponents(const DataArrayInt *a, PyObject *li)
       {
         std::vector<int> tmp;
         convertPyToNewIntArr3(li,tmp);
         self->setSelectedComponents(a,tmp);
       }
 
-      PyObject *explodeComponents() const throw(INTERP_KERNEL::Exception)
+      PyObject *explodeComponents() const
       {
         std::vector< MCAuto<DataArrayInt> > retCpp(self->explodeComponents());
         std::size_t sz(retCpp.size());
@@ -2948,7 +2948,7 @@ namespace MEDCoupling
         return res;
       }
 
-      PyObject *getTuple(int tupleId) throw(INTERP_KERNEL::Exception)
+      PyObject *getTuple(int tupleId)
       {
         int sz=self->getNumberOfComponents();
         INTERP_KERNEL::AutoPtr<int> tmp=new int[sz];
@@ -2956,7 +2956,7 @@ namespace MEDCoupling
         return convertIntArrToPyList(tmp,sz);
       }
 
-      PyObject *changeSurjectiveFormat(int targetNb) const throw(INTERP_KERNEL::Exception)
+      PyObject *changeSurjectiveFormat(int targetNb) const
       {
         DataArrayInt *arr=0;
         DataArrayInt *arrI=0;
@@ -2967,42 +2967,42 @@ namespace MEDCoupling
         return res;
       }
 
-      static DataArrayInt *Meld(PyObject *li) throw(INTERP_KERNEL::Exception)
+      static DataArrayInt *Meld(PyObject *li)
       {
         std::vector<const DataArrayInt *> tmp;
         convertFromPyObjVectorOfObj<const MEDCoupling::DataArrayInt *>(li,SWIGTYPE_p_MEDCoupling__DataArrayInt,"DataArrayInt",tmp);
         return DataArrayInt::Meld(tmp);
       }
 
-      static DataArrayInt *Aggregate(PyObject *li) throw(INTERP_KERNEL::Exception)
+      static DataArrayInt *Aggregate(PyObject *li)
       {
         std::vector<const DataArrayInt *> tmp;
         convertFromPyObjVectorOfObj<const MEDCoupling::DataArrayInt *>(li,SWIGTYPE_p_MEDCoupling__DataArrayInt,"DataArrayInt",tmp);
         return DataArrayInt::Aggregate(tmp);
       }
 
-      static DataArrayInt *AggregateIndexes(PyObject *li) throw(INTERP_KERNEL::Exception)
+      static DataArrayInt *AggregateIndexes(PyObject *li)
       {
         std::vector<const DataArrayInt *> tmp;
         convertFromPyObjVectorOfObj<const MEDCoupling::DataArrayInt *>(li,SWIGTYPE_p_MEDCoupling__DataArrayInt,"DataArrayInt",tmp);
         return DataArrayInt::AggregateIndexes(tmp);
       }
 
-      static DataArrayInt *BuildUnion(PyObject *li) throw(INTERP_KERNEL::Exception)
+      static DataArrayInt *BuildUnion(PyObject *li)
       {
         std::vector<const DataArrayInt *> tmp;
         convertFromPyObjVectorOfObj<const MEDCoupling::DataArrayInt *>(li,SWIGTYPE_p_MEDCoupling__DataArrayInt,"DataArrayInt",tmp);
         return DataArrayInt::BuildUnion(tmp);
       }
 
-      static DataArrayInt *BuildIntersection(PyObject *li) throw(INTERP_KERNEL::Exception)
+      static DataArrayInt *BuildIntersection(PyObject *li)
       {
         std::vector<const DataArrayInt *> tmp;
         convertFromPyObjVectorOfObj<const MEDCoupling::DataArrayInt *>(li,SWIGTYPE_p_MEDCoupling__DataArrayInt,"DataArrayInt",tmp);
         return DataArrayInt::BuildIntersection(tmp);
       }
 
-      PyObject *getMaxValue() const throw(INTERP_KERNEL::Exception)
+      PyObject *getMaxValue() const
       {
         int tmp;
         int r1=self->getMaxValue(tmp);
@@ -3012,7 +3012,7 @@ namespace MEDCoupling
         return ret;
       }
     
-      PyObject *getMaxAbsValue(std::size_t& tupleId) const throw(INTERP_KERNEL::Exception)
+      PyObject *getMaxAbsValue(std::size_t& tupleId) const
       {
        std::size_t tmp;
         int r1=self->getMaxAbsValue(tmp);
@@ -3022,7 +3022,7 @@ namespace MEDCoupling
         return ret;
       }
 
-      PyObject *getMinValue() const throw(INTERP_KERNEL::Exception)
+      PyObject *getMinValue() const
       {
         int tmp;
         int r1=self->getMinValue(tmp);
@@ -3032,7 +3032,7 @@ namespace MEDCoupling
         return ret;
       }
 
-      int index(PyObject *obj) const throw(INTERP_KERNEL::Exception)
+      int index(PyObject *obj) const
       {
         int nbOfCompo=self->getNumberOfComponents();
         switch(nbOfCompo)
@@ -3056,7 +3056,7 @@ namespace MEDCoupling
           }
       }
 
-      bool __contains__(PyObject *obj) const throw(INTERP_KERNEL::Exception)
+      bool __contains__(PyObject *obj) const
       {
         int nbOfCompo=self->getNumberOfComponents();
         switch(nbOfCompo)
@@ -3082,7 +3082,7 @@ namespace MEDCoupling
           }
       }
 
-      PyObject *__getitem__(PyObject *obj) throw(INTERP_KERNEL::Exception)
+      PyObject *__getitem__(PyObject *obj)
       {
         const char msg[]="Unexpected situation in DataArrayInt::__getitem__ !";
         const char msg2[]="DataArrayInt::__getitem__ : Mismatch of slice values in 2nd parameter (components) !";
@@ -3191,7 +3191,7 @@ namespace MEDCoupling
           }
       }
 
-      DataArrayInt *__setitem__(PyObject *obj, PyObject *value) throw(INTERP_KERNEL::Exception)
+      DataArrayInt *__setitem__(PyObject *obj, PyObject *value)
       {
         self->checkAllocated();
         const char msg[]="Unexpected situation in __setitem__ !";
@@ -3220,7 +3220,7 @@ namespace MEDCoupling
                   return self;
                 case 2:
                   tmp=DataArrayInt::New();
-                  tmp->useArray(&v1[0],false,CPP_DEALLOC,1,v1.size());
+                  tmp->useArray(&v1[0],false,DeallocType::CPP_DEALLOC,1,v1.size());
                   self->setPartOfValues1(tmp,it1,it1+1,1,0,nbOfComponents,1,false);
                   return self;
                 case 3:
@@ -3244,7 +3244,7 @@ namespace MEDCoupling
                   return self;
                 case 2:
                   tmp=DataArrayInt::New();
-                  tmp->useArray(&v1[0],false,CPP_DEALLOC,1,v1.size());
+                  tmp->useArray(&v1[0],false,DeallocType::CPP_DEALLOC,1,v1.size());
                   self->setPartOfValues3(tmp,&vt1[0],&vt1[0]+vt1.size(),0,nbOfComponents,1,false);
                   return self;
                 case 3:
@@ -3268,7 +3268,7 @@ namespace MEDCoupling
                   return self;
                 case 2:
                   tmp=DataArrayInt::New();
-                  tmp->useArray(&v1[0],false,CPP_DEALLOC,1,v1.size());
+                  tmp->useArray(&v1[0],false,DeallocType::CPP_DEALLOC,1,v1.size());
                   self->setPartOfValues1(tmp,pt1.first,pt1.second.first,pt1.second.second,0,nbOfComponents,1,false);
                   return self;
                 case 3:
@@ -3292,7 +3292,7 @@ namespace MEDCoupling
                   return self;
                 case 2:
                   tmp=DataArrayInt::New();
-                  tmp->useArray(&v1[0],false,CPP_DEALLOC,1,v1.size());
+                  tmp->useArray(&v1[0],false,DeallocType::CPP_DEALLOC,1,v1.size());
                   self->setPartOfValues3(tmp,dt1->getConstPointer(),dt1->getConstPointer()+dt1->getNbOfElems(),0,nbOfComponents,1,false);
                   return self;
                 case 3:
@@ -3316,7 +3316,7 @@ namespace MEDCoupling
                   return self;
                 case 2:
                   tmp=DataArrayInt::New();
-                  tmp->useArray(&v1[0],false,CPP_DEALLOC,1,v1.size());
+                  tmp->useArray(&v1[0],false,DeallocType::CPP_DEALLOC,1,v1.size());
                   self->setPartOfValues1(tmp,it1,it1+1,1,ic1,ic1+1,1,false);
                   return self;
                 case 3:
@@ -3340,7 +3340,7 @@ namespace MEDCoupling
                   return self;
                 case 2:
                   tmp=DataArrayInt::New();
-                  tmp->useArray(&v1[0],false,CPP_DEALLOC,1,v1.size());
+                  tmp->useArray(&v1[0],false,DeallocType::CPP_DEALLOC,1,v1.size());
                   self->setPartOfValues3(tmp,&vt1[0],&vt1[0]+vt1.size(),ic1,ic1+1,1,false);
                   return self;
                 case 3:
@@ -3364,7 +3364,7 @@ namespace MEDCoupling
                   return self;
                 case 2:
                   tmp=DataArrayInt::New();
-                  tmp->useArray(&v1[0],false,CPP_DEALLOC,1,v1.size());
+                  tmp->useArray(&v1[0],false,DeallocType::CPP_DEALLOC,1,v1.size());
                   self->setPartOfValues1(tmp,pt1.first,pt1.second.first,pt1.second.second,ic1,ic1+1,1,false);
                   return self;
                 case 3:
@@ -3388,7 +3388,7 @@ namespace MEDCoupling
                   return self;
                 case 2:
                   tmp=DataArrayInt::New();
-                  tmp->useArray(&v1[0],false,CPP_DEALLOC,1,v1.size());
+                  tmp->useArray(&v1[0],false,DeallocType::CPP_DEALLOC,1,v1.size());
                   self->setPartOfValues3(tmp,dt1->getConstPointer(),dt1->getConstPointer()+dt1->getNbOfElems(),ic1,ic1+1,1,false);
                   return self;
                 case 3:
@@ -3412,7 +3412,7 @@ namespace MEDCoupling
                   return self;
                 case 2:
                   tmp=DataArrayInt::New();
-                  tmp->useArray(&v1[0],false,CPP_DEALLOC,1,v1.size());
+                  tmp->useArray(&v1[0],false,DeallocType::CPP_DEALLOC,1,v1.size());
                   self->setPartOfValues2(tmp,&it1,&it1+1,&vc1[0],&vc1[0]+vc1.size(),false);
                   return self;
                 case 3:
@@ -3436,7 +3436,7 @@ namespace MEDCoupling
                   return self;
                 case 2:
                   tmp=DataArrayInt::New();
-                  tmp->useArray(&v1[0],false,CPP_DEALLOC,1,v1.size());
+                  tmp->useArray(&v1[0],false,DeallocType::CPP_DEALLOC,1,v1.size());
                   self->setPartOfValues2(tmp,&vt1[0],&vt1[0]+vt1.size(),&vc1[0],&vc1[0]+vc1.size(),false);
                   return self;
                 case 3:
@@ -3460,7 +3460,7 @@ namespace MEDCoupling
                   return self;
                 case 2:
                   tmp=DataArrayInt::New();
-                  tmp->useArray(&v1[0],false,CPP_DEALLOC,1,v1.size());
+                  tmp->useArray(&v1[0],false,DeallocType::CPP_DEALLOC,1,v1.size());
                   self->setPartOfValues4(tmp,pt1.first,pt1.second.first,pt1.second.second,&vc1[0],&vc1[0]+vc1.size(),false);
                   return self;
                 case 3:
@@ -3484,7 +3484,7 @@ namespace MEDCoupling
                   return self;
                 case 2:
                   tmp=DataArrayInt::New();
-                  tmp->useArray(&v1[0],false,CPP_DEALLOC,1,v1.size());
+                  tmp->useArray(&v1[0],false,DeallocType::CPP_DEALLOC,1,v1.size());
                   self->setPartOfValues2(tmp,dt1->getConstPointer(),dt1->getConstPointer()+dt1->getNbOfElems(),&vc1[0],&vc1[0]+vc1.size(),false);
                   return self;
                 case 3:
@@ -3508,7 +3508,7 @@ namespace MEDCoupling
                   return self;
                 case 2:
                   tmp=DataArrayInt::New();
-                  tmp->useArray(&v1[0],false,CPP_DEALLOC,1,v1.size());
+                  tmp->useArray(&v1[0],false,DeallocType::CPP_DEALLOC,1,v1.size());
                   self->setPartOfValues1(tmp,it1,it1+1,1,pc1.first,pc1.second.first,pc1.second.second,false);
                   return self;
                 case 3:
@@ -3532,7 +3532,7 @@ namespace MEDCoupling
                   return self;
                 case 2:
                   tmp=DataArrayInt::New();
-                  tmp->useArray(&v1[0],false,CPP_DEALLOC,1,v1.size());
+                  tmp->useArray(&v1[0],false,DeallocType::CPP_DEALLOC,1,v1.size());
                   self->setPartOfValues3(tmp,&vt1[0],&vt1[0]+vt1.size(),pc1.first,pc1.second.first,pc1.second.second,false);
                   return self;
                 case 3:
@@ -3556,7 +3556,7 @@ namespace MEDCoupling
                   return self;
                 case 2:
                   tmp=DataArrayInt::New();
-                  tmp->useArray(&v1[0],false,CPP_DEALLOC,1,v1.size());
+                  tmp->useArray(&v1[0],false,DeallocType::CPP_DEALLOC,1,v1.size());
                   self->setPartOfValues1(tmp,pt1.first,pt1.second.first,pt1.second.second,pc1.first,pc1.second.first,pc1.second.second,false);
                   return self;
                 case 3:
@@ -3580,7 +3580,7 @@ namespace MEDCoupling
                   return self;
                 case 2:
                   tmp=DataArrayInt::New();
-                  tmp->useArray(&v1[0],false,CPP_DEALLOC,1,v1.size());
+                  tmp->useArray(&v1[0],false,DeallocType::CPP_DEALLOC,1,v1.size());
                   self->setPartOfValues3(tmp,dt1->getConstPointer(),dt1->getConstPointer()+dt1->getNbOfElems(),pc1.first,pc1.second.first,pc1.second.second,false);
                   return self;
                 case 3:
@@ -3601,12 +3601,12 @@ namespace MEDCoupling
         return self;
       }
 
-      DataArrayInt *__neg__() const throw(INTERP_KERNEL::Exception)
+      DataArrayInt *__neg__() const
       {
         return self->negate();
       }
  
-      DataArrayInt *__add__(PyObject *obj) throw(INTERP_KERNEL::Exception)
+      DataArrayInt *__add__(PyObject *obj)
       {
         const char msg[]="Unexpected situation in __add__ !";
         int val;
@@ -3625,7 +3625,7 @@ namespace MEDCoupling
             }
           case 2:
             {
-              MCAuto<DataArrayInt> aaaa=DataArrayInt::New(); aaaa->useArray(&aa[0],false,CPP_DEALLOC,1,(int)aa.size());
+              MCAuto<DataArrayInt> aaaa=DataArrayInt::New(); aaaa->useArray(&aa[0],false,DeallocType::CPP_DEALLOC,1,(int)aa.size());
               return DataArrayInt::Add(self,aaaa);
             }
           case 3:
@@ -3642,7 +3642,7 @@ namespace MEDCoupling
           }
       }
 
-      DataArrayInt *__radd__(PyObject *obj) throw(INTERP_KERNEL::Exception)
+      DataArrayInt *__radd__(PyObject *obj)
       {
         const char msg[]="Unexpected situation in __radd__ !";
         int val;
@@ -3661,7 +3661,7 @@ namespace MEDCoupling
             }
           case 2:
             {
-              MCAuto<DataArrayInt> aaaa=DataArrayInt::New(); aaaa->useArray(&aa[0],false,CPP_DEALLOC,1,(int)aa.size());
+              MCAuto<DataArrayInt> aaaa=DataArrayInt::New(); aaaa->useArray(&aa[0],false,DeallocType::CPP_DEALLOC,1,(int)aa.size());
               return DataArrayInt::Add(self,aaaa);
             }
           case 4:
@@ -3674,7 +3674,7 @@ namespace MEDCoupling
           }
       }
 
-      PyObject *___iadd___(PyObject *trueSelf, PyObject *obj) throw(INTERP_KERNEL::Exception)
+      PyObject *___iadd___(PyObject *trueSelf, PyObject *obj)
       {
         const char msg[]="Unexpected situation in __iadd__ !";
         int val;
@@ -3693,7 +3693,7 @@ namespace MEDCoupling
             }
           case 2:
             {
-              MCAuto<DataArrayInt> bb=DataArrayInt::New(); bb->useArray(&aa[0],false,CPP_DEALLOC,1,(int)aa.size());
+              MCAuto<DataArrayInt> bb=DataArrayInt::New(); bb->useArray(&aa[0],false,DeallocType::CPP_DEALLOC,1,(int)aa.size());
               self->addEqual(bb);
               Py_XINCREF(trueSelf);
               return trueSelf;
@@ -3716,7 +3716,7 @@ namespace MEDCoupling
           }
       }
 
-      DataArrayInt *__sub__(PyObject *obj) throw(INTERP_KERNEL::Exception)
+      DataArrayInt *__sub__(PyObject *obj)
       {
         const char msg[]="Unexpected situation in __sub__ !";
         int val;
@@ -3735,7 +3735,7 @@ namespace MEDCoupling
             }
           case 2:
             {
-              MCAuto<DataArrayInt> aaaa=DataArrayInt::New(); aaaa->useArray(&aa[0],false,CPP_DEALLOC,1,(int)aa.size());
+              MCAuto<DataArrayInt> aaaa=DataArrayInt::New(); aaaa->useArray(&aa[0],false,DeallocType::CPP_DEALLOC,1,(int)aa.size());
               return DataArrayInt::Substract(self,aaaa);
             }
           case 3:
@@ -3752,7 +3752,7 @@ namespace MEDCoupling
           }
       }
 
-      DataArrayInt *__rsub__(PyObject *obj) throw(INTERP_KERNEL::Exception)
+      DataArrayInt *__rsub__(PyObject *obj)
       {
         const char msg[]="Unexpected situation in __rsub__ !";
         int val;
@@ -3771,7 +3771,7 @@ namespace MEDCoupling
             }
           case 2:
             {
-              MCAuto<DataArrayInt> aaaa=DataArrayInt::New(); aaaa->useArray(&aa[0],false,CPP_DEALLOC,1,(int)aa.size());
+              MCAuto<DataArrayInt> aaaa=DataArrayInt::New(); aaaa->useArray(&aa[0],false,DeallocType::CPP_DEALLOC,1,(int)aa.size());
               return DataArrayInt::Substract(aaaa,self);
             }
           case 4:
@@ -3784,7 +3784,7 @@ namespace MEDCoupling
           }
       }
 
-      PyObject *___isub___(PyObject *trueSelf, PyObject *obj) throw(INTERP_KERNEL::Exception)
+      PyObject *___isub___(PyObject *trueSelf, PyObject *obj)
       {
         const char msg[]="Unexpected situation in __isub__ !";
         int val;
@@ -3803,7 +3803,7 @@ namespace MEDCoupling
             }
           case 2:
             {
-              MCAuto<DataArrayInt> bb=DataArrayInt::New(); bb->useArray(&aa[0],false,CPP_DEALLOC,1,(int)aa.size());
+              MCAuto<DataArrayInt> bb=DataArrayInt::New(); bb->useArray(&aa[0],false,DeallocType::CPP_DEALLOC,1,(int)aa.size());
               self->substractEqual(bb);
               Py_XINCREF(trueSelf);
               return trueSelf;
@@ -3826,7 +3826,7 @@ namespace MEDCoupling
           }
       }
 
-      DataArrayInt *__mul__(PyObject *obj) throw(INTERP_KERNEL::Exception)
+      DataArrayInt *__mul__(PyObject *obj)
       {
         const char msg[]="Unexpected situation in __mul__ !";
         int val;
@@ -3845,7 +3845,7 @@ namespace MEDCoupling
             }
           case 2:
             {
-              MCAuto<DataArrayInt> aaaa=DataArrayInt::New(); aaaa->useArray(&aa[0],false,CPP_DEALLOC,1,(int)aa.size());
+              MCAuto<DataArrayInt> aaaa=DataArrayInt::New(); aaaa->useArray(&aa[0],false,DeallocType::CPP_DEALLOC,1,(int)aa.size());
               return DataArrayInt::Multiply(self,aaaa);
             }
           case 3:
@@ -3862,7 +3862,7 @@ namespace MEDCoupling
           }
       }
 
-      DataArrayInt *__rmul__(PyObject *obj) throw(INTERP_KERNEL::Exception)
+      DataArrayInt *__rmul__(PyObject *obj)
       {
         const char msg[]="Unexpected situation in __rmul__ !";
         int val;
@@ -3881,7 +3881,7 @@ namespace MEDCoupling
             }
           case 2:
             {
-              MCAuto<DataArrayInt> aaaa=DataArrayInt::New(); aaaa->useArray(&aa[0],false,CPP_DEALLOC,1,(int)aa.size());
+              MCAuto<DataArrayInt> aaaa=DataArrayInt::New(); aaaa->useArray(&aa[0],false,DeallocType::CPP_DEALLOC,1,(int)aa.size());
               return DataArrayInt::Multiply(self,aaaa);
             }
           case 4:
@@ -3894,7 +3894,7 @@ namespace MEDCoupling
           }
       }
 
-      PyObject *___imul___(PyObject *trueSelf, PyObject *obj) throw(INTERP_KERNEL::Exception)
+      PyObject *___imul___(PyObject *trueSelf, PyObject *obj)
       {
         const char msg[]="Unexpected situation in __imul__ !";
         int val;
@@ -3913,7 +3913,7 @@ namespace MEDCoupling
             }
           case 2:
             {
-              MCAuto<DataArrayInt> bb=DataArrayInt::New(); bb->useArray(&aa[0],false,CPP_DEALLOC,1,(int)aa.size());
+              MCAuto<DataArrayInt> bb=DataArrayInt::New(); bb->useArray(&aa[0],false,DeallocType::CPP_DEALLOC,1,(int)aa.size());
               self->multiplyEqual(bb);
               Py_XINCREF(trueSelf);
               return trueSelf;
@@ -3936,7 +3936,7 @@ namespace MEDCoupling
           }
       }
 
-      DataArrayInt *__div__(PyObject *obj) throw(INTERP_KERNEL::Exception)
+      DataArrayInt *__div__(PyObject *obj)
       {
         const char msg[]="Unexpected situation in __div__ !";
         int val;
@@ -3955,7 +3955,7 @@ namespace MEDCoupling
             }
           case 2:
             {
-              MCAuto<DataArrayInt> aaaa=DataArrayInt::New(); aaaa->useArray(&aa[0],false,CPP_DEALLOC,1,(int)aa.size());
+              MCAuto<DataArrayInt> aaaa=DataArrayInt::New(); aaaa->useArray(&aa[0],false,DeallocType::CPP_DEALLOC,1,(int)aa.size());
               return DataArrayInt::Divide(self,aaaa);
             }
           case 3:
@@ -3972,7 +3972,7 @@ namespace MEDCoupling
           }
       }
 
-      DataArrayInt *__rdiv__(PyObject *obj) throw(INTERP_KERNEL::Exception)
+      DataArrayInt *__rdiv__(PyObject *obj)
       {
         const char msg[]="Unexpected situation in __rdiv__ !";
         int val;
@@ -3991,7 +3991,7 @@ namespace MEDCoupling
             }
           case 2:
             {
-              MCAuto<DataArrayInt> aaaa=DataArrayInt::New(); aaaa->useArray(&aa[0],false,CPP_DEALLOC,1,(int)aa.size());
+              MCAuto<DataArrayInt> aaaa=DataArrayInt::New(); aaaa->useArray(&aa[0],false,DeallocType::CPP_DEALLOC,1,(int)aa.size());
               return DataArrayInt::Divide(aaaa,self);
             }
           case 4:
@@ -4004,7 +4004,7 @@ namespace MEDCoupling
           }
       }
 
-      PyObject *___idiv___(PyObject *trueSelf, PyObject *obj) throw(INTERP_KERNEL::Exception)
+      PyObject *___idiv___(PyObject *trueSelf, PyObject *obj)
       {
         const char msg[]="Unexpected situation in __idiv__ !";
         int val;
@@ -4023,7 +4023,7 @@ namespace MEDCoupling
             }
           case 2:
             {
-              MCAuto<DataArrayInt> bb=DataArrayInt::New(); bb->useArray(&aa[0],false,CPP_DEALLOC,1,(int)aa.size());
+              MCAuto<DataArrayInt> bb=DataArrayInt::New(); bb->useArray(&aa[0],false,DeallocType::CPP_DEALLOC,1,(int)aa.size());
               self->divideEqual(bb);
               Py_XINCREF(trueSelf);
               return trueSelf;
@@ -4046,7 +4046,7 @@ namespace MEDCoupling
           }
       }
 
-      DataArrayInt *__mod__(PyObject *obj) throw(INTERP_KERNEL::Exception)
+      DataArrayInt *__mod__(PyObject *obj)
       {
         const char msg[]="Unexpected situation in __mod__ !";
         int val;
@@ -4065,7 +4065,7 @@ namespace MEDCoupling
             }
           case 2:
             {
-              MCAuto<DataArrayInt> aaaa=DataArrayInt::New(); aaaa->useArray(&aa[0],false,CPP_DEALLOC,1,(int)aa.size());
+              MCAuto<DataArrayInt> aaaa=DataArrayInt::New(); aaaa->useArray(&aa[0],false,DeallocType::CPP_DEALLOC,1,(int)aa.size());
               return DataArrayInt::Modulus(self,aaaa);
             }
           case 3:
@@ -4082,7 +4082,7 @@ namespace MEDCoupling
           }
       }
 
-      DataArrayInt *__rmod__(PyObject *obj) throw(INTERP_KERNEL::Exception)
+      DataArrayInt *__rmod__(PyObject *obj)
       {
         const char msg[]="Unexpected situation in __rmod__ !";
         int val;
@@ -4101,7 +4101,7 @@ namespace MEDCoupling
             }
           case 2:
             {
-              MCAuto<DataArrayInt> aaaa=DataArrayInt::New(); aaaa->useArray(&aa[0],false,CPP_DEALLOC,1,(int)aa.size());
+              MCAuto<DataArrayInt> aaaa=DataArrayInt::New(); aaaa->useArray(&aa[0],false,DeallocType::CPP_DEALLOC,1,(int)aa.size());
               return DataArrayInt::Modulus(aaaa,self);
             }
           case 3:
@@ -4118,7 +4118,7 @@ namespace MEDCoupling
           }
       }
 
-      PyObject *___imod___(PyObject *trueSelf, PyObject *obj) throw(INTERP_KERNEL::Exception)
+      PyObject *___imod___(PyObject *trueSelf, PyObject *obj)
       {
         const char msg[]="Unexpected situation in __imod__ !";
         int val;
@@ -4153,7 +4153,7 @@ namespace MEDCoupling
           }
       }
 
-      DataArrayInt *__pow__(PyObject *obj) throw(INTERP_KERNEL::Exception)
+      DataArrayInt *__pow__(PyObject *obj)
       {
         const char msg[]="Unexpected situation in __pow__ !";
         int val;
@@ -4172,7 +4172,7 @@ namespace MEDCoupling
             }
           case 2:
             {
-              MCAuto<DataArrayInt> aaaa=DataArrayInt::New(); aaaa->useArray(&aa[0],false,CPP_DEALLOC,1,(int)aa.size());
+              MCAuto<DataArrayInt> aaaa=DataArrayInt::New(); aaaa->useArray(&aa[0],false,DeallocType::CPP_DEALLOC,1,(int)aa.size());
               return DataArrayInt::Pow(self,aaaa);
             }
           case 3:
@@ -4189,7 +4189,7 @@ namespace MEDCoupling
           }
       }
 
-      DataArrayInt *__rpow__(PyObject *obj) throw(INTERP_KERNEL::Exception)
+      DataArrayInt *__rpow__(PyObject *obj)
       {
         const char msg[]="Unexpected situation in __rpow__ !";
         int val;
@@ -4208,7 +4208,7 @@ namespace MEDCoupling
             }
           case 2:
             {
-              MCAuto<DataArrayInt> aaaa=DataArrayInt::New(); aaaa->useArray(&aa[0],false,CPP_DEALLOC,1,(int)aa.size());
+              MCAuto<DataArrayInt> aaaa=DataArrayInt::New(); aaaa->useArray(&aa[0],false,DeallocType::CPP_DEALLOC,1,(int)aa.size());
               return DataArrayInt::Pow(aaaa,self);
             }
           case 3:
@@ -4225,7 +4225,7 @@ namespace MEDCoupling
           }
       }
    
-      PyObject *___ipow___(PyObject *trueSelf, PyObject *obj) throw(INTERP_KERNEL::Exception)
+      PyObject *___ipow___(PyObject *trueSelf, PyObject *obj)
       {
         const char msg[]="Unexpected situation in __ipow__ !";
         int val;
@@ -4260,14 +4260,14 @@ namespace MEDCoupling
           }
       }
 
-      std::string __repr__() const throw(INTERP_KERNEL::Exception)
+      std::string __repr__() const
       {
         std::ostringstream oss;
         self->reprQuickOverview(oss);
         return oss.str();
       }
       
-      void pushBackValsSilent(PyObject *li) throw(INTERP_KERNEL::Exception)
+      void pushBackValsSilent(PyObject *li)
       {
         int szArr,sw,iTypppArr;
         std::vector<int> stdvecTyyppArr;
@@ -4275,7 +4275,7 @@ namespace MEDCoupling
         self->pushBackValsSilent(tmp,tmp+szArr);
       }
       
-      PyObject *partitionByDifferentValues() const throw(INTERP_KERNEL::Exception)
+      PyObject *partitionByDifferentValues() const
       {
         std::vector<int> ret1;
         std::vector<DataArrayInt *> ret0=self->partitionByDifferentValues(ret1);
@@ -4293,7 +4293,7 @@ namespace MEDCoupling
         return pyRet;
       }
       
-      PyObject *findIdsRangesInListOfIds(const DataArrayInt *listOfIds) const throw(INTERP_KERNEL::Exception)
+      PyObject *findIdsRangesInListOfIds(const DataArrayInt *listOfIds) const
       {
         DataArrayInt *ret0=0,*ret1=0;
         self->findIdsRangesInListOfIds(listOfIds,ret0,ret1);
@@ -4303,7 +4303,7 @@ namespace MEDCoupling
         return pyRet;
       }
 
-      PyObject *isRange() const throw(INTERP_KERNEL::Exception)
+      PyObject *isRange() const
       {
         int a(0),b(0),c(0);
         bool ret(self->isRange(a,b,c));
@@ -4321,7 +4321,169 @@ namespace MEDCoupling
         PyTuple_SetItem(pyRet,1,ret1Py);
         return pyRet;
       }
-    }
+
+      static bool RemoveIdsFromIndexedArrays(PyObject *li, DataArrayInt *arr, DataArrayInt *arrIndx, int offsetForRemoval=0) throw(INTERP_KERNEL::Exception)
+      {
+        int sw;
+        int singleVal;
+        std::vector<int> multiVal;
+        std::pair<int, std::pair<int,int> > slic;
+        MEDCoupling::DataArrayInt *daIntTyypp=0;
+        if(!arrIndx)
+          throw INTERP_KERNEL::Exception("DataArrayInt::RemoveIdsFromIndexedArrays : null pointer as arrIndex !");
+        convertIntStarOrSliceLikePyObjToCpp(li,arrIndx->getNumberOfTuples()-1,sw,singleVal,multiVal,slic,daIntTyypp);
+        switch(sw)
+          {
+          case 1:
+            return DataArrayInt::RemoveIdsFromIndexedArrays(&singleVal,&singleVal+1,arr,arrIndx,offsetForRemoval);
+          case 2:
+            return DataArrayInt::RemoveIdsFromIndexedArrays(&multiVal[0],&multiVal[0]+multiVal.size(),arr,arrIndx,offsetForRemoval);
+          case 4:
+            return DataArrayInt::RemoveIdsFromIndexedArrays(daIntTyypp->begin(),daIntTyypp->end(),arr,arrIndx,offsetForRemoval);
+          default:
+            throw INTERP_KERNEL::Exception("MEDCouplingUMesh::RemoveIdsFromIndexedArrays : unrecognized type entered, expected list of int, tuple of int or DataArrayInt !");
+          }
+      }
+
+      static PyObject *ExtractFromIndexedArrays(PyObject *li, const DataArrayInt *arrIn, const DataArrayInt *arrIndxIn) throw(INTERP_KERNEL::Exception)
+      {
+        DataArrayInt *arrOut=0,*arrIndexOut=0;
+        int sw;
+        int singleVal;
+        std::vector<int> multiVal;
+        std::pair<int, std::pair<int,int> > slic;
+        MEDCoupling::DataArrayInt *daIntTyypp=0;
+        if(!arrIndxIn)
+          throw INTERP_KERNEL::Exception("DataArrayInt::ExtractFromIndexedArrays : null pointer as arrIndxIn !");
+        convertIntStarOrSliceLikePyObjToCpp(li,arrIndxIn->getNumberOfTuples()-1,sw,singleVal,multiVal,slic,daIntTyypp);
+        switch(sw)
+          {
+          case 1:
+            {
+              DataArrayInt::ExtractFromIndexedArrays(&singleVal,&singleVal+1,arrIn,arrIndxIn,arrOut,arrIndexOut);
+              break;
+            }
+          case 2:
+            {
+              DataArrayInt::ExtractFromIndexedArrays(&multiVal[0],&multiVal[0]+multiVal.size(),arrIn,arrIndxIn,arrOut,arrIndexOut);
+              break;
+            }
+          case 4:
+            {
+              DataArrayInt::ExtractFromIndexedArrays(daIntTyypp->begin(),daIntTyypp->end(),arrIn,arrIndxIn,arrOut,arrIndexOut);
+              break;
+            }
+          default:
+            throw INTERP_KERNEL::Exception("DataArrayInt::ExtractFromIndexedArrays : unrecognized type entered, expected list of int, tuple of int or DataArrayInt !");
+          }
+        PyObject *ret=PyTuple_New(2);
+        PyTuple_SetItem(ret,0,SWIG_NewPointerObj(SWIG_as_voidptr(arrOut),SWIGTYPE_p_MEDCoupling__DataArrayInt, SWIG_POINTER_OWN | 0 ));
+        PyTuple_SetItem(ret,1,SWIG_NewPointerObj(SWIG_as_voidptr(arrIndexOut),SWIGTYPE_p_MEDCoupling__DataArrayInt, SWIG_POINTER_OWN | 0 ));
+        return ret;
+      }
+
+      static PyObject *ExtractFromIndexedArraysSlice(int strt, int stp, int step, const DataArrayInt *arrIn, const DataArrayInt *arrIndxIn) throw(INTERP_KERNEL::Exception)
+      {
+        DataArrayInt *arrOut=0,*arrIndexOut=0;
+        DataArrayInt::ExtractFromIndexedArraysSlice(strt,stp,step,arrIn,arrIndxIn,arrOut,arrIndexOut);
+        PyObject *ret=PyTuple_New(2);
+        PyTuple_SetItem(ret,0,SWIG_NewPointerObj(SWIG_as_voidptr(arrOut),SWIGTYPE_p_MEDCoupling__DataArrayInt, SWIG_POINTER_OWN | 0 ));
+        PyTuple_SetItem(ret,1,SWIG_NewPointerObj(SWIG_as_voidptr(arrIndexOut),SWIGTYPE_p_MEDCoupling__DataArrayInt, SWIG_POINTER_OWN | 0 ));
+        return ret;
+      }
+
+      static PyObject *ExtractFromIndexedArraysSlice(PyObject *slic, const DataArrayInt *arrIn, const DataArrayInt *arrIndxIn) throw(INTERP_KERNEL::Exception)
+      {
+        if(!PySlice_Check(slic))
+          throw INTERP_KERNEL::Exception("ExtractFromIndexedArraysSlice (wrap) : the first param is not a pyslice !");
+        Py_ssize_t strt=2,stp=2,step=2;
+        if(!arrIndxIn)
+          throw INTERP_KERNEL::Exception("ExtractFromIndexedArraysSlice (wrap) : last array is null !");
+        arrIndxIn->checkAllocated();
+        if(arrIndxIn->getNumberOfComponents()!=1)
+          throw INTERP_KERNEL::Exception("ExtractFromIndexedArraysSlice (wrap) : number of components of last argument must be equal to one !");
+        GetIndicesOfSlice(slic,arrIndxIn->getNumberOfTuples(),&strt,&stp,&step,"ExtractFromIndexedArraysSlice (wrap) : Invalid slice regarding nb of elements !");
+        DataArrayInt *arrOut=0,*arrIndexOut=0;
+        DataArrayInt::ExtractFromIndexedArraysSlice(strt,stp,step,arrIn,arrIndxIn,arrOut,arrIndexOut);
+        PyObject *ret=PyTuple_New(2);
+        PyTuple_SetItem(ret,0,SWIG_NewPointerObj(SWIG_as_voidptr(arrOut),SWIGTYPE_p_MEDCoupling__DataArrayInt, SWIG_POINTER_OWN | 0 ));
+        PyTuple_SetItem(ret,1,SWIG_NewPointerObj(SWIG_as_voidptr(arrIndexOut),SWIGTYPE_p_MEDCoupling__DataArrayInt, SWIG_POINTER_OWN | 0 ));
+        return ret;
+      }
+
+      static PyObject *SetPartOfIndexedArrays(PyObject *li,
+                                              const DataArrayInt *arrIn, const DataArrayInt *arrIndxIn,
+                                              const DataArrayInt *srcArr, const DataArrayInt *srcArrIndex) throw(INTERP_KERNEL::Exception)
+      {
+        DataArrayInt *arrOut=0,*arrIndexOut=0;
+        int sw;
+        int singleVal;
+        std::vector<int> multiVal;
+        std::pair<int, std::pair<int,int> > slic;
+        MEDCoupling::DataArrayInt *daIntTyypp=0;
+        if(!arrIndxIn)
+          throw INTERP_KERNEL::Exception("DataArrayInt::SetPartOfIndexedArrays : null pointer as arrIndex !");
+        convertIntStarOrSliceLikePyObjToCpp(li,arrIndxIn->getNumberOfTuples()-1,sw,singleVal,multiVal,slic,daIntTyypp);
+        switch(sw)
+          {
+          case 1:
+            {
+              DataArrayInt::SetPartOfIndexedArrays(&singleVal,&singleVal+1,arrIn,arrIndxIn,srcArr,srcArrIndex,arrOut,arrIndexOut);
+              break;
+            }
+          case 2:
+            {
+              DataArrayInt::SetPartOfIndexedArrays(&multiVal[0],&multiVal[0]+multiVal.size(),arrIn,arrIndxIn,srcArr,srcArrIndex,arrOut,arrIndexOut);
+              break;
+            }
+          case 4:
+            {
+              DataArrayInt::SetPartOfIndexedArrays(daIntTyypp->begin(),daIntTyypp->end(),arrIn,arrIndxIn,srcArr,srcArrIndex,arrOut,arrIndexOut);
+              break;
+            }
+          default:
+            throw INTERP_KERNEL::Exception("DataArrayInt::SetPartOfIndexedArrays : unrecognized type entered, expected list of int, tuple of int or DataArrayInt !");
+          }
+        PyObject *ret=PyTuple_New(2);
+        PyTuple_SetItem(ret,0,SWIG_NewPointerObj(SWIG_as_voidptr(arrOut),SWIGTYPE_p_MEDCoupling__DataArrayInt, SWIG_POINTER_OWN | 0 ));
+        PyTuple_SetItem(ret,1,SWIG_NewPointerObj(SWIG_as_voidptr(arrIndexOut),SWIGTYPE_p_MEDCoupling__DataArrayInt, SWIG_POINTER_OWN | 0 ));
+        return ret;
+      }
+
+      static void SetPartOfIndexedArraysSameIdx(PyObject *li, DataArrayInt *arrIn, const DataArrayInt *arrIndxIn,
+                                                const DataArrayInt *srcArr, const DataArrayInt *srcArrIndex) throw(INTERP_KERNEL::Exception)
+      {
+        int sw;
+        int singleVal;
+        std::vector<int> multiVal;
+        std::pair<int, std::pair<int,int> > slic;
+        MEDCoupling::DataArrayInt *daIntTyypp=0;
+        if(!arrIndxIn)
+          throw INTERP_KERNEL::Exception("DataArrayInt::SetPartOfIndexedArraysSameIdx : null pointer as arrIndex !");
+        convertIntStarOrSliceLikePyObjToCpp(li,arrIndxIn->getNumberOfTuples()-1,sw,singleVal,multiVal,slic,daIntTyypp);
+        switch(sw)
+          {
+          case 1:
+            {
+              DataArrayInt::SetPartOfIndexedArraysSameIdx(&singleVal,&singleVal+1,arrIn,arrIndxIn,srcArr,srcArrIndex);
+              break;
+            }
+          case 2:
+            {
+              DataArrayInt::SetPartOfIndexedArraysSameIdx(&multiVal[0],&multiVal[0]+multiVal.size(),arrIn,arrIndxIn,srcArr,srcArrIndex);
+              break;
+            }
+          case 4:
+            {
+              DataArrayInt::SetPartOfIndexedArraysSameIdx(daIntTyypp->begin(),daIntTyypp->end(),arrIn,arrIndxIn,srcArr,srcArrIndex);
+              break;
+            }
+          default:
+            throw INTERP_KERNEL::Exception("DataArrayInt::SetPartOfIndexedArraysSameIdx : unrecognized type entered, expected list of int, tuple of int or DataArrayInt !");
+          }
+      }
+
+    } // end extent
   };
 
   class DataArrayIntTuple;
@@ -4350,26 +4512,26 @@ namespace MEDCoupling
   class DataArrayIntTuple
   {
   public:
-    int getNumberOfCompo() const throw(INTERP_KERNEL::Exception);
-    DataArrayInt *buildDAInt(int nbOfTuples, int nbOfCompo) const throw(INTERP_KERNEL::Exception);
+    int getNumberOfCompo() const;
+    DataArrayInt *buildDAInt(int nbOfTuples, int nbOfCompo) const;
     %extend
     {
-      std::string __str__() const throw(INTERP_KERNEL::Exception)
+      std::string __str__() const
       {
         return self->repr();
       }
 
-      int __int__() const throw(INTERP_KERNEL::Exception)
+      int __int__() const
       {
         return self->intValue();
       }
 
-      DataArrayInt *buildDAInt() throw(INTERP_KERNEL::Exception)
+      DataArrayInt *buildDAInt()
       {
         return self->buildDAInt(1,self->getNumberOfCompo());
       }
 
-      PyObject *___iadd___(PyObject *trueSelf, PyObject *obj) throw(INTERP_KERNEL::Exception)
+      PyObject *___iadd___(PyObject *trueSelf, PyObject *obj)
       {
         MCAuto<DataArrayInt> ret=self->buildDAInt(1,self->getNumberOfCompo());
         MEDCoupling_DataArrayInt____iadd___(ret,0,obj);
@@ -4377,7 +4539,7 @@ namespace MEDCoupling
         return trueSelf;
       }
   
-      PyObject *___isub___(PyObject *trueSelf, PyObject *obj) throw(INTERP_KERNEL::Exception)
+      PyObject *___isub___(PyObject *trueSelf, PyObject *obj)
       {
         MCAuto<DataArrayInt> ret=self->buildDAInt(1,self->getNumberOfCompo());
         MEDCoupling_DataArrayInt____isub___(ret,0,obj);
@@ -4385,14 +4547,14 @@ namespace MEDCoupling
         return trueSelf;
       }
   
-      PyObject *___imul___(PyObject *trueSelf, PyObject *obj) throw(INTERP_KERNEL::Exception)
+      PyObject *___imul___(PyObject *trueSelf, PyObject *obj)
       {
         MCAuto<DataArrayInt> ret=self->buildDAInt(1,self->getNumberOfCompo());
         MEDCoupling_DataArrayInt____imul___(ret,0,obj);
         Py_XINCREF(trueSelf);
         return trueSelf;
       }
-      PyObject *___idiv___(PyObject *trueSelf, PyObject *obj) throw(INTERP_KERNEL::Exception)
+      PyObject *___idiv___(PyObject *trueSelf, PyObject *obj)
       {
         MCAuto<DataArrayInt> ret=self->buildDAInt(1,self->getNumberOfCompo());
         MEDCoupling_DataArrayInt____idiv___(ret,0,obj);
@@ -4400,7 +4562,7 @@ namespace MEDCoupling
         return trueSelf;
       }
 
-      PyObject *___imod___(PyObject *trueSelf, PyObject *obj) throw(INTERP_KERNEL::Exception)
+      PyObject *___imod___(PyObject *trueSelf, PyObject *obj)
       {
         MCAuto<DataArrayInt> ret=self->buildDAInt(1,self->getNumberOfCompo());
         MEDCoupling_DataArrayInt____imod___(ret,0,obj);
@@ -4408,12 +4570,12 @@ namespace MEDCoupling
         return trueSelf;
       }
 
-      PyObject *__len__() throw(INTERP_KERNEL::Exception)
+      PyObject *__len__()
       {
         return PyInt_FromLong(self->getNumberOfCompo());
       }
   
-      PyObject *__getitem__(PyObject *obj) throw(INTERP_KERNEL::Exception)
+      PyObject *__getitem__(PyObject *obj)
       {
         const char msg2[]="DataArrayIntTuple::__getitem__ : Mismatch of slice values in 2nd parameter (components) !";
         int sw;
@@ -4478,7 +4640,7 @@ namespace MEDCoupling
           }
       }
 
-      DataArrayIntTuple *__setitem__(PyObject *obj, PyObject *value) throw(INTERP_KERNEL::Exception)
+      DataArrayIntTuple *__setitem__(PyObject *obj, PyObject *value)
       {
         const char msg[]="DataArrayIntTuple::__setitem__ : unrecognized type entered, int, slice, list<int>, tuple<int> !";
         const char msg2[]="DataArrayIntTuple::__setitem__ : Mismatch of slice values in 2nd parameter (components) !";
@@ -4637,51 +4799,51 @@ namespace MEDCoupling
   class DataArrayChar : public DataArray
   {
   public:
-    virtual DataArrayChar *buildEmptySpecializedDAChar() const throw(INTERP_KERNEL::Exception);
-    int getHashCode() const throw(INTERP_KERNEL::Exception);
-    bool empty() const throw(INTERP_KERNEL::Exception);
-    void deepCopyFrom(const DataArrayChar& other) throw(INTERP_KERNEL::Exception);
-    void reserve(std::size_t nbOfElems) throw(INTERP_KERNEL::Exception);
-    void pushBackSilent(char val) throw(INTERP_KERNEL::Exception);
-    char popBackSilent() throw(INTERP_KERNEL::Exception);
-    void pack() const throw(INTERP_KERNEL::Exception);
-    void allocIfNecessary(int nbOfTuple, int nbOfCompo) throw(INTERP_KERNEL::Exception);
-    bool isEqual(const DataArrayChar& other) const throw(INTERP_KERNEL::Exception);
-    bool isEqualWithoutConsideringStr(const DataArrayChar& other) const throw(INTERP_KERNEL::Exception);
-    void reverse() throw(INTERP_KERNEL::Exception);
-    void fillWithZero() throw(INTERP_KERNEL::Exception);
-    void fillWithValue(char val) throw(INTERP_KERNEL::Exception);
-    std::string repr() const throw(INTERP_KERNEL::Exception);
-    std::string reprZip() const throw(INTERP_KERNEL::Exception);
-    DataArrayInt *convertToIntArr() const throw(INTERP_KERNEL::Exception);
-    DataArrayChar *renumber(const int *old2New) const throw(INTERP_KERNEL::Exception);
-    DataArrayChar *renumberR(const int *new2Old) const throw(INTERP_KERNEL::Exception);
-    DataArrayChar *renumberAndReduce(const int *old2NewBg, int newNbOfTuple) const throw(INTERP_KERNEL::Exception);
-    bool isUniform(char val) const throw(INTERP_KERNEL::Exception);
-    void sort(bool asc=true) throw(INTERP_KERNEL::Exception);
-    DataArrayChar *subArray(int tupleIdBg, int tupleIdEnd=-1) const throw(INTERP_KERNEL::Exception);
-    DataArrayChar *changeNbOfComponents(int newNbOfComp, char dftValue) const throw(INTERP_KERNEL::Exception);
-    void meldWith(const DataArrayChar *other) throw(INTERP_KERNEL::Exception);
-    void setPartOfValuesAdv(const DataArrayChar *a, const DataArrayInt *tuplesSelec) throw(INTERP_KERNEL::Exception);
-    char front() const throw(INTERP_KERNEL::Exception);
-    char back() const throw(INTERP_KERNEL::Exception);
-    void setIJ(int tupleId, int compoId, char newVal) throw(INTERP_KERNEL::Exception);
-    void setIJSilent(int tupleId, int compoId, char newVal) throw(INTERP_KERNEL::Exception);
-    char *getPointer() throw(INTERP_KERNEL::Exception);
-    DataArrayInt *findIdsEqual(char val) const throw(INTERP_KERNEL::Exception);
-    DataArrayInt *findIdsNotEqual(char val) const throw(INTERP_KERNEL::Exception);
-    int findIdFirstEqualTuple(const std::vector<char>& tupl) const throw(INTERP_KERNEL::Exception);
-    bool presenceOfTuple(const std::vector<char>& tupl) const throw(INTERP_KERNEL::Exception);
-    char getMaxValue(int& tupleId) const throw(INTERP_KERNEL::Exception);
-    char getMaxValueInArray() const throw(INTERP_KERNEL::Exception);
-    char getMinValue(int& tupleId) const throw(INTERP_KERNEL::Exception);
-    char getMinValueInArray() const throw(INTERP_KERNEL::Exception);
-    DataArrayInt *findIdsInRange(char vmin, char vmax) const throw(INTERP_KERNEL::Exception);
-    static DataArrayChar *Aggregate(const DataArrayChar *a1, const DataArrayChar *a2) throw(INTERP_KERNEL::Exception);
-    static DataArrayChar *Meld(const DataArrayChar *a1, const DataArrayChar *a2) throw(INTERP_KERNEL::Exception);
+    virtual DataArrayChar *buildEmptySpecializedDAChar() const;
+    int getHashCode() const;
+    bool empty() const;
+    void deepCopyFrom(const DataArrayChar& other);
+    void reserve(std::size_t nbOfElems);
+    void pushBackSilent(char val);
+    char popBackSilent();
+    void pack() const;
+    void allocIfNecessary(int nbOfTuple, int nbOfCompo);
+    bool isEqual(const DataArrayChar& other) const;
+    bool isEqualWithoutConsideringStr(const DataArrayChar& other) const;
+    void reverse();
+    void fillWithZero();
+    void fillWithValue(char val);
+    std::string repr() const;
+    std::string reprZip() const;
+    DataArrayInt *convertToIntArr() const;
+    DataArrayChar *renumber(const int *old2New) const;
+    DataArrayChar *renumberR(const int *new2Old) const;
+    DataArrayChar *renumberAndReduce(const int *old2NewBg, int newNbOfTuple) const;
+    bool isUniform(char val) const;
+    void sort(bool asc=true);
+    DataArrayChar *subArray(int tupleIdBg, int tupleIdEnd=-1) const;
+    DataArrayChar *changeNbOfComponents(int newNbOfComp, char dftValue) const;
+    void meldWith(const DataArrayChar *other);
+    void setPartOfValuesAdv(const DataArrayChar *a, const DataArrayInt *tuplesSelec);
+    char front() const;
+    char back() const;
+    void setIJ(int tupleId, int compoId, char newVal);
+    void setIJSilent(int tupleId, int compoId, char newVal);
+    char *getPointer();
+    DataArrayInt *findIdsEqual(char val) const;
+    DataArrayInt *findIdsNotEqual(char val) const;
+    int findIdFirstEqualTuple(const std::vector<char>& tupl) const;
+    bool presenceOfTuple(const std::vector<char>& tupl) const;
+    char getMaxValue(int& tupleId) const;
+    char getMaxValueInArray() const;
+    char getMinValue(int& tupleId) const;
+    char getMinValueInArray() const;
+    DataArrayInt *findIdsInRange(char vmin, char vmax) const;
+    static DataArrayChar *Aggregate(const DataArrayChar *a1, const DataArrayChar *a2);
+    static DataArrayChar *Meld(const DataArrayChar *a1, const DataArrayChar *a2);
     %extend
     {
-      int __len__() const throw(INTERP_KERNEL::Exception)
+      int __len__() const
       {
         if(self->isAllocated())
           {
@@ -4693,7 +4855,7 @@ namespace MEDCoupling
           }
       }
       
-      PyObject *isEqualIfNotWhy(const DataArrayChar& other) const throw(INTERP_KERNEL::Exception)
+      PyObject *isEqualIfNotWhy(const DataArrayChar& other) const
       {
         std::string ret1;
         bool ret0=self->isEqualIfNotWhy(other,ret1);
@@ -4705,7 +4867,7 @@ namespace MEDCoupling
         return ret;
       }
       
-      DataArrayChar *renumber(PyObject *li) throw(INTERP_KERNEL::Exception)
+      DataArrayChar *renumber(PyObject *li)
       {
         void *da=0;
         int res1=SWIG_ConvertPtr(li,&da,SWIGTYPE_p_MEDCoupling__DataArrayInt, 0 |  0 );
@@ -4734,7 +4896,7 @@ namespace MEDCoupling
           }
       }
       
-      DataArrayChar *renumberR(PyObject *li) throw(INTERP_KERNEL::Exception)
+      DataArrayChar *renumberR(PyObject *li)
       {
         void *da=0;
         int res1=SWIG_ConvertPtr(li,&da,SWIGTYPE_p_MEDCoupling__DataArrayInt, 0 |  0 );
@@ -4763,7 +4925,7 @@ namespace MEDCoupling
           }
       }
       
-      DataArrayChar *renumberAndReduce(PyObject *li, int newNbOfTuple) throw(INTERP_KERNEL::Exception)
+      DataArrayChar *renumberAndReduce(PyObject *li, int newNbOfTuple)
       {
         void *da=0;
         int res1=SWIG_ConvertPtr(li,&da,SWIGTYPE_p_MEDCoupling__DataArrayInt, 0 |  0 );
@@ -4792,14 +4954,14 @@ namespace MEDCoupling
           }
       }
       
-      static DataArrayChar *Aggregate(PyObject *dachs) throw(INTERP_KERNEL::Exception)
+      static DataArrayChar *Aggregate(PyObject *dachs)
       {
         std::vector<const MEDCoupling::DataArrayChar *> tmp;
         convertFromPyObjVectorOfObj<const MEDCoupling::DataArrayChar *>(dachs,SWIGTYPE_p_MEDCoupling__DataArrayChar,"DataArrayChar",tmp);
         return DataArrayChar::Aggregate(tmp);
       }
       
-      static DataArrayChar *Meld(PyObject *dachs) throw(INTERP_KERNEL::Exception)
+      static DataArrayChar *Meld(PyObject *dachs)
       {
         std::vector<const MEDCoupling::DataArrayChar *> tmp;
         convertFromPyObjVectorOfObj<const MEDCoupling::DataArrayChar *>(dachs,SWIGTYPE_p_MEDCoupling__DataArrayChar,"DataArrayChar",tmp);
@@ -4814,17 +4976,17 @@ namespace MEDCoupling
   {
   public:
     static DataArrayByte *New();
-    DataArrayByteIterator *iterator() throw(INTERP_KERNEL::Exception);
-    DataArrayByte *performCopyOrIncrRef(bool deepCopy) const throw(INTERP_KERNEL::Exception);
-    char byteValue() const throw(INTERP_KERNEL::Exception);
+    DataArrayByteIterator *iterator();
+    DataArrayByte *performCopyOrIncrRef(bool deepCopy) const;
+    char byteValue() const;
     %extend
     {
-      DataArrayByte() throw(INTERP_KERNEL::Exception)
+      DataArrayByte()
         {
           return DataArrayByte::New();
         }
 
-      static DataArrayByte *New(PyObject *elt0, PyObject *nbOfTuples=0, PyObject *nbOfComp=0) throw(INTERP_KERNEL::Exception)
+      static DataArrayByte *New(PyObject *elt0, PyObject *nbOfTuples=0, PyObject *nbOfComp=0)
       {
         const char *msg="MEDCoupling::DataArrayByte::New : Available API are : \n-DataArrayByte.New()\n--DataArrayByte.New([1,3,4])\n-DataArrayByte.New([1,3,4],3)\n-DataArrayByte.New([1,3,4,5],2,2)\n-DataArrayByte.New(5)\n-DataArrayByte.New(5,2) !";
         if(PyList_Check(elt0) || PyTuple_Check(elt0))
@@ -4913,44 +5075,44 @@ namespace MEDCoupling
           throw INTERP_KERNEL::Exception(msg);
       }
 
-      DataArrayByte(PyObject *elt0, PyObject *nbOfTuples=0, PyObject *nbOfComp=0) throw(INTERP_KERNEL::Exception)
+      DataArrayByte(PyObject *elt0, PyObject *nbOfTuples=0, PyObject *nbOfComp=0)
         {
           return MEDCoupling_DataArrayByte_New__SWIG_1(elt0,nbOfTuples,nbOfComp);
         }
    
-      std::string __repr__() const throw(INTERP_KERNEL::Exception)
+      std::string __repr__() const
       {
         std::ostringstream oss;
         self->reprQuickOverview(oss);
         return oss.str();
       }
   
-      int __int__() const throw(INTERP_KERNEL::Exception)
+      int __int__() const
       {
         return (int) self->byteValue();
       }
 
-      DataArrayByteIterator *__iter__() throw(INTERP_KERNEL::Exception)
+      DataArrayByteIterator *__iter__()
       {
         return self->iterator();
       }
 
-      int getIJ(int tupleId, int compoId) const throw(INTERP_KERNEL::Exception)
+      int getIJ(int tupleId, int compoId) const
       {
         return (int)self->getIJ(tupleId,compoId);
       }
       
-      int getIJSafe(int tupleId, int compoId) const throw(INTERP_KERNEL::Exception)
+      int getIJSafe(int tupleId, int compoId) const
       {
         return (int)self->getIJSafe(tupleId,compoId);
       }
 
-      std::string __str__() const throw(INTERP_KERNEL::Exception)
+      std::string __str__() const
       {
         return self->repr();
       }
 
-      PyObject *toStrList() const throw(INTERP_KERNEL::Exception)
+      PyObject *toStrList() const
       {
         const char *vals=self->getConstPointer();
         int nbOfComp=self->getNumberOfComponents();
@@ -4958,7 +5120,7 @@ namespace MEDCoupling
         return convertCharArrToPyListOfTuple(vals,nbOfComp,nbOfTuples);
       }
    
-      bool presenceOfTuple(PyObject *tupl) const throw(INTERP_KERNEL::Exception)
+      bool presenceOfTuple(PyObject *tupl) const
       {
         int sz=-1,sw=-1;
         int ival=-1; std::vector<int> ivval;
@@ -4968,7 +5130,7 @@ namespace MEDCoupling
         return self->presenceOfTuple(vals);
       }
 
-      bool presenceOfValue(PyObject *vals) const throw(INTERP_KERNEL::Exception)
+      bool presenceOfValue(PyObject *vals) const
       {
         int sz=-1,sw=-1;
         int ival=-1; std::vector<int> ivval;
@@ -4978,7 +5140,7 @@ namespace MEDCoupling
         return self->presenceOfValue(vals2);
       }
 
-      int findIdFirstEqual(PyObject *vals) const throw(INTERP_KERNEL::Exception)
+      int findIdFirstEqual(PyObject *vals) const
       {
         int sz=-1,sw=-1;
         int ival=-1; std::vector<int> ivval;
@@ -4988,7 +5150,7 @@ namespace MEDCoupling
         return self->findIdFirstEqual(vals2);
       }
 
-      int findIdFirstEqualTuple(PyObject *tupl) const throw(INTERP_KERNEL::Exception)
+      int findIdFirstEqualTuple(PyObject *tupl) const
       {
         int sz=-1,sw=-1;
         int ival=-1; std::vector<int> ivval;
@@ -4998,7 +5160,7 @@ namespace MEDCoupling
         return self->findIdFirstEqualTuple(vals);
       }
 
-      int findIdSequence(PyObject *strOrListOfInt) const throw(INTERP_KERNEL::Exception)
+      int findIdSequence(PyObject *strOrListOfInt) const
       {
         int sz=-1,sw=-1;
         int ival=-1; std::vector<int> ivval;
@@ -5008,7 +5170,7 @@ namespace MEDCoupling
         return self->findIdSequence(vals);
       }
 
-      PyObject *getTuple(int tupleId) throw(INTERP_KERNEL::Exception)
+      PyObject *getTuple(int tupleId)
       {
         int sz=self->getNumberOfComponents();
         INTERP_KERNEL::AutoPtr<char> tmp=new char[sz];
@@ -5018,7 +5180,7 @@ namespace MEDCoupling
         return ret;
       }
 
-      PyObject *getMaxValue() const throw(INTERP_KERNEL::Exception)
+      PyObject *getMaxValue() const
       {
         int tmp;
         int r1=(int)self->getMaxValue(tmp);
@@ -5028,7 +5190,7 @@ namespace MEDCoupling
         return ret;
       }
 
-      PyObject *getMinValue() const throw(INTERP_KERNEL::Exception)
+      PyObject *getMinValue() const
       {
         int tmp;
         int r1=(int)self->getMinValue(tmp);
@@ -5038,7 +5200,7 @@ namespace MEDCoupling
         return ret;
       }
 
-      int index(PyObject *obj) const throw(INTERP_KERNEL::Exception)
+      int index(PyObject *obj) const
       {
         int nbOfCompo=self->getNumberOfComponents();
         switch(nbOfCompo)
@@ -5058,7 +5220,7 @@ namespace MEDCoupling
           }
       }
 
-      bool __contains__(PyObject *obj) const throw(INTERP_KERNEL::Exception)
+      bool __contains__(PyObject *obj) const
       {
         int nbOfCompo=self->getNumberOfComponents();
         switch(nbOfCompo)
@@ -5081,13 +5243,13 @@ namespace MEDCoupling
       }
       
 #ifdef WITH_NUMPY
-      PyObject *toNumPyArray() throw(INTERP_KERNEL::Exception) // not const. It is not a bug !
+      PyObject *toNumPyArray() // not const. It is not a bug !
       {
         return ToNumPyArray<DataArrayByte,char>(self,NPY_INT8,"DataArrayByte");
       }
 #endif
 
-      DataArrayByte *__setitem__(PyObject *obj, PyObject *value) throw(INTERP_KERNEL::Exception)
+      DataArrayByte *__setitem__(PyObject *obj, PyObject *value)
       {
         self->checkAllocated();
         const char msg[]="Unexpected situation in __setitem__ !";
@@ -5318,21 +5480,21 @@ namespace MEDCoupling
   class DataArrayByteTuple
   {
   public:
-    std::string repr() const throw(INTERP_KERNEL::Exception);
-    DataArrayByte *buildDAByte(int nbOfTuples, int nbOfCompo) const throw(INTERP_KERNEL::Exception);
+    std::string repr() const;
+    DataArrayByte *buildDAByte(int nbOfTuples, int nbOfCompo) const;
     %extend
     {
-      std::string __str__() const throw(INTERP_KERNEL::Exception)
+      std::string __str__() const
       {
         return self->repr();
       }
       
-      char __int__() const throw(INTERP_KERNEL::Exception)
+      char __int__() const
       {
         return self->byteValue();
       }
       
-      DataArrayByte *buildDAByte() throw(INTERP_KERNEL::Exception)
+      DataArrayByte *buildDAByte()
       {
         return self->buildDAByte(1,self->getNumberOfCompo());
       }
@@ -5345,17 +5507,17 @@ namespace MEDCoupling
   {
   public:
     static DataArrayAsciiChar *New();
-    DataArrayAsciiCharIterator *iterator() throw(INTERP_KERNEL::Exception);
-    DataArrayAsciiChar *performCopyOrIncrRef(bool deepCopy) const throw(INTERP_KERNEL::Exception);
-    char asciiCharValue() const throw(INTERP_KERNEL::Exception);
+    DataArrayAsciiCharIterator *iterator();
+    DataArrayAsciiChar *performCopyOrIncrRef(bool deepCopy) const;
+    char asciiCharValue() const;
     %extend
     {
-      DataArrayAsciiChar() throw(INTERP_KERNEL::Exception)
+      DataArrayAsciiChar()
         {
           return DataArrayAsciiChar::New();
         }
 
-      static DataArrayAsciiChar *New(PyObject *elt0, PyObject *nbOfTuples=0, PyObject *nbOfComp=0) throw(INTERP_KERNEL::Exception)
+      static DataArrayAsciiChar *New(PyObject *elt0, PyObject *nbOfTuples=0, PyObject *nbOfComp=0)
       {
         const char *msg="MEDCoupling::DataArrayAsciiChar::New : Available API are : \n-DataArrayAsciiChar.New()\n-DataArrayAsciiChar.New([1,3,4])\n-DataArrayAsciiChar.New([\"abc\",\"de\",\"fghi\"])\n-DataArrayAsciiChar.New([\"abc\",\"de\",\"fghi\"],\"t\")\n-DataArrayAsciiChar.New([1,3,4],3)\n-DataArrayAsciiChar.New([1,3,4,5],2,2)\n-DataArrayAsciiChar.New(5)\n-DataArrayAsciiChar.New(5,2) !";
         if(PyList_Check(elt0) || PyTuple_Check(elt0))
@@ -5470,43 +5632,43 @@ namespace MEDCoupling
           throw INTERP_KERNEL::Exception(msg);
       }
 
-      DataArrayAsciiChar(PyObject *elt0, PyObject *nbOfTuples=0, PyObject *nbOfComp=0) throw(INTERP_KERNEL::Exception)
+      DataArrayAsciiChar(PyObject *elt0, PyObject *nbOfTuples=0, PyObject *nbOfComp=0)
         {
           return MEDCoupling_DataArrayAsciiChar_New__SWIG_1(elt0,nbOfTuples,nbOfComp);
         }
 
-      std::string __repr__() const throw(INTERP_KERNEL::Exception)
+      std::string __repr__() const
       {
         std::ostringstream oss;
         self->reprQuickOverview(oss);
         return oss.str();
       }
 
-      DataArrayAsciiCharIterator *__iter__() throw(INTERP_KERNEL::Exception)
+      DataArrayAsciiCharIterator *__iter__()
       {
         return self->iterator();
       }
 
-      std::string getIJ(int tupleId, int compoId) const throw(INTERP_KERNEL::Exception)
+      std::string getIJ(int tupleId, int compoId) const
       {
         char tmp[2]; tmp[1]='\0';
         tmp[0]=self->getIJ(tupleId,compoId);
         return std::string(tmp);
       }
    
-      std::string getIJSafe(int tupleId, int compoId) const throw(INTERP_KERNEL::Exception)
+      std::string getIJSafe(int tupleId, int compoId) const
       {
         char tmp[2]; tmp[1]='\0';
         tmp[0]=self->getIJSafe(tupleId,compoId);
         return std::string(tmp);
       }
 
-      std::string __str__() const throw(INTERP_KERNEL::Exception)
+      std::string __str__() const
       {
         return self->repr();
       }
 
-      PyObject *toStrList() const throw(INTERP_KERNEL::Exception)
+      PyObject *toStrList() const
       {
         const char *vals=self->getConstPointer();
         int nbOfComp=self->getNumberOfComponents();
@@ -5514,7 +5676,7 @@ namespace MEDCoupling
         return convertCharArrToPyListOfTuple(vals,nbOfComp,nbOfTuples);
       }
 
-      bool presenceOfTuple(PyObject *tupl) const throw(INTERP_KERNEL::Exception)
+      bool presenceOfTuple(PyObject *tupl) const
       {
         if(PyString_Check(tupl))
           {
@@ -5536,7 +5698,7 @@ namespace MEDCoupling
           throw INTERP_KERNEL::Exception("DataArrayAsciiChar::presenceOfTuple : only strings in input supported !");
       }
    
-      bool presenceOfValue(PyObject *vals) const throw(INTERP_KERNEL::Exception)
+      bool presenceOfValue(PyObject *vals) const
       {
         if(PyString_Check(vals))
           {
@@ -5558,7 +5720,7 @@ namespace MEDCoupling
           throw INTERP_KERNEL::Exception("DataArrayAsciiChar::presenceOfValue : only strings in input supported !");
       }
 
-      int findIdFirstEqual(PyObject *vals) const throw(INTERP_KERNEL::Exception)
+      int findIdFirstEqual(PyObject *vals) const
       {
         if(PyString_Check(vals))
           {
@@ -5580,7 +5742,7 @@ namespace MEDCoupling
           throw INTERP_KERNEL::Exception("DataArrayAsciiChar::findIdFirstEqual : only strings in input supported !");
       }
 
-      int findIdFirstEqualTuple(PyObject *tupl) const throw(INTERP_KERNEL::Exception)
+      int findIdFirstEqualTuple(PyObject *tupl) const
       {
         if(PyString_Check(tupl))
           {
@@ -5602,7 +5764,7 @@ namespace MEDCoupling
           throw INTERP_KERNEL::Exception("DataArrayAsciiChar::findIdFirstEqualTuple : only strings in input supported !");
       }
 
-      int findIdSequence(PyObject *strOrListOfInt) const throw(INTERP_KERNEL::Exception)
+      int findIdSequence(PyObject *strOrListOfInt) const
       {
         if(PyString_Check(strOrListOfInt))
           {
@@ -5624,7 +5786,7 @@ namespace MEDCoupling
           throw INTERP_KERNEL::Exception("DataArrayAsciiChar::search : only strings in input supported !");
       }
    
-      PyObject *getTuple(int tupleId) const throw(INTERP_KERNEL::Exception)
+      PyObject *getTuple(int tupleId) const
       {
         int sz=self->getNumberOfComponents();
         INTERP_KERNEL::AutoPtr<char> tmp=new char[sz+1]; tmp[sz]='\0';
@@ -5632,7 +5794,7 @@ namespace MEDCoupling
         return PyString_FromString(tmp);
       }
 
-      PyObject *getMaxValue() const throw(INTERP_KERNEL::Exception)
+      PyObject *getMaxValue() const
       {
         int tmp;
         char tmp2[2]; tmp2[1]='\0';
@@ -5643,7 +5805,7 @@ namespace MEDCoupling
         return ret;
       }
 
-      PyObject *getMinValue() const throw(INTERP_KERNEL::Exception)
+      PyObject *getMinValue() const
       {
         int tmp;
         char tmp2[2]; tmp2[1]='\0';
@@ -5654,7 +5816,7 @@ namespace MEDCoupling
         return ret;
       }
 
-      int index(PyObject *obj) const throw(INTERP_KERNEL::Exception)
+      int index(PyObject *obj) const
       {
         int nbOfCompo=self->getNumberOfComponents();
         switch(nbOfCompo)
@@ -5689,7 +5851,7 @@ namespace MEDCoupling
           }
       }
 
-      bool __contains__(PyObject *obj) const throw(INTERP_KERNEL::Exception)
+      bool __contains__(PyObject *obj) const
       {
         int nbOfCompo=self->getNumberOfComponents();
         switch(nbOfCompo)
@@ -5726,7 +5888,7 @@ namespace MEDCoupling
           }
       }
 
-      PyObject *__getitem__(PyObject *obj) const throw(INTERP_KERNEL::Exception)
+      PyObject *__getitem__(PyObject *obj) const
       {
         int sw,iTypppArr;
         std::vector<int> stdvecTyyppArr;
@@ -5748,7 +5910,7 @@ namespace MEDCoupling
           }
       }
 
-      DataArrayAsciiChar *__setitem__(PyObject *obj, PyObject *value) throw(INTERP_KERNEL::Exception)
+      DataArrayAsciiChar *__setitem__(PyObject *obj, PyObject *value)
       {
         static const char msg[]="DataArrayAsciiChar::__setitem__ : supporting int, list of int, tuple of int, DataArrayInt and slice in input, and 4 types accepted in value : string, list or tuple of strings having same size, not null DataArrayChar instance.";
         int sw1,iTypppArr;
@@ -5934,16 +6096,16 @@ namespace MEDCoupling
   class DataArrayAsciiCharTuple
   {
   public:
-    int getNumberOfCompo() const throw(INTERP_KERNEL::Exception);
-    DataArrayAsciiChar *buildDAAsciiChar(int nbOfTuples, int nbOfCompo) const throw(INTERP_KERNEL::Exception);
+    int getNumberOfCompo() const;
+    DataArrayAsciiChar *buildDAAsciiChar(int nbOfTuples, int nbOfCompo) const;
     %extend
     {
-      std::string __str__() const throw(INTERP_KERNEL::Exception)
+      std::string __str__() const
       {
         return self->repr();
       }
       
-      DataArrayAsciiChar *buildDAAsciiChar() throw(INTERP_KERNEL::Exception)
+      DataArrayAsciiChar *buildDAAsciiChar()
       {
         return self->buildDAAsciiChar(1,self->getNumberOfCompo());
       }
index 0cfc225e363278a3e5f6323a0eafca90d5bfb6f3..a76432a4a1e8167d838b4a6ce45c2fa4241c3fa7 100644 (file)
@@ -1,5 +1,5 @@
 #  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+# Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -23,7 +23,7 @@ import sys
 if sys.platform == "win32":
     from MEDCouplingCompat import *
 else:
-    from MEDCoupling import *
+    from medcoupling import *
 
 if MEDCouplingHasNumPyBindings():
     from numpy import *
@@ -1062,6 +1062,22 @@ class MEDCouplingNumPyTest(unittest.TestCase):
         self.assertTrue(not b.flags["OWNDATA"])
         pass
 
+    @unittest.skipUnless(MEDCouplingHasNumPyBindings(),"requires numpy")
+    def test41(self):
+        """ This non regression test is focused on a numpy subarray of a bigger numpy array. Typically a 1D array coming from a 2D array. When medcoupling takes the ownership, medcoupling must store an offset to deallocate correctly the pointer. The pointer of medcoupling array is NOT the pointer to be transmited to free. The offset is typically the distance between the start of the main 2D array and the start of 1D array medcouplingized."""
+        import numpy as np
+        array = np.array([[1,2,3,10],[4,5,6,20],[7,8,9,30]],dtype=np.float64) # create a 2D array 
+        b = array[2] # b data pointer starts at array+2*4*sizeof(float64) so offset is expected to be equal to -2*4*sizeof(float64)=-64
+        self.assertTrue(array.flags["OWNDATA"])
+        self.assertTrue(not b.flags["OWNDATA"])
+        d=DataArrayDouble(b)
+        self.assertTrue(not array.flags["OWNDATA"])
+        self.assertTrue(not b.flags["OWNDATA"])
+        del b ; gc.collect()
+        del array ; gc.collect()
+        del d ; gc.collect() # important : destroy d after b and array to be sure to let the ownership to d.
+        pass
+
     def setUp(self):
         pass
     pass
index a8f7b3cbb801232ccff37e70eb0496fb3c1ce825..8ce564d4367686007a356b73ff1863f556b3aee6 100644 (file)
@@ -1,5 +1,5 @@
 #  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+# Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -23,7 +23,7 @@ import sys
 if sys.platform == "win32":
     from MEDCouplingCompat import *
 else:
-    from MEDCoupling import *
+    from medcoupling import *
 from MEDCouplingDataForTest import MEDCouplingDataForTest
 
 if MEDCouplingHasNumPyBindings():
@@ -72,7 +72,7 @@ class MEDCouplingPickleTest(unittest.TestCase):
         xx=pickle.loads(pickled)
         self.assertTrue(xx.isEqual(x))
         pass
-    
+
     @unittest.skipUnless(MEDCouplingHasNumPyBindings(),"requires numpy")
     def test3(self):
         """ Test of a MEDCouplingUMesh pickeling."""
@@ -119,7 +119,7 @@ class MEDCouplingPickleTest(unittest.TestCase):
         self.assertTrue(m2.isEqual(m,1e-16))
         self.assertTrue(m2.getCoordsAt(0).isEqual(arrX,1e-16))
         pass
-    
+
     @unittest.skipUnless(MEDCouplingHasNumPyBindings(),"requires numpy")
     def test6(self):
         """ Test of a MEDCoupling1SGTUMesh pickeling."""
@@ -131,7 +131,7 @@ class MEDCouplingPickleTest(unittest.TestCase):
         m2=pickle.loads(st)
         self.assertTrue(m2.isEqual(m,1e-16))
         pass
-    
+
     @unittest.skipUnless(MEDCouplingHasNumPyBindings(),"requires numpy")
     def test7(self):
         """ Test of a MEDCoupling1DGTUMesh pickeling."""
@@ -348,7 +348,7 @@ class MEDCouplingPickleTest(unittest.TestCase):
         self.assertTrue(f2.isEqual(f,1e-16,0))
         self.assertTrue(f2.getMesh().isEqual(f.getMesh(),1e-16))
         pass
-    
+
     @unittest.skipUnless(MEDCouplingHasNumPyBindings(),"requires numpy")
     def test17(self):
         """  Test of MEDCouplingFieldInt lying on MEDCouplingCMesh pickeling. """
index 031f0c380697c1740d9e5cb6a48b5eada59e6436..665c95f50a60c9ca66f3e2e67353e37a599f2849 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -36,6 +36,21 @@ namespace INTERP_KERNEL
   };
 }
 
+/*
+ * ABN: Install default exception handler: this catches all INTERP_KERNEL::Exception (even when no
+ * except declaration was added to the function declaration) and propagates it to the Python level.
+ */
+%exception {
+  try {
+    $action
+  }
+  catch (INTERP_KERNEL::Exception& _e) {
+    // Reraise with SWIG_Python_Raise
+    SWIG_Python_Raise(SWIG_NewPointerObj((new INTERP_KERNEL::Exception(static_cast< const INTERP_KERNEL::Exception& >(_e))),SWIGTYPE_p_INTERP_KERNEL__Exception,SWIG_POINTER_OWN), "INTERP_KERNEL::Exception", SWIGTYPE_p_INTERP_KERNEL__Exception);
+    SWIG_fail;
+  }
+}
+
 namespace MEDCoupling
 {
   class TimeLabel
@@ -51,15 +66,16 @@ namespace MEDCoupling
 
 namespace MEDCoupling
 {
-  typedef enum
+  enum class DeallocType
     {
       C_DEALLOC = 2,
       CPP_DEALLOC = 3
-    } DeallocType;
+    };
 
   const char *MEDCouplingVersionStr();
   int MEDCouplingVersion();
   int MEDCouplingSizeOfVoidStar();
+  int MEDCouplingSizeOfIDs();
   bool MEDCouplingByteOrder();
   const char *MEDCouplingByteOrderStr();
   bool IsCXX11Compiled();
@@ -67,14 +83,14 @@ namespace MEDCoupling
   class BigMemoryObject
   {
   public:
-    std::size_t getHeapMemorySize() const throw(INTERP_KERNEL::Exception);
-    std::string getHeapMemorySizeStr() const throw(INTERP_KERNEL::Exception);
-    bool isObjectInTheProgeny(const BigMemoryObject *obj) const throw(INTERP_KERNEL::Exception);
-    virtual std::size_t getHeapMemorySizeWithoutChildren() const throw(INTERP_KERNEL::Exception);
+    std::size_t getHeapMemorySize() const;
+    std::string getHeapMemorySizeStr() const;
+    bool isObjectInTheProgeny(const BigMemoryObject *obj) const;
+    virtual std::size_t getHeapMemorySizeWithoutChildren() const;
     virtual ~BigMemoryObject();
     %extend
     {
-      virtual PyObject *getDirectChildren() const throw(INTERP_KERNEL::Exception)
+      virtual PyObject *getDirectChildren() const
       {
         std::vector<const BigMemoryObject *> c(self->getDirectChildren());
         PyObject *ret(PyList_New(c.size()));
@@ -83,7 +99,7 @@ namespace MEDCoupling
         return ret;
       }
 
-      PyObject *getAllTheProgeny() const throw(INTERP_KERNEL::Exception)
+      PyObject *getAllTheProgeny() const
       {
         std::vector<const BigMemoryObject *> c(self->getAllTheProgeny());
         PyObject *ret(PyList_New(c.size()));
@@ -92,7 +108,7 @@ namespace MEDCoupling
         return ret;
       }
 
-      static std::size_t GetHeapMemorySizeOfObjs(PyObject *objs) throw(INTERP_KERNEL::Exception)
+      static std::size_t GetHeapMemorySizeOfObjs(PyObject *objs)
       {
         std::vector<const BigMemoryObject *> cppObjs;
         convertFromPyObjVectorOfObj<const MEDCoupling::BigMemoryObject *>(objs,SWIGTYPE_p_MEDCoupling__BigMemoryObject,"BigMemoryObject",cppObjs);
@@ -120,14 +136,14 @@ namespace MEDCoupling
   class GlobalDict
   {
   public:
-    static GlobalDict *GetInstance() throw(INTERP_KERNEL::Exception);
-    bool hasKey(const std::string& key) const throw(INTERP_KERNEL::Exception);
-    std::string value(const std::string& key) const throw(INTERP_KERNEL::Exception);
-    std::vector<std::string> keys() const throw(INTERP_KERNEL::Exception);
-    void erase(const std::string& key) throw(INTERP_KERNEL::Exception);
-    void clear() throw(INTERP_KERNEL::Exception);
-    void setKeyValue(const std::string& key, const std::string& value) throw(INTERP_KERNEL::Exception);
-    void setKeyValueForce(const std::string& key, const std::string& value) throw(INTERP_KERNEL::Exception);
+    static GlobalDict *GetInstance();
+    bool hasKey(const std::string& key) const;
+    std::string value(const std::string& key) const;
+    std::vector<std::string> keys() const;
+    void erase(const std::string& key);
+    void clear();
+    void setKeyValue(const std::string& key, const std::string& value);
+    void setKeyValueForce(const std::string& key, const std::string& value);
   private:
     GlobalDict();
   public:
@@ -172,7 +188,7 @@ namespace MEDCoupling
 #endif
   }
 
-  std::string MEDCouplingCompletionScript() throw(INTERP_KERNEL::Exception)
+  std::string MEDCouplingCompletionScript()
   {
     static const char script[]="import rlcompleter,readline\nreadline.parse_and_bind('tab:complete')";
     std::ostringstream oss; oss << "MEDCouplingCompletionScript : error when trying to activate completion ! readline not present ?\nScript is :\n" << script;
index 5bd23b19833d51212f038df76dc4dc3ed93fb58b..5b8e041ed1287401654d25bdbc2fb5f37a57534b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 7f3ce423991857c16baca20c425feb2a7966266b..1a7364d69143bde0f050dcfab50debca8618b231 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2017  CEA/DEN, EDF R&D
+// Copyright (C) 2017-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -47,27 +47,27 @@ namespace MEDCoupling
     public:
       MEDCouplingRemapper();
       ~MEDCouplingRemapper();
-      int prepare(const MEDCouplingMesh *srcMesh, const MEDCouplingMesh *targetMesh, const std::string& method) throw(INTERP_KERNEL::Exception);
-      int prepareEx(const MEDCouplingFieldTemplate *src, const MEDCouplingFieldTemplate *target) throw(INTERP_KERNEL::Exception);
-      void transfer(const MEDCouplingFieldDouble *srcField, MEDCouplingFieldDouble *targetField, double dftValue) throw(INTERP_KERNEL::Exception);
-      void partialTransfer(const MEDCouplingFieldDouble *srcField, MEDCouplingFieldDouble *targetField) throw(INTERP_KERNEL::Exception);
-      void reverseTransfer(MEDCouplingFieldDouble *srcField, const MEDCouplingFieldDouble *targetField, double dftValue) throw(INTERP_KERNEL::Exception);
-      MEDCouplingFieldDouble *transferField(const MEDCouplingFieldDouble *srcField, double dftValue) throw(INTERP_KERNEL::Exception);
-      MEDCouplingFieldDouble *reverseTransferField(const MEDCouplingFieldDouble *targetField, double dftValue) throw(INTERP_KERNEL::Exception);
-      bool setOptionInt(const std::string& key, int value) throw(INTERP_KERNEL::Exception);
-      bool setOptionDouble(const std::string& key, double value) throw(INTERP_KERNEL::Exception);
-      bool setOptionString(const std::string& key, const std::string& value) throw(INTERP_KERNEL::Exception);
-      int getInterpolationMatrixPolicy() const throw(INTERP_KERNEL::Exception);
-      void setInterpolationMatrixPolicy(int newInterpMatPol) throw(INTERP_KERNEL::Exception);
+      int prepare(const MEDCouplingMesh *srcMesh, const MEDCouplingMesh *targetMesh, const std::string& method);
+      int prepareEx(const MEDCouplingFieldTemplate *src, const MEDCouplingFieldTemplate *target);
+      void transfer(const MEDCouplingFieldDouble *srcField, MEDCouplingFieldDouble *targetField, double dftValue);
+      void partialTransfer(const MEDCouplingFieldDouble *srcField, MEDCouplingFieldDouble *targetField);
+      void reverseTransfer(MEDCouplingFieldDouble *srcField, const MEDCouplingFieldDouble *targetField, double dftValue);
+      MEDCouplingFieldDouble *transferField(const MEDCouplingFieldDouble *srcField, double dftValue);
+      MEDCouplingFieldDouble *reverseTransferField(const MEDCouplingFieldDouble *targetField, double dftValue);
+      bool setOptionInt(const std::string& key, int value);
+      bool setOptionDouble(const std::string& key, double value);
+      bool setOptionString(const std::string& key, const std::string& value);
+      int getInterpolationMatrixPolicy() const;
+      void setInterpolationMatrixPolicy(int newInterpMatPol);
       //
-      int nullifiedTinyCoeffInCrudeMatrixAbs(double maxValAbs) throw(INTERP_KERNEL::Exception);
-      int nullifiedTinyCoeffInCrudeMatrix(double scaleFactor) throw(INTERP_KERNEL::Exception);
-      double getMaxValueInCrudeMatrix() const throw(INTERP_KERNEL::Exception);
-      int getNumberOfColsOfMatrix() const throw(INTERP_KERNEL::Exception);
-      static std::string BuildMethodFrom(const std::string& meth1, const std::string& meth2) throw(INTERP_KERNEL::Exception);
+      int nullifiedTinyCoeffInCrudeMatrixAbs(double maxValAbs);
+      int nullifiedTinyCoeffInCrudeMatrix(double scaleFactor);
+      double getMaxValueInCrudeMatrix() const;
+      int getNumberOfColsOfMatrix() const;
+      static std::string BuildMethodFrom(const std::string& meth1, const std::string& meth2);
       %extend
          {
-           PyObject *getCrudeMatrix() const throw(INTERP_KERNEL::Exception)
+           PyObject *getCrudeMatrix() const
            {
              const std::vector<std::map<int,double> >& m=self->getCrudeMatrix();
              std::size_t sz=m.size();
@@ -83,12 +83,12 @@ namespace MEDCoupling
              return ret;
            }
 #if defined(WITH_NUMPY) && defined(WITH_SCIPY)
-           PyObject *getCrudeCSRMatrix() const throw(INTERP_KERNEL::Exception)
+           PyObject *getCrudeCSRMatrix() const
            {
              return ToCSRMatrix(self->getCrudeMatrix(),self->getNumberOfColsOfMatrix());
            }
 #endif
-           void setCrudeMatrix(const MEDCouplingMesh *srcMesh, const MEDCouplingMesh *targetMesh, const std::string& method, PyObject *m) throw(INTERP_KERNEL::Exception)
+           void setCrudeMatrix(const MEDCouplingMesh *srcMesh, const MEDCouplingMesh *targetMesh, const std::string& method, PyObject *m)
            {
              std::vector<std::map<int,double> > mCpp;
              if(isCSRMatrix(m))
@@ -111,7 +111,7 @@ namespace MEDCoupling
              self->setCrudeMatrix(srcMesh,targetMesh,method,mCpp);
            }
 
-           void setCrudeMatrixEx(const MEDCouplingFieldTemplate *src, const MEDCouplingFieldTemplate *target, PyObject *m) throw(INTERP_KERNEL::Exception)
+           void setCrudeMatrixEx(const MEDCouplingFieldTemplate *src, const MEDCouplingFieldTemplate *target, PyObject *m)
            {
              std::vector<std::map<int,double> > mCpp;
              convertToVectMapIntDouble(m,mCpp);
index d6481d805b7ed44d585071c8cec6157e94e673e9..e6aedde615fbfcc1cbbc554f4e30aeff62ebd260 100644 (file)
@@ -1,5 +1,5 @@
 #  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+# Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -998,8 +998,10 @@ class MEDCouplingBasicsTest(unittest.TestCase):
         self.assertEqual(rem.getCrudeMatrix(),[{0: 1.0}, {1: 1.0}])
         rem2=MEDCouplingRemapper()
         rem2.setIntersectionType(PointLocator)
-        rem2.prepare(mt,ms,"P0P0") # reverse mt<->ms
-        self.assertEqual(rem2.getCrudeMatrix(),[{0: 1.0}, {1: 1.0}])
+        ##
+        # 2D to 3D with point locator does not make sense:
+        ##
+        self.assertRaises(InterpKernelException, rem2.prepare,mt,ms,"P0P0")
         pass
 
     def test2D1Dand1D2DPointLocator1(self):
@@ -1192,7 +1194,7 @@ class MEDCouplingBasicsTest(unittest.TestCase):
         rem.setIntersectionType(PointLocator)
         self.assertEqual(rem.prepare(src,trg,"P1P1"),1)
         mat=rem.getCrudeCSRMatrix()
-        row=array([2,2, 3,3, 0,0, 1,1]) # here ref to target point 3 
+        row=array([2,2, 3,3, 0,0, 1,1]) # here ref to target point 3
         col=array([1,2, 1,2, 1,2, 1,2])
         data=array([0.1,0.9, 0.3,0.7, 0.5,0.5, 0.8,0.2])
         mExp2=csr_matrix((data,(row,col)),shape=(4,3))
@@ -1299,7 +1301,7 @@ class MEDCouplingBasicsTest(unittest.TestCase):
         ref=float(m.getMeasureField(True).getArray())
         self.assertTrue(abs(res-ref)/ref<1e-12)
         pass
-        
+
     def checkMatrix(self,mat1,mat2,nbCols,eps):
         self.assertEqual(len(mat1),len(mat2))
         for i in range(len(mat1)):
index e1455cfde442bf40a8907cf17f72eb95a0a0844e..16dc0a7b11c474f595f1ee50b92f3a0efd778217 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -23,104 +23,104 @@ namespace MEDCoupling
   class MEDCouplingTimeDiscretization : public TimeLabel, public BigMemoryObject
   {
   public:
-    static MEDCouplingTimeDiscretization *New(TypeOfTimeDiscretization type) throw(INTERP_KERNEL::Exception);
+    static MEDCouplingTimeDiscretization *New(TypeOfTimeDiscretization type);
     void setTimeUnit(const char *unit);
     const char *getTimeUnit() const;
-    virtual void copyTinyAttrFrom(const MEDCouplingTimeDiscretization& other) throw(INTERP_KERNEL::Exception);
-    virtual void copyTinyStringsFrom(const MEDCouplingTimeDiscretization& other) throw(INTERP_KERNEL::Exception);
-    virtual void checkConsistencyLight() const throw(INTERP_KERNEL::Exception);
-    virtual bool areCompatible(const MEDCouplingTimeDiscretization *other) const throw(INTERP_KERNEL::Exception);
-    virtual bool areStrictlyCompatible(const MEDCouplingTimeDiscretization *other, std::string& reason) const throw(INTERP_KERNEL::Exception);
-    virtual bool areStrictlyCompatibleForMul(const MEDCouplingTimeDiscretization *other) const throw(INTERP_KERNEL::Exception);
-    virtual bool areStrictlyCompatibleForDiv(const MEDCouplingTimeDiscretization *other) const throw(INTERP_KERNEL::Exception);
-    virtual bool areCompatibleForMeld(const MEDCouplingTimeDiscretization *other) const throw(INTERP_KERNEL::Exception);
-    virtual bool isEqualIfNotWhy(const MEDCouplingTimeDiscretization *other, double prec, std::string& reason) const throw(INTERP_KERNEL::Exception);
-    virtual bool isEqual(const MEDCouplingTimeDiscretization *other, double prec) const throw(INTERP_KERNEL::Exception);
-    virtual bool isEqualWithoutConsideringStr(const MEDCouplingTimeDiscretization *other, double prec) const throw(INTERP_KERNEL::Exception);
-    virtual MEDCouplingTimeDiscretization *buildNewTimeReprFromThis(TypeOfTimeDiscretization type, bool deepCopy) const throw(INTERP_KERNEL::Exception);
-    virtual std::string getStringRepr() const throw(INTERP_KERNEL::Exception);
-    virtual TypeOfTimeDiscretization getEnum() const throw(INTERP_KERNEL::Exception);
-    virtual void synchronizeTimeWith(const MEDCouplingMesh *mesh) throw(INTERP_KERNEL::Exception);
-    virtual MEDCouplingTimeDiscretization *aggregate(const MEDCouplingTimeDiscretization *other) const throw(INTERP_KERNEL::Exception);
-    virtual MEDCouplingTimeDiscretization *aggregate(const std::vector<const MEDCouplingTimeDiscretization *>& other) const throw(INTERP_KERNEL::Exception);
-    virtual MEDCouplingTimeDiscretization *meld(const MEDCouplingTimeDiscretization *other) const throw(INTERP_KERNEL::Exception);
-    virtual MEDCouplingTimeDiscretization *dot(const MEDCouplingTimeDiscretization *other) const throw(INTERP_KERNEL::Exception);
-    virtual MEDCouplingTimeDiscretization *crossProduct(const MEDCouplingTimeDiscretization *other) const throw(INTERP_KERNEL::Exception);
-    virtual MEDCouplingTimeDiscretization *max(const MEDCouplingTimeDiscretization *other) const throw(INTERP_KERNEL::Exception);
-    virtual MEDCouplingTimeDiscretization *min(const MEDCouplingTimeDiscretization *other) const throw(INTERP_KERNEL::Exception);
-    virtual MEDCouplingTimeDiscretization *add(const MEDCouplingTimeDiscretization *other) const throw(INTERP_KERNEL::Exception);
-    virtual void addEqual(const MEDCouplingTimeDiscretization *other) throw(INTERP_KERNEL::Exception);
-    virtual MEDCouplingTimeDiscretization *substract(const MEDCouplingTimeDiscretization *other) const throw(INTERP_KERNEL::Exception);
-    virtual void substractEqual(const MEDCouplingTimeDiscretization *other) throw(INTERP_KERNEL::Exception);
-    virtual MEDCouplingTimeDiscretization *multiply(const MEDCouplingTimeDiscretization *other) const throw(INTERP_KERNEL::Exception);
-    virtual void multiplyEqual(const MEDCouplingTimeDiscretization *other) throw(INTERP_KERNEL::Exception);
-    virtual MEDCouplingTimeDiscretization *divide(const MEDCouplingTimeDiscretization *other) const throw(INTERP_KERNEL::Exception);
-    virtual void divideEqual(const MEDCouplingTimeDiscretization *other) throw(INTERP_KERNEL::Exception);
-    virtual MEDCouplingTimeDiscretization *pow(const MEDCouplingTimeDiscretization *other) const throw(INTERP_KERNEL::Exception);
-    virtual void powEqual(const MEDCouplingTimeDiscretization *other) throw(INTERP_KERNEL::Exception);
-    virtual MEDCouplingTimeDiscretization *performCopyOrIncrRef(bool deepCopy) const throw(INTERP_KERNEL::Exception);
+    virtual void copyTinyAttrFrom(const MEDCouplingTimeDiscretization& other);
+    virtual void copyTinyStringsFrom(const MEDCouplingTimeDiscretization& other);
+    virtual void checkConsistencyLight() const;
+    virtual bool areCompatible(const MEDCouplingTimeDiscretization *other) const;
+    virtual bool areStrictlyCompatible(const MEDCouplingTimeDiscretization *other, std::string& reason) const;
+    virtual bool areStrictlyCompatibleForMul(const MEDCouplingTimeDiscretization *other) const;
+    virtual bool areStrictlyCompatibleForDiv(const MEDCouplingTimeDiscretization *other) const;
+    virtual bool areCompatibleForMeld(const MEDCouplingTimeDiscretization *other) const;
+    virtual bool isEqualIfNotWhy(const MEDCouplingTimeDiscretization *other, double prec, std::string& reason) const;
+    virtual bool isEqual(const MEDCouplingTimeDiscretization *other, double prec) const;
+    virtual bool isEqualWithoutConsideringStr(const MEDCouplingTimeDiscretization *other, double prec) const;
+    virtual MEDCouplingTimeDiscretization *buildNewTimeReprFromThis(TypeOfTimeDiscretization type, bool deepCopy) const;
+    virtual std::string getStringRepr() const;
+    virtual TypeOfTimeDiscretization getEnum() const;
+    virtual void synchronizeTimeWith(const MEDCouplingMesh *mesh);
+    virtual MEDCouplingTimeDiscretization *aggregate(const MEDCouplingTimeDiscretization *other) const;
+    virtual MEDCouplingTimeDiscretization *aggregate(const std::vector<const MEDCouplingTimeDiscretization *>& other) const;
+    virtual MEDCouplingTimeDiscretization *meld(const MEDCouplingTimeDiscretization *other) const;
+    virtual MEDCouplingTimeDiscretization *dot(const MEDCouplingTimeDiscretization *other) const;
+    virtual MEDCouplingTimeDiscretization *crossProduct(const MEDCouplingTimeDiscretization *other) const;
+    virtual MEDCouplingTimeDiscretization *max(const MEDCouplingTimeDiscretization *other) const;
+    virtual MEDCouplingTimeDiscretization *min(const MEDCouplingTimeDiscretization *other) const;
+    virtual MEDCouplingTimeDiscretization *add(const MEDCouplingTimeDiscretization *other) const;
+    virtual void addEqual(const MEDCouplingTimeDiscretization *other);
+    virtual MEDCouplingTimeDiscretization *substract(const MEDCouplingTimeDiscretization *other) const;
+    virtual void substractEqual(const MEDCouplingTimeDiscretization *other);
+    virtual MEDCouplingTimeDiscretization *multiply(const MEDCouplingTimeDiscretization *other) const;
+    virtual void multiplyEqual(const MEDCouplingTimeDiscretization *other);
+    virtual MEDCouplingTimeDiscretization *divide(const MEDCouplingTimeDiscretization *other) const;
+    virtual void divideEqual(const MEDCouplingTimeDiscretization *other);
+    virtual MEDCouplingTimeDiscretization *pow(const MEDCouplingTimeDiscretization *other) const;
+    virtual void powEqual(const MEDCouplingTimeDiscretization *other);
+    virtual MEDCouplingTimeDiscretization *performCopyOrIncrRef(bool deepCopy) const;
     void setTimeTolerance(double val);
     double getTimeTolerance() const;
-    virtual void checkNoTimePresence() const throw(INTERP_KERNEL::Exception);
-    virtual void checkTimePresence(double time) const throw(INTERP_KERNEL::Exception);
-    virtual void setArray(DataArrayDouble *array, TimeLabel *owner) throw(INTERP_KERNEL::Exception);
-    virtual void setEndArray(DataArrayDouble *array, TimeLabel *owner) throw(INTERP_KERNEL::Exception);
-    virtual void setArrays(const std::vector<DataArrayDouble *>& arrays, TimeLabel *owner) throw(INTERP_KERNEL::Exception);
-    DataArrayDouble *getArray() throw(INTERP_KERNEL::Exception);
-    const DataArrayDouble *getArray() const throw(INTERP_KERNEL::Exception);
-    virtual const DataArrayDouble *getEndArray() const throw(INTERP_KERNEL::Exception);
-    virtual DataArrayDouble *getEndArray() throw(INTERP_KERNEL::Exception);
-    virtual std::vector< const DataArrayDouble *> getArraysForTime(double time) const throw(INTERP_KERNEL::Exception);
-    virtual void getValueForTime(double time, const std::vector<double>& vals, double *res) const throw(INTERP_KERNEL::Exception)
-    virtual void getArrays(std::vector<DataArrayDouble *>& arrays) const throw(INTERP_KERNEL::Exception);
-    virtual bool isBefore(const MEDCouplingTimeDiscretization *other) const throw(INTERP_KERNEL::Exception);
-    virtual bool isStrictlyBefore(const MEDCouplingTimeDiscretization *other) const throw(INTERP_KERNEL::Exception);
-    double getTime(int& iteration, int& order) const throw(INTERP_KERNEL::Exception);
-    virtual double getStartTime(int& iteration, int& order) const throw(INTERP_KERNEL::Exception);
-    virtual double getEndTime(int& iteration, int& order) const throw(INTERP_KERNEL::Exception);
-    void setTime(double time, int iteration, int order) throw(INTERP_KERNEL::Exception);
-    void setIteration(int it) throw(INTERP_KERNEL::Exception);
-    void setOrder(int order) throw(INTERP_KERNEL::Exception);
-    void setTimeValue(double val) throw(INTERP_KERNEL::Exception);
-    virtual void setStartIteration(int it) throw(INTERP_KERNEL::Exception);
-    virtual void setEndIteration(int it) throw(INTERP_KERNEL::Exception);
-    virtual void setStartOrder(int order) throw(INTERP_KERNEL::Exception);
-    virtual void setEndOrder(int order) throw(INTERP_KERNEL::Exception);
-    virtual void setStartTimeValue(double time) throw(INTERP_KERNEL::Exception);
-    virtual void setEndTimeValue(double time) throw(INTERP_KERNEL::Exception);
-    virtual void setStartTime(double time, int iteration, int order) throw(INTERP_KERNEL::Exception);
-    virtual void setEndTime(double time, int iteration, int order) throw(INTERP_KERNEL::Exception);
-    virtual void getValueOnTime(int eltId, double time, double *value) const throw(INTERP_KERNEL::Exception);
-    virtual void getValueOnDiscTime(int eltId, int iteration, int order, double *value) const throw(INTERP_KERNEL::Exception);
+    virtual void checkNoTimePresence() const;
+    virtual void checkTimePresence(double time) const;
+    virtual void setArray(DataArrayDouble *array, TimeLabel *owner);
+    virtual void setEndArray(DataArrayDouble *array, TimeLabel *owner);
+    virtual void setArrays(const std::vector<DataArrayDouble *>& arrays, TimeLabel *owner);
+    DataArrayDouble *getArray();
+    const DataArrayDouble *getArray() const;
+    virtual const DataArrayDouble *getEndArray() const;
+    virtual DataArrayDouble *getEndArray();
+    virtual std::vector< const DataArrayDouble *> getArraysForTime(double time) const;
+    virtual void getValueForTime(double time, const std::vector<double>& vals, double *res) const; 
+    virtual void getArrays(std::vector<DataArrayDouble *>& arrays) const;
+    virtual bool isBefore(const MEDCouplingTimeDiscretization *other) const;
+    virtual bool isStrictlyBefore(const MEDCouplingTimeDiscretization *other) const;
+    double getTime(int& iteration, int& order) const;
+    virtual double getStartTime(int& iteration, int& order) const;
+    virtual double getEndTime(int& iteration, int& order) const;
+    void setTime(double time, int iteration, int order);
+    void setIteration(int it);
+    void setOrder(int order);
+    void setTimeValue(double val);
+    virtual void setStartIteration(int it);
+    virtual void setEndIteration(int it);
+    virtual void setStartOrder(int order);
+    virtual void setEndOrder(int order);
+    virtual void setStartTimeValue(double time);
+    virtual void setEndTimeValue(double time);
+    virtual void setStartTime(double time, int iteration, int order);
+    virtual void setEndTime(double time, int iteration, int order);
+    virtual void getValueOnTime(int eltId, double time, double *value) const;
+    virtual void getValueOnDiscTime(int eltId, int iteration, int order, double *value) const;
     //
-    virtual MEDCouplingTimeDiscretization *doublyContractedProduct() const throw(INTERP_KERNEL::Exception);
-    virtual MEDCouplingTimeDiscretization *determinant() const throw(INTERP_KERNEL::Exception);
-    virtual MEDCouplingTimeDiscretization *eigenValues() const throw(INTERP_KERNEL::Exception);
-    virtual MEDCouplingTimeDiscretization *eigenVectors() const throw(INTERP_KERNEL::Exception);
-    virtual MEDCouplingTimeDiscretization *inverse() const throw(INTERP_KERNEL::Exception);
-    virtual MEDCouplingTimeDiscretization *trace() const throw(INTERP_KERNEL::Exception);
-    virtual MEDCouplingTimeDiscretization *deviator() const throw(INTERP_KERNEL::Exception);
-    virtual MEDCouplingTimeDiscretization *magnitude() const throw(INTERP_KERNEL::Exception);
-    virtual MEDCouplingTimeDiscretization *negate() const throw(INTERP_KERNEL::Exception);
-    virtual MEDCouplingTimeDiscretization *maxPerTuple() const throw(INTERP_KERNEL::Exception);
-    virtual MEDCouplingTimeDiscretization *keepSelectedComponents(const std::vector<int>& compoIds) const throw(INTERP_KERNEL::Exception);
-    virtual void setSelectedComponents(const MEDCouplingTimeDiscretization *other, const std::vector<int>& compoIds) throw(INTERP_KERNEL::Exception);
-    virtual void changeNbOfComponents(int newNbOfComp, double dftValue) throw(INTERP_KERNEL::Exception);
-    virtual void sortPerTuple(bool asc) throw(INTERP_KERNEL::Exception);
-    virtual void setUniformValue(int nbOfTuple, int nbOfCompo, double value) throw(INTERP_KERNEL::Exception);
-    virtual void setOrCreateUniformValueOnAllComponents(int nbOfTuple, double value) throw(INTERP_KERNEL::Exception);
-    virtual void applyLin(double a, double b, int compoId) throw(INTERP_KERNEL::Exception);
-    virtual void applyFunc(int nbOfComp, FunctionToEvaluate func) throw(INTERP_KERNEL::Exception);
-    virtual void applyFunc(int nbOfComp, const char *func) throw(INTERP_KERNEL::Exception);
-    virtual void applyFuncCompo(int nbOfComp, const char *func) throw(INTERP_KERNEL::Exception);
-    virtual void applyFuncNamedCompo(int nbOfComp, const std::vector<std::string>& varsOrder, const char *func) throw(INTERP_KERNEL::Exception);
-    virtual void applyFunc(const char *func) throw(INTERP_KERNEL::Exception);
-    virtual void applyFuncFast32(const char *func) throw(INTERP_KERNEL::Exception);
-    virtual void applyFuncFast64(const char *func) throw(INTERP_KERNEL::Exception);
-    virtual void fillFromAnalytic(const DataArrayDouble *loc, int nbOfComp, FunctionToEvaluate func) throw(INTERP_KERNEL::Exception);
-    virtual void fillFromAnalytic(const DataArrayDouble *loc, int nbOfComp, const char *func) throw(INTERP_KERNEL::Exception);
-    virtual void fillFromAnalyticCompo(const DataArrayDouble *loc, int nbOfComp, const char *func) throw(INTERP_KERNEL::Exception);
-    virtual void fillFromAnalyticNamedCompo(const DataArrayDouble *loc, int nbOfComp, const std::vector<std::string>& varsOrder, const char *func) throw(INTERP_KERNEL::Exception);
+    virtual MEDCouplingTimeDiscretization *doublyContractedProduct() const;
+    virtual MEDCouplingTimeDiscretization *determinant() const;
+    virtual MEDCouplingTimeDiscretization *eigenValues() const;
+    virtual MEDCouplingTimeDiscretization *eigenVectors() const;
+    virtual MEDCouplingTimeDiscretization *inverse() const;
+    virtual MEDCouplingTimeDiscretization *trace() const;
+    virtual MEDCouplingTimeDiscretization *deviator() const;
+    virtual MEDCouplingTimeDiscretization *magnitude() const;
+    virtual MEDCouplingTimeDiscretization *negate() const;
+    virtual MEDCouplingTimeDiscretization *maxPerTuple() const;
+    virtual MEDCouplingTimeDiscretization *keepSelectedComponents(const std::vector<int>& compoIds) const;
+    virtual void setSelectedComponents(const MEDCouplingTimeDiscretization *other, const std::vector<int>& compoIds);
+    virtual void changeNbOfComponents(int newNbOfComp, double dftValue);
+    virtual void sortPerTuple(bool asc);
+    virtual void setUniformValue(int nbOfTuple, int nbOfCompo, double value);
+    virtual void setOrCreateUniformValueOnAllComponents(int nbOfTuple, double value);
+    virtual void applyLin(double a, double b, int compoId);
+    virtual void applyFunc(int nbOfComp, FunctionToEvaluate func);
+    virtual void applyFunc(int nbOfComp, const char *func);
+    virtual void applyFuncCompo(int nbOfComp, const char *func);
+    virtual void applyFuncNamedCompo(int nbOfComp, const std::vector<std::string>& varsOrder, const char *func);
+    virtual void applyFunc(const char *func);
+    virtual void applyFuncFast32(const char *func);
+    virtual void applyFuncFast64(const char *func);
+    virtual void fillFromAnalytic(const DataArrayDouble *loc, int nbOfComp, FunctionToEvaluate func);
+    virtual void fillFromAnalytic(const DataArrayDouble *loc, int nbOfComp, const char *func);
+    virtual void fillFromAnalyticCompo(const DataArrayDouble *loc, int nbOfComp, const char *func);
+    virtual void fillFromAnalyticNamedCompo(const DataArrayDouble *loc, int nbOfComp, const std::vector<std::string>& varsOrder, const char *func);
     //
     virtual ~MEDCouplingTimeDiscretization();
   };
index 09545d6dd1fb36ac66f5a33c76b5b30c8bd7098a..31de2db5605047e761b3bf96fab4d70490779954 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -149,7 +149,7 @@ static PyObject *convertDataForGodFather(MEDCoupling::MEDCouplingDataForGodFathe
   throw INTERP_KERNEL::Exception("convertDataForGodFather wrap : unrecognized data type for AMR !");
 }
 
-static PyObject *convertCartesianAMRPatch(MEDCoupling::MEDCouplingCartesianAMRPatchGen *patch, int owner) throw(INTERP_KERNEL::Exception)
+static PyObject *convertCartesianAMRPatch(MEDCoupling::MEDCouplingCartesianAMRPatchGen *patch, int owner)
 {
   if(!patch)
     {
@@ -167,7 +167,7 @@ static PyObject *convertCartesianAMRPatch(MEDCoupling::MEDCouplingCartesianAMRPa
   throw INTERP_KERNEL::Exception("convertCartesianAMRPatch wrap : unrecognized type of cartesian AMR patch !");
 }
 
-static MEDCoupling::MEDCouplingFieldDouble *MEDCoupling_MEDCouplingFieldDouble___add__Impl(MEDCoupling::MEDCouplingFieldDouble *self, PyObject *obj) throw(INTERP_KERNEL::Exception)
+static MEDCoupling::MEDCouplingFieldDouble *MEDCoupling_MEDCouplingFieldDouble___add__Impl(MEDCoupling::MEDCouplingFieldDouble *self, PyObject *obj)
 {
   const char msg[]="Unexpected situation in MEDCouplingFieldDouble.__add__ ! Expecting a not null MEDCouplingFieldDouble or DataArrayDouble or DataArrayDoubleTuple instance, or a list of double, or a double.";
   const char msg2[]="in MEDCouplingFieldDouble.__add__ : self field has no Array of values set !";
@@ -223,7 +223,7 @@ static MEDCoupling::MEDCouplingFieldDouble *MEDCoupling_MEDCouplingFieldDouble__
       {
         if(!self->getArray())
           throw INTERP_KERNEL::Exception(msg2);
-        MEDCoupling::MCAuto<MEDCoupling::DataArrayDouble> aaa=MEDCoupling::DataArrayDouble::New(); aaa->useArray(&bb[0],false,MEDCoupling::CPP_DEALLOC,1,(int)bb.size());
+        MEDCoupling::MCAuto<MEDCoupling::DataArrayDouble> aaa=MEDCoupling::DataArrayDouble::New(); aaa->useArray(&bb[0],false,MEDCoupling::DeallocType::CPP_DEALLOC,1,(int)bb.size());
         MEDCoupling::MCAuto<MEDCoupling::DataArrayDouble> ret=MEDCoupling::DataArrayDouble::Add(self->getArray(),aaa);
         MEDCoupling::MCAuto<MEDCoupling::MEDCouplingFieldDouble> ret2=self->clone(false);
         ret2->setArray(ret);
@@ -234,12 +234,12 @@ static MEDCoupling::MEDCouplingFieldDouble *MEDCoupling_MEDCouplingFieldDouble__
     }
 }
 
-static MEDCoupling::MEDCouplingFieldDouble *MEDCoupling_MEDCouplingFieldDouble___radd__Impl(MEDCoupling::MEDCouplingFieldDouble *self, PyObject *obj) throw(INTERP_KERNEL::Exception)
+static MEDCoupling::MEDCouplingFieldDouble *MEDCoupling_MEDCouplingFieldDouble___radd__Impl(MEDCoupling::MEDCouplingFieldDouble *self, PyObject *obj)
 {
   return MEDCoupling_MEDCouplingFieldDouble___add__Impl(self,obj);
 }
 
-static MEDCoupling::MEDCouplingFieldDouble *MEDCoupling_MEDCouplingFieldDouble___rsub__Impl(MEDCoupling::MEDCouplingFieldDouble *self, PyObject *obj) throw(INTERP_KERNEL::Exception)
+static MEDCoupling::MEDCouplingFieldDouble *MEDCoupling_MEDCouplingFieldDouble___rsub__Impl(MEDCoupling::MEDCouplingFieldDouble *self, PyObject *obj)
 {
   const char msg[]="Unexpected situation in MEDCouplingFieldDouble.__rsub__ ! Expecting a not null MEDCouplingFieldDouble or DataArrayDouble or DataArrayDoubleTuple instance, or a list of double, or a double.";
   const char msg2[]="in MEDCouplingFieldDouble.__rsub__ : self field has no Array of values set !";
@@ -295,7 +295,7 @@ static MEDCoupling::MEDCouplingFieldDouble *MEDCoupling_MEDCouplingFieldDouble__
       {
         if(!self->getArray())
           throw INTERP_KERNEL::Exception(msg2);
-        MEDCoupling::MCAuto<MEDCoupling::DataArrayDouble> aaa=MEDCoupling::DataArrayDouble::New(); aaa->useArray(&bb[0],false,MEDCoupling::CPP_DEALLOC,1,(int)bb.size());
+        MEDCoupling::MCAuto<MEDCoupling::DataArrayDouble> aaa=MEDCoupling::DataArrayDouble::New(); aaa->useArray(&bb[0],false,MEDCoupling::DeallocType::CPP_DEALLOC,1,(int)bb.size());
         MEDCoupling::MCAuto<MEDCoupling::DataArrayDouble> ret=MEDCoupling::DataArrayDouble::Substract(aaa,self->getArray());
         MEDCoupling::MCAuto<MEDCoupling::MEDCouplingFieldDouble> ret2=self->clone(false);
         ret2->setArray(ret);
@@ -306,7 +306,7 @@ static MEDCoupling::MEDCouplingFieldDouble *MEDCoupling_MEDCouplingFieldDouble__
     }
 }
 
-static MEDCoupling::MEDCouplingFieldDouble *MEDCoupling_MEDCouplingFieldDouble___mul__Impl(MEDCoupling::MEDCouplingFieldDouble *self, PyObject *obj) throw(INTERP_KERNEL::Exception)
+static MEDCoupling::MEDCouplingFieldDouble *MEDCoupling_MEDCouplingFieldDouble___mul__Impl(MEDCoupling::MEDCouplingFieldDouble *self, PyObject *obj)
 {
   const char msg[]="Unexpected situation in MEDCouplingFieldDouble.__mul__ ! Expecting a not null MEDCouplingFieldDouble or DataArrayDouble or DataArrayDoubleTuple instance, or a list of double, or a double.";
   const char msg2[]="in MEDCouplingFieldDouble.__mul__ : self field has no Array of values set !";
@@ -362,7 +362,7 @@ static MEDCoupling::MEDCouplingFieldDouble *MEDCoupling_MEDCouplingFieldDouble__
       {
         if(!self->getArray())
           throw INTERP_KERNEL::Exception(msg2);
-        MEDCoupling::MCAuto<MEDCoupling::DataArrayDouble> aaa=MEDCoupling::DataArrayDouble::New(); aaa->useArray(&bb[0],false,MEDCoupling::CPP_DEALLOC,1,(int)bb.size());
+        MEDCoupling::MCAuto<MEDCoupling::DataArrayDouble> aaa=MEDCoupling::DataArrayDouble::New(); aaa->useArray(&bb[0],false,MEDCoupling::DeallocType::CPP_DEALLOC,1,(int)bb.size());
         MEDCoupling::MCAuto<MEDCoupling::DataArrayDouble> ret=MEDCoupling::DataArrayDouble::Multiply(self->getArray(),aaa);
         MEDCoupling::MCAuto<MEDCoupling::MEDCouplingFieldDouble> ret2=self->clone(false);
         ret2->setArray(ret);
@@ -373,12 +373,12 @@ static MEDCoupling::MEDCouplingFieldDouble *MEDCoupling_MEDCouplingFieldDouble__
     }
 }
 
-MEDCoupling::MEDCouplingFieldDouble *MEDCoupling_MEDCouplingFieldDouble___rmul__Impl(MEDCoupling::MEDCouplingFieldDouble *self, PyObject *obj) throw(INTERP_KERNEL::Exception)
+MEDCoupling::MEDCouplingFieldDouble *MEDCoupling_MEDCouplingFieldDouble___rmul__Impl(MEDCoupling::MEDCouplingFieldDouble *self, PyObject *obj)
 {
   return MEDCoupling_MEDCouplingFieldDouble___mul__Impl(self,obj);
 }
 
-MEDCoupling::MEDCouplingFieldDouble *MEDCoupling_MEDCouplingFieldDouble___rdiv__Impl(MEDCoupling::MEDCouplingFieldDouble *self, PyObject *obj) throw(INTERP_KERNEL::Exception)
+MEDCoupling::MEDCouplingFieldDouble *MEDCoupling_MEDCouplingFieldDouble___rdiv__Impl(MEDCoupling::MEDCouplingFieldDouble *self, PyObject *obj)
 {
   const char msg[]="Unexpected situation in MEDCouplingFieldDouble.__rdiv__ ! Expecting a not null MEDCouplingFieldDouble or DataArrayDouble or DataArrayDoubleTuple instance, or a list of double, or a double.";
   const char msg2[]="in MEDCouplingFieldDouble.__div__ : self field has no Array of values set !";
@@ -434,7 +434,7 @@ MEDCoupling::MEDCouplingFieldDouble *MEDCoupling_MEDCouplingFieldDouble___rdiv__
       {
         if(!self->getArray())
           throw INTERP_KERNEL::Exception(msg2);
-        MEDCoupling::MCAuto<MEDCoupling::DataArrayDouble> aaa=MEDCoupling::DataArrayDouble::New(); aaa->useArray(&bb[0],false,MEDCoupling::CPP_DEALLOC,1,(int)bb.size());
+        MEDCoupling::MCAuto<MEDCoupling::DataArrayDouble> aaa=MEDCoupling::DataArrayDouble::New(); aaa->useArray(&bb[0],false,MEDCoupling::DeallocType::CPP_DEALLOC,1,(int)bb.size());
         MEDCoupling::MCAuto<MEDCoupling::DataArrayDouble> ret=MEDCoupling::DataArrayDouble::Divide(aaa,self->getArray());
         MEDCoupling::MCAuto<MEDCoupling::MEDCouplingFieldDouble> ret2=self->clone(false);
         ret2->setArray(ret);
index 314f5c70b5e9fb19e57bb90f08bd450642028cb5..bc1e5e0b2c992488409f7d6d42f7fa1add0983ba 100755 (executable)
@@ -1,5 +1,5 @@
 #  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+# Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -23,7 +23,7 @@ import sys
 if sys.platform == "win32":
     from MEDCouplingCompat import *
 else:
-    from MEDCoupling import *
+    from medcoupling import *
 from math import pi, sqrt
 
 # ! [PySnippetUMeshStdBuild1_1]
index bf8506fb67e90d90ee70228f471b86062cf2f832..6ad489506ebd66f9c51068333cb1b4fb22397c85 100644 (file)
@@ -1,5 +1,5 @@
 #  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+# Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -21,7 +21,7 @@ import sys
 if sys.platform == "win32":
     from MEDCouplingCompat import *
 else:
-    from MEDCoupling import *
+    from medcoupling import *
 
 from math import pi, sqrt
 
index b7c02db0c427214254f7eba4e51cb36f646db6f4..6fd1864ed528cf17f917abb4110e9e88fb149da5 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2017  CEA/DEN, EDF R&D
+# Copyright (C) 2017-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index b54b36b517fcc7851f8de52a2716fa8de5321dfa..2cada03fe9cf463070d7e7f795653a9a2389e7c8 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2016  CEA/DEN, EDF R&D
+# Copyright (C) 2012-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 24c5e7314159f255960f7daff293aba17e0cafa8..6daa7de811d918ecd1cebf4ab381cc9bc146681d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 51a3bda5d0e283a993d4663a199a009cb9587a09..6d6c1e39f5cc876ad18a2619653763d678ace614 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 6390279e3ad614dc32391aaa539863bd9ebb3dce..91eb35f744f4bf412bdaa16fde4c30fc54fc8bd0 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2017  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 487583920f09b4c2fb69a247a7ce2dc973884b66..2a5794535f4ad82edc23347b2015d7a3f256af8c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2017  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index af66dda5b732f8dde5e2f91f3b6c119401255fe4..8c3c171731f00fd79044121a476ac23f361b4747 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 2c9703d65c1fd1253c9e58b8ef46dbf7b439ef9a..9f7427af23d24e8b9d5d0b2078ab0e31cce7d3f5 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 79190c99cae1a93edc2a205c9c1e1cde44ab5702..b6e96938c158806279a324f5c22cd7d6fb975314 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2017  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 2558bc45e7154f68c9587bfca7694d3014ce356d..7b7bcbcfcb382a16cd1b628e018a18ff76e2e449 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2017  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 715f6ee472fddae4437ee14cd8184f25336dd658..10fe80b8666c9373263cb44fe9c9a2690f52f07f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index a81a6f6613c78c224316516cffc0652c720e1190..41dfcf83903c42072ad471b897acaff76801fa1b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 1042ac0d0360ce40ea4f245aba7891109428f063..e18ca59cba721302e6d0bd3d32367e3f135c74c3 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index f173681e83596f41cb4075832d85dd07530ff4ef..f79c2a8707550e2ab2d697395f1ee7b6243e33c6 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 8b385e2e5adabff86af14a1b70a8998f481fcacb..d08370c773d46b3689e2db6e7bafbc2edfda39fa 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index e884ea05a44eb2c508322a8bd9cf2e8d6a4c015a..36f517561db00633b080752a54b6d773c3fbd001 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2017  CEA/DEN, EDF R&D
+// Copyright (C) 2017-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 5f0a85f05200d23e69a0a44dec8960a12175dd60..9190fb40b03ec2661af132b6070faec1e6c25c27 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 8f3a2576287e8fa19ed4848fa67cff66ccdb0a50..af727fc7b717c457742d1e1625bbb5b8db6f714e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 25e999a13e7b6cde58a5cb451a5d959b19e20211..c39e19895401a0440eae6ef949e058195d125002 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 146ef759196e4192ece6c644329d758c4003dc66..c365fdff84542a3965dee08b9439264c9f30c6de 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2017  CEA/DEN, EDF R&D
+// Copyright (C) 2017-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 8c2e4790399e508888447ffc5c887ad14d4bd434..48d24b5a74ff04cd42980d28e37cc1fd80b3eeec 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 34dde39ad985f81fcaefd4fd54864b11f78cb5bb..26bdcb1be1ed9246c0211f8f11c41c35c905b3f0 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2017  CEA/DEN, EDF R&D
+// Copyright (C) 2017-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 6a812dc168765a48e65445ef3b4917a9d68d5cbf..e51a9c9e9e0637b87722d8bdbd47f3e073d4ed42 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 96feb1ddc6fc3d69f8f79cfff05e9190c1f9a3b2..6064ef74434751397487729b751c2775f7de24ab 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index ceceef473cf65056411af74f51775fd64657f7c1..19c83992595a3c96015321d945177e770aaec978 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 47269e3a985c5952c1a48e43592f8b47273d0f5b..dee9025191e47c3f6a038616f124399e80b2870a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2017  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 35b356d0901551a89b8d3108ec213968854ef37f..a1ed652a702e9f9ff53e858b992982964589860d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 0606f3c17673128c0b26ce2256e9d24d888486a1..421bca3faf6378af0524977f7541de351cf2037e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 48464da2d41f195ee724bab75ff7a02538b5782b..3cbf7d4e60ad9acf8832f9345254cb42aecc1e47 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 9b1efb29d5cefe2fc9b9f4b5cb315245cc3c1f60..ff7eb59f6e0e692cb9d9ed884bc10a102c08c01c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 85286bc14486a234e01804255fa19fe23540221d..f222b32c90dfc168463e609138072082088bbd25 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 57e50f55883ce94665957385f0daf5b93f9f8245..c6fef7af0e76e343c1e40f699886a451e1bf5fdb 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 1fafaf6a62e770409cdf73482b33235fc8157afe..898c501450d98740fde68fd77f76f409b12c7bc2 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index abdef8f67632f6a17409a8853d2bb13401c794a3..f57b311f463c79bcf6c69ca05e23598eb2952f5f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index ab0655ef09d271e6cb3d3938f6d60006fb42f59c..b808e776088e5da63a0b14f0bb660c54ebcd0316 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 35c61144d1289e46dbaab9617cb748cc94f718b6..4cedd03f291885176a0e01743bc58c52c371f694 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index f4d5ccdec87bf141e4b3a04c53aafd7e262b5751..c1fb5c051c7b8ee8b05625dbf3244940d2d280aa 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2017  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 1f69588dc9d8bfee0905f5411edd9f35baf9e64a..f3caabc16727fd9d395b36b41d5928891a4e899d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2017  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 39cd3abdf44a075b7283c4d6fc9ba6d136192ade..e978b51afb6992c6d8811486b9379d6b517f86e5 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 08aa7ab90bfa5430d364d9bbedac354951902268..322602f34998e851fdac6bc06aa31974acdb198c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 9daa10ec445b9f9a04f3f9a18fcaf8e2497fefaf..77eb4b21d147cb0a5c6ac27eadb77f8bf7046854 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 0eb37f489f64d47061cf6ae2bec34fcfa2494c1c..b53ff049a64655dd7087ad90b1e90d605a38dd28 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2017  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 64e1025c2f634fac18c881da3557679c8dc724ea..5cfeee1edf0dc2fb7f6ff603d20199a5f35972f4 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2017  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 1d51ae91885ddc9430592046bdaddfda65214e44..e05a25c80a820e85823acd1cdb658321d57811de 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -228,7 +228,7 @@ MEDCoupling::MCAuto<MEDCoupling::DataArrayByte> MEDCoupling::MEDFileWritableStan
   }
   //
   MEDCoupling::MCAuto<MEDCoupling::DataArrayByte> ret(MEDCoupling::DataArrayByte::New());
-  ret->useArray(reinterpret_cast<char *>(memfile.app_image_ptr),true,C_DEALLOC,memfile.app_image_size,1);
+  ret->useArray(reinterpret_cast<char *>(memfile.app_image_ptr),true,DeallocType::C_DEALLOC,memfile.app_image_size,1);
   return ret;
 }
 
index 2747253c7bf3d3159017cd91fabd85bdac96a859..501a6d5e57295d9430cf5ff0b571782a8f8bbf1d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 279afb77476dc0416748c318ee82fa4736f97791..78dad6e6f0d4675bc46d3619f6ef51d6f781b90b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016  CEA/DEN, EDF R&D
+// Copyright (C) 2016-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 18dbcd4ba2cb26cf766f5370d54fec3d851513a3..8b1ffc7c63e135d9d86c4c8430190cd36070d1ce 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -1636,7 +1636,10 @@ void WriteFieldT(const std::string& fileName, const typename MEDCoupling::Traits
           MCAuto<MEDCouplingUMesh> mread(mmuPtr->getMeshAtLevel(m->getMeshDimension()-mm->getMeshDimension()));
           if(f2->getTypeOfField()!=ON_NODES)
             {
-              m->tryToShareSameCoordsPermute(*mread,_EPS_FOR_NODE_COMP);
+              if(!m->getCoords()->isEqualWithoutConsideringStr(*mread->getCoords(),_EPS_FOR_NODE_COMP))
+                m->tryToShareSameCoordsPermute(*mread,_EPS_FOR_NODE_COMP);
+              else
+                mread->setCoords(m->getCoords());
               DataArrayInt *part(NULL);
               bool b(mread->areCellsIncludedIn(m,_COMP_FOR_CELL,part));
               MCAuto<DataArrayInt> partSafe(part);
index 8c82058fd78790de9defa6425b03114960a630f9..e4471e2d242223299aaaf29a03a5e3bdbd8fe096 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index b045e773b5b1a8b420dafdbf19f48166932a3bc0..b2f8fd78a5e53b3cf84b2559bff8811449dbf451 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 21ca0e3d38a5b624ecb76f128c3ffb6d41ff0865..0b6ea093f99e05c3252980d8d41c238f5fa5b415 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 2f760d224889b2c92ea1808e0d7f13a880607067..9163df23e880038c52a0b8baca344aca836dc1e1 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index b9a756a11f2693985cc589695314cfd730b398fa..4726172f869205d3d5f3bc7ffc5381299c75fa1f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016  CEA/DEN, EDF R&D
+// Copyright (C) 2016-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 4b1150ad79e0717771d3e32f2ff8528ad0ec4bd4..98c94fb8d2a779a4d6f4676a0a2c8471e3ef1bb7 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016  CEA/DEN, EDF R&D
+// Copyright (C) 2016-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index c9af424fb8c31d5fa92ff198859f7fb441b87286..631bf325c65d139f3b26d42d29280427d5ecfd7f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2016  CEA/DEN, EDF R&D
+// Copyright (C) 2016-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index f2cc8e82a2002b71e8ddffd7b2f41168da543126..75fe2242a95f4731b070515099870931fcef9da9 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 3cc5e555e4ea0147375cc9d5f4539a94d39d21e9..3505e486cc1f26f1fd98dcc13bea99f2687e8f30 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 83db0a35ece2df75d75e00dd00738829807626e5..30a62fecbe913530f3a61ad35fe08233e0120b63 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -139,6 +139,8 @@ MEDCoupling::MEDFileData * SauvReader::loadInMEDFileDS()
         readRecord4();
       else if (recordNumber == 7 )
         readRecord7();
+      else if (recordNumber == 8 )
+        readRecord8();
       else if (recordNumber == 5 )
         break; // stop reading
       else
@@ -212,6 +214,38 @@ void SauvReader::readRecord7()
     }
 }
 
+//================================================================================
+/*!
+ * \brief Reads "ENREGISTREMENT DE TYPE 8"
+ */
+//================================================================================
+
+void SauvReader::readRecord8()
+{
+  // This record is useless (a constant table)
+  // => we skip it
+  int info;
+  int nbIntToSkip;
+  if ( !isASCII() )
+    {
+      getInt();
+      info = getInt();
+      int i = 0;
+      if (info == 3) {
+        // castem >= 18
+        // 1 more line
+        nbIntToSkip = 145;
+      }
+      else
+        nbIntToSkip = 141;
+
+      while (i <= nbIntToSkip) {
+        getInt();
+        i ++;
+      }
+    }
+}
+
 //================================================================================
 /*!
  * \brief Reads the pile number, nb of objects and nb named of objects
index d6d6ebe03a100c0fba23bc3a7d5ec578150c2724..a9d28915ed063b80f2b1d3534886d508100b1db8 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -56,6 +56,7 @@ class SauvReader : public MEDCoupling::RefCountObject
   void readRecord2();
   void readRecord4();
   void readRecord7();
+  void readRecord8();
 
   int readPileNumber(int& nbNamedObjects, int& nbObjects);
   void read_PILE_SOUS_MAILLAGE(const int nbObjects, std::vector<std::string>& objectNames, std::vector<int>& nameIndices);
index ea62893bfeba31cff3a14c934dab59ed4c58b189..f10e2f8a1c5b328d3896c7c36dab4632492ff886 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index b60635f64fcf168411de7519a750739fc38d38de..55ed3c39328d89bef07de1a6c445a96ed545d777 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index acdc3160cde5bb133e4898707b3788af2c668595..31efd1ab4cdb54956da6ab95dbe189c9e15b3830 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 0e69ad6a9f20afc850264fa754753670996ece52..9f9bc3ffdfb5ca2574df7653be1b468ec46b0972 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2017  CEA/DEN, EDF R&D
+# Copyright (C) 2012-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index d336cd942313e067cbbbd267ff375fbca27e1c0e..6c6c894afb1cb6073da9a2d81c1424e540dab79f 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2015-2017  CEA/DEN, EDF R&D
+# Copyright (C) 2015-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index f49d943e74aab6cc348fe42ff47e91b1df711570..ca83b5e58965c239a890cab552eb0ab268f042cc 100644 (file)
@@ -1,5 +1,5 @@
 #  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+# Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index dcaa037fdbe3adae473d7fd7b6315848b2e76491..56296451c28352e4f65e06d52ad96edede2757fd 100644 (file)
@@ -1,5 +1,5 @@
 #  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+# Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index c8f4f74a3e368d0b2876a2acf529da645f17b179..74e333f0eecb0d7d18daeb5ac85d1b19a47b486f 100644 (file)
@@ -1,5 +1,5 @@
 #  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+# Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 20ef99276c2b64846d762fda18b1c7ab592ff21a..6263abbcb66579f27a32b839b9485c2f37e5cb80 100644 (file)
@@ -1,6 +1,6 @@
 #! /usr/bin/env python
 #  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+# Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 517564e41ba3527a7d8ccf936f2fdc86797a9135..1438d85dde0559fcbf80fed300896eb527509671 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index b6391d875d6754551865865db43976f051e0dffa..45a411744012ddc9e9209d5ef68cbdc6f0117132 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2017  CEA/DEN, EDF R&D
+// Copyright (C) 2017-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -340,40 +340,40 @@ using namespace MEDCoupling;
 namespace MEDCoupling
 {
   bool HasXDR();
-  std::string MEDFileVersionStr() throw(INTERP_KERNEL::Exception);
-  std::string MEDFileVersionOfFileStr(const std::string& fileName) throw(INTERP_KERNEL::Exception);
-  void SetEpsilonForNodeComp(double val) throw(INTERP_KERNEL::Exception);
-  void SetCompPolicyForCell(int val) throw(INTERP_KERNEL::Exception);
-  void SetTooLongStrPolicy(int val) throw(INTERP_KERNEL::Exception);
-  void CheckFileForRead(const std::string& fileName) throw(INTERP_KERNEL::Exception);
-  std::vector<std::string> GetMeshNames(const std::string& fileName) throw(INTERP_KERNEL::Exception);
-  std::vector<std::string> GetMeshNamesOnField(const std::string& fileName, const std::string& fieldName) throw(INTERP_KERNEL::Exception);
-  std::vector<std::string> GetMeshGroupsNames(const std::string& fileName, const std::string& meshName) throw(INTERP_KERNEL::Exception);
-  std::vector<std::string> GetMeshFamiliesNames(const std::string& fileName, const std::string& meshName) throw(INTERP_KERNEL::Exception);
-  std::vector<std::string> GetMeshFamiliesNamesOnGroup(const std::string& fileName, const std::string& meshName, const std::string& grpName) throw(INTERP_KERNEL::Exception);
-  std::vector<std::string> GetMeshGroupsNamesOnFamily(const std::string& fileName, const std::string& meshName, const std::string& famName) throw(INTERP_KERNEL::Exception);
-  std::vector<std::string> GetAllFieldNamesOnMesh(const std::string& fileName, const std::string& meshName) throw(INTERP_KERNEL::Exception);
-  std::vector<std::string> GetAllFieldNames(const std::string& fileName) throw(INTERP_KERNEL::Exception);
-  std::vector<std::string> GetFieldNamesOnMesh(MEDCoupling::TypeOfField type, const std::string& fileName, const std::string& meshName) throw(INTERP_KERNEL::Exception);
-  std::vector<std::string> GetCellFieldNamesOnMesh(const std::string& fileName, const std::string& meshName) throw(INTERP_KERNEL::Exception);
-  std::vector<std::string> GetNodeFieldNamesOnMesh(const std::string& fileName, const std::string& meshName) throw(INTERP_KERNEL::Exception);
-  double GetTimeAttachedOnFieldIteration(const std::string& fileName, const std::string& fieldName, int iteration, int order) throw(INTERP_KERNEL::Exception);
-  void AssignStaticWritePropertiesTo(MEDCoupling::MEDFileWritable& obj) throw(INTERP_KERNEL::Exception);
-  MEDCoupling::MEDCouplingMesh *ReadMeshFromFile(const std::string& fileName, const std::string& meshName, int meshDimRelToMax=0) throw(INTERP_KERNEL::Exception);
-  MEDCoupling::MEDCouplingMesh *ReadMeshFromFile(const std::string& fileName, int meshDimRelToMax=0) throw(INTERP_KERNEL::Exception);
-  MEDCoupling::MEDCouplingUMesh *ReadUMeshFromFile(const std::string& fileName, const std::string& meshName, int meshDimRelToMax=0) throw(INTERP_KERNEL::Exception);
-  MEDCoupling::MEDCouplingUMesh *ReadUMeshFromFile(const std::string& fileName, int meshDimRelToMax=0) throw(INTERP_KERNEL::Exception);
-  int ReadUMeshDimFromFile(const std::string& fileName, const std::string& meshName) throw(INTERP_KERNEL::Exception);
-  MEDCoupling::MEDCouplingField *ReadFieldCell(const std::string& fileName, const std::string& meshName, int meshDimRelToMax, const std::string& fieldName, int iteration, int order) throw(INTERP_KERNEL::Exception);
-  MEDCoupling::MEDCouplingField *ReadFieldNode(const std::string& fileName, const std::string& meshName, int meshDimRelToMax, const std::string& fieldName, int iteration, int order) throw(INTERP_KERNEL::Exception);
-  MEDCoupling::MEDCouplingField *ReadFieldGauss(const std::string& fileName, const std::string& meshName, int meshDimRelToMax, const std::string& fieldName, int iteration, int order) throw(INTERP_KERNEL::Exception);
-  MEDCoupling::MEDCouplingField *ReadFieldGaussNE(const std::string& fileName, const std::string& meshName, int meshDimRelToMax, const std::string& fieldName, int iteration, int order) throw(INTERP_KERNEL::Exception);
-  void WriteMesh(const std::string& fileName, const MEDCoupling::MEDCouplingMesh *mesh, bool writeFromScratch) throw(INTERP_KERNEL::Exception);
-  void WriteUMesh(const std::string& fileName, const MEDCoupling::MEDCouplingUMesh *mesh, bool writeFromScratch) throw(INTERP_KERNEL::Exception);
-  void WriteUMeshDep(const std::string& fileName, const MEDCoupling::MEDCouplingUMesh *mesh, bool writeFromScratch) throw(INTERP_KERNEL::Exception);
-  void WriteField(const std::string& fileName, const MEDCoupling::MEDCouplingField *f, bool writeFromScratch) throw(INTERP_KERNEL::Exception);
-  void WriteFieldDep(const std::string& fileName, const MEDCoupling::MEDCouplingField *f, bool writeFromScratch) throw(INTERP_KERNEL::Exception);
-  void WriteFieldUsingAlreadyWrittenMesh(const std::string& fileName, const MEDCoupling::MEDCouplingField *f) throw(INTERP_KERNEL::Exception);
+  std::string MEDFileVersionStr();
+  std::string MEDFileVersionOfFileStr(const std::string& fileName);
+  void SetEpsilonForNodeComp(double val);
+  void SetCompPolicyForCell(int val);
+  void SetTooLongStrPolicy(int val);
+  void CheckFileForRead(const std::string& fileName);
+  std::vector<std::string> GetMeshNames(const std::string& fileName);
+  std::vector<std::string> GetMeshNamesOnField(const std::string& fileName, const std::string& fieldName);
+  std::vector<std::string> GetMeshGroupsNames(const std::string& fileName, const std::string& meshName);
+  std::vector<std::string> GetMeshFamiliesNames(const std::string& fileName, const std::string& meshName);
+  std::vector<std::string> GetMeshFamiliesNamesOnGroup(const std::string& fileName, const std::string& meshName, const std::string& grpName);
+  std::vector<std::string> GetMeshGroupsNamesOnFamily(const std::string& fileName, const std::string& meshName, const std::string& famName);
+  std::vector<std::string> GetAllFieldNamesOnMesh(const std::string& fileName, const std::string& meshName);
+  std::vector<std::string> GetAllFieldNames(const std::string& fileName);
+  std::vector<std::string> GetFieldNamesOnMesh(MEDCoupling::TypeOfField type, const std::string& fileName, const std::string& meshName);
+  std::vector<std::string> GetCellFieldNamesOnMesh(const std::string& fileName, const std::string& meshName);
+  std::vector<std::string> GetNodeFieldNamesOnMesh(const std::string& fileName, const std::string& meshName);
+  double GetTimeAttachedOnFieldIteration(const std::string& fileName, const std::string& fieldName, int iteration, int order);
+  void AssignStaticWritePropertiesTo(MEDCoupling::MEDFileWritable& obj);
+  MEDCoupling::MEDCouplingMesh *ReadMeshFromFile(const std::string& fileName, const std::string& meshName, int meshDimRelToMax=0);
+  MEDCoupling::MEDCouplingMesh *ReadMeshFromFile(const std::string& fileName, int meshDimRelToMax=0);
+  MEDCoupling::MEDCouplingUMesh *ReadUMeshFromFile(const std::string& fileName, const std::string& meshName, int meshDimRelToMax=0);
+  MEDCoupling::MEDCouplingUMesh *ReadUMeshFromFile(const std::string& fileName, int meshDimRelToMax=0);
+  int ReadUMeshDimFromFile(const std::string& fileName, const std::string& meshName);
+  MEDCoupling::MEDCouplingField *ReadFieldCell(const std::string& fileName, const std::string& meshName, int meshDimRelToMax, const std::string& fieldName, int iteration, int order);
+  MEDCoupling::MEDCouplingField *ReadFieldNode(const std::string& fileName, const std::string& meshName, int meshDimRelToMax, const std::string& fieldName, int iteration, int order);
+  MEDCoupling::MEDCouplingField *ReadFieldGauss(const std::string& fileName, const std::string& meshName, int meshDimRelToMax, const std::string& fieldName, int iteration, int order);
+  MEDCoupling::MEDCouplingField *ReadFieldGaussNE(const std::string& fileName, const std::string& meshName, int meshDimRelToMax, const std::string& fieldName, int iteration, int order);
+  void WriteMesh(const std::string& fileName, const MEDCoupling::MEDCouplingMesh *mesh, bool writeFromScratch);
+  void WriteUMesh(const std::string& fileName, const MEDCoupling::MEDCouplingUMesh *mesh, bool writeFromScratch);
+  void WriteUMeshDep(const std::string& fileName, const MEDCoupling::MEDCouplingUMesh *mesh, bool writeFromScratch);
+  void WriteField(const std::string& fileName, const MEDCoupling::MEDCouplingField *f, bool writeFromScratch);
+  void WriteFieldDep(const std::string& fileName, const MEDCoupling::MEDCouplingField *f, bool writeFromScratch);
+  void WriteFieldUsingAlreadyWrittenMesh(const std::string& fileName, const MEDCoupling::MEDCouplingField *f);
 }
 
 %rename (MEDFileVersion) MEDFileVersionSwig;
@@ -394,7 +394,7 @@ namespace MEDCoupling
 
 %inline
 {
-  PyObject *MEDFileVersionSwig() throw(INTERP_KERNEL::Exception)
+  PyObject *MEDFileVersionSwig()
   {
     int major,minor,release;
     MEDCoupling::MEDFileVersion(major,minor,release);
@@ -405,31 +405,31 @@ namespace MEDCoupling
     return ret;
   }
 
-  MEDCoupling::MEDCouplingField *ReadFieldSwig(const std::string& fileName) throw(INTERP_KERNEL::Exception)
+  MEDCoupling::MEDCouplingField *ReadFieldSwig(const std::string& fileName)
   {
     MCAuto<MEDCoupling::MEDCouplingField> ret(MEDCoupling::ReadField(fileName));
     return ret.retn();
   }
 
-  MEDCoupling::MEDCouplingField *ReadFieldSwig(const std::string& fileName, const std::string& fieldName) throw(INTERP_KERNEL::Exception)
+  MEDCoupling::MEDCouplingField *ReadFieldSwig(const std::string& fileName, const std::string& fieldName)
   {
     MCAuto<MEDCoupling::MEDCouplingField> ret(MEDCoupling::ReadField(fileName,fieldName));
     return ret.retn();
   }
   
-  MEDCoupling::MEDCouplingField *ReadFieldSwig(const std::string& fileName, const std::string& fieldName, int iteration, int order) throw(INTERP_KERNEL::Exception)
+  MEDCoupling::MEDCouplingField *ReadFieldSwig(const std::string& fileName, const std::string& fieldName, int iteration, int order)
   {
     MCAuto<MEDCoupling::MEDCouplingField> ret(MEDCoupling::ReadField(fileName,fieldName,iteration,order));
     return ret.retn();
   }
   
-  MEDCoupling::MEDCouplingField *ReadFieldSwig(MEDCoupling::TypeOfField type, const std::string& fileName, const std::string& meshName, int meshDimRelToMax, const std::string& fieldName, int iteration, int order) throw(INTERP_KERNEL::Exception)
+  MEDCoupling::MEDCouplingField *ReadFieldSwig(MEDCoupling::TypeOfField type, const std::string& fileName, const std::string& meshName, int meshDimRelToMax, const std::string& fieldName, int iteration, int order)
   {
     MCAuto<MEDCoupling::MEDCouplingField> ret(MEDCoupling::ReadField(type,fileName,meshName,meshDimRelToMax,fieldName,iteration,order));
     return ret.retn();
   }
 
-  PyObject *GetFieldIterationsSwig(MEDCoupling::TypeOfField type, const std::string& fileName, const std::string& meshName, const std::string& fieldName) throw(INTERP_KERNEL::Exception)
+  PyObject *GetFieldIterationsSwig(MEDCoupling::TypeOfField type, const std::string& fileName, const std::string& meshName, const std::string& fieldName)
   {
     std::vector< std::pair<int,int> > res=MEDCoupling::GetFieldIterations(type,fileName,meshName,fieldName);
     PyObject *ret=PyList_New(res.size());
@@ -444,7 +444,7 @@ namespace MEDCoupling
     return ret;
   }
   
-  PyObject *GetAllFieldIterationsSwig(const std::string& fileName, const std::string& fieldName) throw(INTERP_KERNEL::Exception)
+  PyObject *GetAllFieldIterationsSwig(const std::string& fileName, const std::string& fieldName)
     {
       std::vector< std::pair< std::pair<int,int>, double> > res=MEDCoupling::GetAllFieldIterations(fileName,fieldName);
       PyObject *ret=PyList_New(res.size());
@@ -460,7 +460,7 @@ namespace MEDCoupling
       return ret;
     }
   
-  PyObject *GetCellFieldIterationsSwig(const std::string& fileName, const std::string& meshName, const std::string& fieldName) throw(INTERP_KERNEL::Exception)
+  PyObject *GetCellFieldIterationsSwig(const std::string& fileName, const std::string& meshName, const std::string& fieldName)
     {
       std::vector< std::pair<int,int> > res=MEDCoupling::GetCellFieldIterations(fileName,meshName,fieldName);
       PyObject *ret=PyList_New(res.size());
@@ -475,7 +475,7 @@ namespace MEDCoupling
       return ret;
     }
 
-  PyObject *GetNodeFieldIterationsSwig(const std::string& fileName, const std::string& meshName, const std::string& fieldName) throw(INTERP_KERNEL::Exception)
+  PyObject *GetNodeFieldIterationsSwig(const std::string& fileName, const std::string& meshName, const std::string& fieldName)
     {
       std::vector< std::pair<int,int> > res=MEDCoupling::GetNodeFieldIterations(fileName,meshName,fieldName);
       PyObject *ret=PyList_New(res.size());
@@ -490,7 +490,7 @@ namespace MEDCoupling
       return ret;
     }
 
-  PyObject *GetComponentsNamesOfFieldSwig(const std::string& fileName, const std::string& fieldName) throw(INTERP_KERNEL::Exception)
+  PyObject *GetComponentsNamesOfFieldSwig(const std::string& fileName, const std::string& fieldName)
     {
       std::vector< std::pair<std::string,std::string> > res=MEDCoupling::GetComponentsNamesOfField(fileName,fieldName);
       PyObject *ret=PyList_New(res.size());
@@ -505,7 +505,7 @@ namespace MEDCoupling
       return ret;
     }
 
-  PyObject *GetUMeshGlobalInfoSwig(const std::string& fileName, const std::string& meshName) throw(INTERP_KERNEL::Exception)
+  PyObject *GetUMeshGlobalInfoSwig(const std::string& fileName, const std::string& meshName)
     {
       int meshDim,spaceDim,numberOfNodes;
       std::vector< std::vector< std::pair<INTERP_KERNEL::NormalizedCellType,int> > > res=MEDCoupling::GetUMeshGlobalInfo(fileName,meshName,meshDim,spaceDim,numberOfNodes);
@@ -534,35 +534,35 @@ namespace MEDCoupling
     }
   
   PyObject *ReadFieldsOnSameMeshSwig(MEDCoupling::TypeOfField type, const std::string& fileName, const std::string& meshName, int meshDimRelToMax,
-                                     const std::string& fieldName, PyObject *liIts) throw(INTERP_KERNEL::Exception)
+                                     const std::string& fieldName, PyObject *liIts)
     {
       std::vector<std::pair<int,int> > its=convertTimePairIdsFromPy(liIts);
       std::vector<MEDCoupling::MEDCouplingFieldDouble *> res=MEDCoupling::ReadFieldsOnSameMesh(type,fileName,meshName,meshDimRelToMax,fieldName,its);
       return convertFieldDoubleVecToPy(res);
     }
   
-  void WriteUMeshesPartitionSwig(const std::string& fileName, const std::string& meshName, PyObject *li, bool writeFromScratch) throw(INTERP_KERNEL::Exception)
+  void WriteUMeshesPartitionSwig(const std::string& fileName, const std::string& meshName, PyObject *li, bool writeFromScratch)
   {
     std::vector<const MEDCoupling::MEDCouplingUMesh *> v;
     convertFromPyObjVectorOfObj<const MEDCoupling::MEDCouplingUMesh *>(li,SWIGTYPE_p_MEDCoupling__MEDCouplingUMesh,"MEDCouplingUMesh",v);
     MEDCoupling::WriteUMeshesPartition(fileName,meshName,v,writeFromScratch);
   }
   
-  void WriteUMeshesPartitionDepSwig(const std::string& fileName, const std::string& meshName, PyObject *li, bool writeFromScratch) throw(INTERP_KERNEL::Exception)
+  void WriteUMeshesPartitionDepSwig(const std::string& fileName, const std::string& meshName, PyObject *li, bool writeFromScratch)
   {
     std::vector<const MEDCoupling::MEDCouplingUMesh *> v;
     convertFromPyObjVectorOfObj<const MEDCoupling::MEDCouplingUMesh *>(li,SWIGTYPE_p_MEDCoupling__MEDCouplingUMesh,"MEDCouplingUMesh",v);
     MEDCoupling::WriteUMeshesPartitionDep(fileName,meshName,v,writeFromScratch);
   }
   
-  void WriteUMeshesSwig(const std::string& fileName, PyObject *li, bool writeFromScratch) throw(INTERP_KERNEL::Exception)
+  void WriteUMeshesSwig(const std::string& fileName, PyObject *li, bool writeFromScratch)
   {
     std::vector<const MEDCoupling::MEDCouplingUMesh *> v;
     convertFromPyObjVectorOfObj<const MEDCoupling::MEDCouplingUMesh *>(li,SWIGTYPE_p_MEDCoupling__MEDCouplingUMesh,"MEDCouplingUMesh",v);
     MEDCoupling::WriteUMeshes(fileName,v,writeFromScratch);
   }
   
-  PyObject *GetTypesOfFieldSwig(const std::string& fileName, const std::string& meshName, const std::string& fieldName) throw(INTERP_KERNEL::Exception)
+  PyObject *GetTypesOfFieldSwig(const std::string& fileName, const std::string& meshName, const std::string& fieldName)
     {
       std::vector< MEDCoupling::TypeOfField > v=MEDCoupling::GetTypesOfField(fileName,meshName,fieldName);
       int size=v.size();
@@ -572,14 +572,14 @@ namespace MEDCoupling
       return ret;
     }
   
-  MEDCoupling::MEDCouplingUMesh *ReadUMeshFromGroupsSwig(const std::string& fileName, const std::string& meshName, int meshDimRelToMax, PyObject *li) throw(INTERP_KERNEL::Exception)
+  MEDCoupling::MEDCouplingUMesh *ReadUMeshFromGroupsSwig(const std::string& fileName, const std::string& meshName, int meshDimRelToMax, PyObject *li)
     {
       std::vector<std::string> grps;
       converPyListToVecString(li,grps);
       return MEDCoupling::ReadUMeshFromGroups(fileName,meshName,meshDimRelToMax,grps);
     }
 
-  MEDCoupling::MEDCouplingUMesh *ReadUMeshFromFamiliesSwig(const std::string& fileName, const std::string& meshName, int meshDimRelToMax, PyObject *li) throw(INTERP_KERNEL::Exception)
+  MEDCoupling::MEDCouplingUMesh *ReadUMeshFromFamiliesSwig(const std::string& fileName, const std::string& meshName, int meshDimRelToMax, PyObject *li)
     {
       std::vector<std::string> fams;
       converPyListToVecString(li,fams);
@@ -593,32 +593,32 @@ namespace MEDCoupling
   {
   public:
     void copyOptionsFrom(const MEDFileWritable& other) const;
-    int getTooLongStrPolicy() const throw(INTERP_KERNEL::Exception);
-    void setTooLongStrPolicy(int newVal) throw(INTERP_KERNEL::Exception);
-    int getZipConnPolicy() throw(INTERP_KERNEL::Exception);
-    void setZipConnPolicy(int newVal) throw(INTERP_KERNEL::Exception);
+    int getTooLongStrPolicy() const;
+    void setTooLongStrPolicy(int newVal);
+    int getZipConnPolicy();
+    void setZipConnPolicy(int newVal);
   };
   
   class MEDFileWritableStandAlone : public MEDFileWritable
   {
   public:
-    void write(const std::string& fileName, int mode) const throw(INTERP_KERNEL::Exception);
-    void write33(const std::string& fileName, int mode) const throw(INTERP_KERNEL::Exception);
+    void write(const std::string& fileName, int mode) const;
+    void write33(const std::string& fileName, int mode) const;
     %extend
        {
-         DataArrayByte *serialize() const throw(INTERP_KERNEL::Exception)
+         DataArrayByte *serialize() const
          {
            MCAuto<DataArrayByte> ret(self->serialize());
            return ret.retn();
          }
 
-         PyObject *__getstate__() throw(INTERP_KERNEL::Exception)
+         PyObject *__getstate__()
          {
            PyObject *ret(PyList_New(0));
            return ret;
          }
 
-         void __setstate__(PyObject *inp) throw(INTERP_KERNEL::Exception)
+         void __setstate__(PyObject *inp)
          {
          }
        }
@@ -647,14 +647,14 @@ namespace MEDCoupling
     void setGlobalNodeNumFieldReading(bool b);
     %extend
     {
-      std::string __str__() const throw(INTERP_KERNEL::Exception)
+      std::string __str__() const
       {
         std::ostringstream oss;
         self->reprAll(oss);
         return oss.str();
       }
       
-      std::string __repr__() const throw(INTERP_KERNEL::Exception)
+      std::string __repr__() const
       {
         std::ostringstream oss; oss << "MEDFileMeshReadSelector C++ instance at " << self << " (with code=" << self->getCode() << ").";
         return oss.str();
@@ -665,13 +665,13 @@ namespace MEDCoupling
   class MEDFileJointCorrespondence : public RefCountObject, public MEDFileWritable
   {
   public:
-    static MEDFileJointCorrespondence *New() throw(INTERP_KERNEL::Exception);
+    static MEDFileJointCorrespondence *New();
     static MEDFileJointCorrespondence *New(DataArrayInt* correspondence) // nodes
-      throw(INTERP_KERNEL::Exception);
+     ;
     static MEDFileJointCorrespondence *New(DataArrayInt* correspondence,  // cells
                                            INTERP_KERNEL::NormalizedCellType loc_geo_type,
                                            INTERP_KERNEL::NormalizedCellType rem_geo_type)
-      throw(INTERP_KERNEL::Exception);
+     ;
     std::vector<const BigMemoryObject *> getDirectChildrenWithNull() const;
     MEDFileJointCorrespondence *deepCopy() const;
     MEDFileJointCorrespondence *shallowCpy() const;
@@ -682,32 +682,32 @@ namespace MEDCoupling
     INTERP_KERNEL::NormalizedCellType getLocalGeometryType() const;
     void setRemoteGeometryType(INTERP_KERNEL::NormalizedCellType type);
     INTERP_KERNEL::NormalizedCellType getRemoteGeometryType() const;
-    void setCorrespondence(DataArrayInt *corr) throw(INTERP_KERNEL::Exception);
-    void write(const std::string& fileName, int mode, const std::string& localMeshName, const std::string& jointName, int order, int iteration) const throw(INTERP_KERNEL::Exception);
-    std::string simpleRepr() const throw(INTERP_KERNEL::Exception);
+    void setCorrespondence(DataArrayInt *corr);
+    void write(const std::string& fileName, int mode, const std::string& localMeshName, const std::string& jointName, int order, int iteration) const;
+    std::string simpleRepr() const;
     %extend
     {
       MEDFileJointCorrespondence()
       {
         return MEDFileJointCorrespondence::New();
       }
-      MEDFileJointCorrespondence(DataArrayInt* correspondence) throw(INTERP_KERNEL::Exception)
+      MEDFileJointCorrespondence(DataArrayInt* correspondence)
       {
         return MEDFileJointCorrespondence::New(correspondence);
       }
       MEDFileJointCorrespondence(DataArrayInt* correspondence,  // cells
                                  INTERP_KERNEL::NormalizedCellType loc_geo_type,
-                                 INTERP_KERNEL::NormalizedCellType rem_geo_type) throw(INTERP_KERNEL::Exception)
+                                 INTERP_KERNEL::NormalizedCellType rem_geo_type)
       {
         return MEDFileJointCorrespondence::New(correspondence, loc_geo_type, rem_geo_type);
       }
 
-      std::string __str__() const throw(INTERP_KERNEL::Exception)
+      std::string __str__() const
       {
         return self->simpleRepr();
       }
       
-      DataArrayInt *getCorrespondence() const throw(INTERP_KERNEL::Exception)
+      DataArrayInt *getCorrespondence() const
       {
         const DataArrayInt *ret(self->getCorrespondence());
         if(ret)
@@ -720,8 +720,8 @@ namespace MEDCoupling
   class MEDFileJointOneStep : public RefCountObject, public MEDFileWritable
   {
   public:
-    static MEDFileJointOneStep *New(int dt=-1, int it=-1) throw(INTERP_KERNEL::Exception);
-    static MEDFileJointOneStep *New(const std::string& fileName, const std::string& mName, const std::string& jointName, int number=1) throw(INTERP_KERNEL::Exception);
+    static MEDFileJointOneStep *New(int dt=-1, int it=-1);
+    static MEDFileJointOneStep *New(const std::string& fileName, const std::string& mName, const std::string& jointName, int number=1);
     MEDFileJointOneStep *deepCopy() const;
     MEDFileJointOneStep *shallowCpy() const;
     bool isEqual(const MEDFileJointOneStep *other) const;
@@ -731,8 +731,8 @@ namespace MEDCoupling
     int getIteration() const;
     void pushCorrespondence(MEDFileJointCorrespondence* correspondence);
     int getNumberOfCorrespondences() const;
-    void write(const std::string& fileName, int mode, const std::string& localMeshName, const std::string& jointName) const throw(INTERP_KERNEL::Exception);
-    std::string simpleRepr() const throw(INTERP_KERNEL::Exception);
+    void write(const std::string& fileName, int mode, const std::string& localMeshName, const std::string& jointName) const;
+    std::string simpleRepr() const;
     %extend
     {
       MEDFileJointOneStep()
@@ -740,17 +740,17 @@ namespace MEDCoupling
         return MEDFileJointOneStep::New();
       }
 
-      MEDFileJointOneStep(const std::string& fileName, const std::string& mName, const std::string& jointName, int number) throw(INTERP_KERNEL::Exception)
+      MEDFileJointOneStep(const std::string& fileName, const std::string& mName, const std::string& jointName, int number)
       {
         return MEDFileJointOneStep::New(fileName,mName,jointName,number);
       }
 
-      std::string __str__() const throw(INTERP_KERNEL::Exception)
+      std::string __str__() const
       {
         return self->simpleRepr();
       }
       
-      MEDFileJointCorrespondence *getCorrespondenceAtPos(int i) const throw(INTERP_KERNEL::Exception)
+      MEDFileJointCorrespondence *getCorrespondenceAtPos(int i) const
       {
         MEDFileJointCorrespondence *ret(self->getCorrespondenceAtPos(i));
         if(ret)
@@ -758,7 +758,7 @@ namespace MEDCoupling
         return ret;
       }
 
-      MEDFileJointCorrespondence *__getitem__(int i) const throw(INTERP_KERNEL::Exception)
+      MEDFileJointCorrespondence *__getitem__(int i) const
       {
         return MEDCoupling_MEDFileJointOneStep_getCorrespondenceAtPos(self,i);
       }
@@ -768,9 +768,9 @@ namespace MEDCoupling
   class MEDFileJoint : public RefCountObject, public MEDFileWritableStandAlone
   {
   public:
-    static MEDFileJoint *New() throw(INTERP_KERNEL::Exception);
-    static MEDFileJoint *New(const std::string& fileName, const std::string& mName, int num) throw(INTERP_KERNEL::Exception);
-    static MEDFileJoint *New(const std::string& jointName, const std::string& locMeshName, const std::string& remoteMeshName, int remoteMeshNum) throw(INTERP_KERNEL::Exception);
+    static MEDFileJoint *New();
+    static MEDFileJoint *New(const std::string& fileName, const std::string& mName, int num);
+    static MEDFileJoint *New(const std::string& jointName, const std::string& locMeshName, const std::string& remoteMeshName, int remoteMeshNum);
     MEDFileJoint *deepCopy() const;
     MEDFileJoint *shallowCpy() const;
     bool isEqual(const MEDFileJoint *other) const;
@@ -782,7 +782,7 @@ namespace MEDCoupling
     std::string getDescription() const;
     void setJointName(const std::string& name);
     std::string getJointName() const;
-    bool changeJointNames(const std::vector< std::pair<std::string,std::string> >& modifTab) throw(INTERP_KERNEL::Exception);
+    bool changeJointNames(const std::vector< std::pair<std::string,std::string> >& modifTab);
     void setDomainNumber(const int& number);
     int getDomainNumber() const;
     void pushStep(MEDFileJointOneStep* step);
@@ -795,22 +795,22 @@ namespace MEDCoupling
         return MEDFileJoint::New();
       }
       
-      MEDFileJoint(const std::string& fileName, const std::string& mName, int num) throw(INTERP_KERNEL::Exception)
+      MEDFileJoint(const std::string& fileName, const std::string& mName, int num)
       {
         return MEDFileJoint::New(fileName,mName,num);
       }
 
-      MEDFileJoint(const std::string& jointName, const std::string& locMeshName, const std::string& remoteMeshName, int remoteMeshNum) throw(INTERP_KERNEL::Exception)
+      MEDFileJoint(const std::string& jointName, const std::string& locMeshName, const std::string& remoteMeshName, int remoteMeshNum)
       {
         return MEDFileJoint::New(jointName,locMeshName,remoteMeshName,remoteMeshNum);
       }
 
-      std::string __str__() const throw(INTERP_KERNEL::Exception)
+      std::string __str__() const
       {
         return self->simpleRepr();
       }
       
-      MEDFileJointOneStep *getStepAtPos(int i) const throw(INTERP_KERNEL::Exception)
+      MEDFileJointOneStep *getStepAtPos(int i) const
       {
         MEDFileJointOneStep *ret(self->getStepAtPos(i));
         if(ret)
@@ -818,7 +818,7 @@ namespace MEDCoupling
         return ret;
       }
 
-      MEDFileJointOneStep *__getitem__(int i) throw(INTERP_KERNEL::Exception)
+      MEDFileJointOneStep *__getitem__(int i)
       {
         return MEDCoupling_MEDFileJoint_getStepAtPos(self,i);
       }
@@ -828,18 +828,18 @@ namespace MEDCoupling
   class MEDFileJoints : public RefCountObject, public MEDFileWritableStandAlone
   {
   public:
-    static MEDFileJoints *New() throw(INTERP_KERNEL::Exception);
-    static MEDFileJoints *New(const std::string& fileName, const std::string& meshName) throw(INTERP_KERNEL::Exception);
+    static MEDFileJoints *New();
+    static MEDFileJoints *New(const std::string& fileName, const std::string& meshName);
     MEDFileJoints *deepCopy() const;
     std::string simpleRepr() const;
     std::string getMeshName() const;
     int getNumberOfJoints() const;
     std::vector<std::string> getJointsNames() const;
-    bool changeJointNames(const std::vector< std::pair<std::string,std::string> >& modifTab) throw(INTERP_KERNEL::Exception);
-    void resize(int newSize) throw(INTERP_KERNEL::Exception);
+    bool changeJointNames(const std::vector< std::pair<std::string,std::string> >& modifTab);
+    void resize(int newSize);
     void pushJoint(MEDFileJoint *joint);
-    void setJointAtPos(int i, MEDFileJoint *joint) throw(INTERP_KERNEL::Exception);
-    void destroyJointAtPos(int i) throw(INTERP_KERNEL::Exception);
+    void setJointAtPos(int i, MEDFileJoint *joint);
+    void destroyJointAtPos(int i);
     %extend
     {
       MEDFileJoints()
@@ -847,17 +847,17 @@ namespace MEDCoupling
         return MEDFileJoints::New();
       }
       
-      MEDFileJoints(const std::string& fileName, const std::string& meshName) throw(INTERP_KERNEL::Exception)
+      MEDFileJoints(const std::string& fileName, const std::string& meshName)
       {
         return MEDFileJoints::New(fileName,meshName);
       }
 
-      std::string __str__() const throw(INTERP_KERNEL::Exception)
+      std::string __str__() const
       {
         return self->simpleRepr();
       }
 
-      MEDFileJoint *__getitem__(PyObject *obj) throw(INTERP_KERNEL::Exception)
+      MEDFileJoint *__getitem__(PyObject *obj)
       {
         static const char msg[]="MEDFileJoints::__getitem__ : only integer or string with meshname supported !";
         if(PyInt_Check(obj))
@@ -873,12 +873,12 @@ namespace MEDCoupling
         return ret;
       }
 
-      int __len__() const throw(INTERP_KERNEL::Exception)
+      int __len__() const
       {
         return self->getNumberOfJoints();
       }
 
-      MEDFileJoint *getJointAtPos(int i) const throw(INTERP_KERNEL::Exception)
+      MEDFileJoint *getJointAtPos(int i) const
       {
         MEDFileJoint *ret=self->getJointAtPos(i);
         if(ret)
@@ -886,7 +886,7 @@ namespace MEDCoupling
         return ret;
       }
 
-      MEDFileJoint *getJointWithName(const std::string& paramName) const throw(INTERP_KERNEL::Exception)
+      MEDFileJoint *getJointWithName(const std::string& paramName) const
       {
         MEDFileJoint *ret=self->getJointWithName(paramName);
         if(ret)
@@ -932,18 +932,18 @@ namespace MEDCoupling
   public:
     void clear();
     std::size_t size() const;
-    void setArray(int meshDimRelToMax, DataArrayInt *da) throw(INTERP_KERNEL::Exception);
-    void setArrayForType(INTERP_KERNEL::NormalizedCellType type, DataArrayInt *da) throw(INTERP_KERNEL::Exception);
+    void setArray(int meshDimRelToMax, DataArrayInt *da);
+    void setArrayForType(INTERP_KERNEL::NormalizedCellType type, DataArrayInt *da);
     %extend
     {
-      DataArrayInt *getArray(INTERP_KERNEL::NormalizedCellType type) throw(INTERP_KERNEL::Exception)
+      DataArrayInt *getArray(INTERP_KERNEL::NormalizedCellType type)
       {
         DataArrayInt *ret(self->getArray(type));
         if(ret) ret->incrRef();
         return ret;
       }
       
-      PyObject *getTypes() const throw(INTERP_KERNEL::Exception)
+      PyObject *getTypes() const
       {
         std::vector<INTERP_KERNEL::NormalizedCellType> result(self->getTypes());
         std::vector<INTERP_KERNEL::NormalizedCellType>::const_iterator iL=result.begin();
@@ -1003,26 +1003,26 @@ namespace MEDCoupling
     MEDFileEquivalences();
   public:
     int size() const;
-    std::vector<std::string> getEquivalenceNames() const throw(INTERP_KERNEL::Exception);
-    void killEquivalenceWithName(const std::string& name) throw(INTERP_KERNEL::Exception);
-    void killEquivalenceAt(int i) throw(INTERP_KERNEL::Exception);
+    std::vector<std::string> getEquivalenceNames() const;
+    void killEquivalenceWithName(const std::string& name);
+    void killEquivalenceAt(int i);
     void clear();
     %extend
     {
-      MEDFileEquivalencePair *getEquivalence(int i) throw(INTERP_KERNEL::Exception)
+      MEDFileEquivalencePair *getEquivalence(int i)
       {
         MEDFileEquivalencePair *ret(self->getEquivalence(i));
         if(ret) ret->incrRef();
         return ret;
       }
-      MEDFileEquivalencePair *getEquivalenceWithName(const std::string& name) throw(INTERP_KERNEL::Exception)
+      MEDFileEquivalencePair *getEquivalenceWithName(const std::string& name)
       {
         MEDFileEquivalencePair *ret(self->getEquivalenceWithName(name));
         if(ret) ret->incrRef();
         return ret;
       }
 
-      MEDFileEquivalencePair *appendEmptyEquivalenceWithName(const std::string& name) throw(INTERP_KERNEL::Exception)
+      MEDFileEquivalencePair *appendEmptyEquivalenceWithName(const std::string& name)
       {
         MEDFileEquivalencePair *ret(self->appendEmptyEquivalenceWithName(name));
         if(ret) ret->incrRef();
@@ -1034,13 +1034,13 @@ namespace MEDCoupling
   class MEDFileMesh : public RefCountObject, public MEDFileWritableStandAlone
   {
   public:
-    static MEDFileMesh *New(const std::string& fileName, MEDFileMeshReadSelector *mrs=0) throw(INTERP_KERNEL::Exception);
-    static MEDFileMesh *New(const std::string& fileName, const std::string& mName, int dt=-1, int it=-1, MEDFileMeshReadSelector *mrs=0) throw(INTERP_KERNEL::Exception);
-    static MEDFileMesh *New(DataArrayByte *db) throw(INTERP_KERNEL::Exception);
-    virtual MEDFileMesh *createNewEmpty() const throw(INTERP_KERNEL::Exception);
-    virtual MEDFileMesh *deepCopy() const throw(INTERP_KERNEL::Exception);
-    virtual MEDFileMesh *shallowCpy() const throw(INTERP_KERNEL::Exception);
-    virtual void clearNonDiscrAttributes() const throw(INTERP_KERNEL::Exception);
+    static MEDFileMesh *New(const std::string& fileName, MEDFileMeshReadSelector *mrs=0);
+    static MEDFileMesh *New(const std::string& fileName, const std::string& mName, int dt=-1, int it=-1, MEDFileMeshReadSelector *mrs=0);
+    static MEDFileMesh *New(DataArrayByte *db);
+    virtual MEDFileMesh *createNewEmpty() const;
+    virtual MEDFileMesh *deepCopy() const;
+    virtual MEDFileMesh *shallowCpy() const;
+    virtual void clearNonDiscrAttributes() const;
     void setName(const std::string& name);
     std::string getName();
     std::string getUnivName() const;
@@ -1059,128 +1059,128 @@ namespace MEDCoupling
     std::string getTimeUnit() const;
     void setAxisType(MEDCouplingAxisType at);
     MEDCouplingAxisType getAxisType() const;
-    virtual int getNumberOfNodes() const throw(INTERP_KERNEL::Exception);
-    virtual int getNumberOfCellsAtLevel(int meshDimRelToMaxExt) const throw(INTERP_KERNEL::Exception);
-    virtual bool hasImplicitPart() const throw(INTERP_KERNEL::Exception);
-    virtual int buildImplicitPartIfAny(INTERP_KERNEL::NormalizedCellType gt) const throw(INTERP_KERNEL::Exception);
-    virtual void releaseImplicitPartIfAny() const throw(INTERP_KERNEL::Exception);
-    virtual int getNumberOfCellsWithType(INTERP_KERNEL::NormalizedCellType ct) const throw(INTERP_KERNEL::Exception);
-    virtual std::vector<int> getFamArrNonEmptyLevelsExt() const throw(INTERP_KERNEL::Exception);
-    virtual std::vector<int> getNumArrNonEmptyLevelsExt() const throw(INTERP_KERNEL::Exception);
-    virtual std::vector<int> getNameArrNonEmptyLevelsExt() const throw(INTERP_KERNEL::Exception);
-    virtual std::vector<int> getDistributionOfTypes(int meshDimRelToMax) const throw(INTERP_KERNEL::Exception);
-    virtual MEDFileMesh *cartesianize() const throw(INTERP_KERNEL::Exception);
-    std::vector<int> getNonEmptyLevels() const throw(INTERP_KERNEL::Exception);
-    std::vector<int> getNonEmptyLevelsExt() const throw(INTERP_KERNEL::Exception);
-    int getSizeAtLevel(int meshDimRelToMaxExt) const throw(INTERP_KERNEL::Exception);
+    virtual int getNumberOfNodes() const;
+    virtual int getNumberOfCellsAtLevel(int meshDimRelToMaxExt) const;
+    virtual bool hasImplicitPart() const;
+    virtual int buildImplicitPartIfAny(INTERP_KERNEL::NormalizedCellType gt) const;
+    virtual void releaseImplicitPartIfAny() const;
+    virtual int getNumberOfCellsWithType(INTERP_KERNEL::NormalizedCellType ct) const;
+    virtual std::vector<int> getFamArrNonEmptyLevelsExt() const;
+    virtual std::vector<int> getNumArrNonEmptyLevelsExt() const;
+    virtual std::vector<int> getNameArrNonEmptyLevelsExt() const;
+    virtual std::vector<int> getDistributionOfTypes(int meshDimRelToMax) const;
+    virtual MEDFileMesh *cartesianize() const;
+    std::vector<int> getNonEmptyLevels() const;
+    std::vector<int> getNonEmptyLevelsExt() const;
+    int getSizeAtLevel(int meshDimRelToMaxExt) const;
     //
-    bool existsGroup(const std::string& groupName) const throw(INTERP_KERNEL::Exception);
-    bool existsFamily(int famId) const throw(INTERP_KERNEL::Exception);
-    bool existsFamily(const std::string& familyName) const throw(INTERP_KERNEL::Exception);
-    void setFamilyId(const std::string& familyName, int id) throw(INTERP_KERNEL::Exception);
-    void setFamilyIdUnique(const std::string& familyName, int id) throw(INTERP_KERNEL::Exception);
-    void addFamily(const std::string& familyName, int id) throw(INTERP_KERNEL::Exception);
-    void addFamilyOnGrp(const std::string& grpName, const std::string& famName) throw(INTERP_KERNEL::Exception);
-    virtual void createGroupOnAll(int meshDimRelToMaxExt, const std::string& groupName) throw(INTERP_KERNEL::Exception);
-    virtual bool keepFamIdsOnlyOnLevs(const std::vector<int>& famIds, const std::vector<int>& levs) throw(INTERP_KERNEL::Exception);
-    void copyFamGrpMapsFrom(const MEDFileMesh& other) throw(INTERP_KERNEL::Exception);
-    void clearGrpMap() throw(INTERP_KERNEL::Exception);
-    void clearFamMap() throw(INTERP_KERNEL::Exception);
-    void clearFamGrpMaps() throw(INTERP_KERNEL::Exception);
-    const std::map<std::string,int>& getFamilyInfo() const throw(INTERP_KERNEL::Exception);
-    const std::map<std::string, std::vector<std::string> >& getGroupInfo() const throw(INTERP_KERNEL::Exception);
-    std::vector<std::string> getFamiliesOnGroup(const std::string& name) const throw(INTERP_KERNEL::Exception);
-    std::vector<std::string> getFamiliesOnGroups(const std::vector<std::string>& grps) const throw(INTERP_KERNEL::Exception);
-    std::vector<int> getFamiliesIdsOnGroup(const std::string& name) const throw(INTERP_KERNEL::Exception);
-    void setFamiliesOnGroup(const std::string& name, const std::vector<std::string>& fams) throw(INTERP_KERNEL::Exception);
-    void setFamiliesIdsOnGroup(const std::string& name, const std::vector<int>& famIds) throw(INTERP_KERNEL::Exception);
-    std::vector<std::string> getGroupsOnFamily(const std::string& name) const throw(INTERP_KERNEL::Exception);
-    void setGroupsOnFamily(const std::string& famName, const std::vector<std::string>& grps) throw(INTERP_KERNEL::Exception);
-    std::vector<std::string> getGroupsNames() const throw(INTERP_KERNEL::Exception);
-    std::vector<std::string> getFamiliesNames() const throw(INTERP_KERNEL::Exception);
-    std::vector<std::string> getGroupsOnSpecifiedLev(int meshDimRelToMaxExt) const throw(INTERP_KERNEL::Exception);
-    std::vector<int> getGrpNonEmptyLevelsExt(const std::string& grp) const throw(INTERP_KERNEL::Exception);
-    std::vector<int> getGrpNonEmptyLevels(const std::string& grp) const throw(INTERP_KERNEL::Exception);
-    std::vector<int> getFamsNonEmptyLevels(const std::vector<std::string>& fams) const throw(INTERP_KERNEL::Exception);
-    std::vector<int> getFamsNonEmptyLevelsExt(const std::vector<std::string>& fams) const throw(INTERP_KERNEL::Exception);
-    std::vector<int> getGrpsNonEmptyLevels(const std::vector<std::string>& grps) const throw(INTERP_KERNEL::Exception);
-    std::vector<int> getGrpsNonEmptyLevelsExt(const std::vector<std::string>& grps) const throw(INTERP_KERNEL::Exception);
-    std::vector<int> getFamNonEmptyLevels(const std::string& fam) const throw(INTERP_KERNEL::Exception);
-    std::vector<int> getFamNonEmptyLevelsExt(const std::string& fam) const throw(INTERP_KERNEL::Exception);
-    std::vector<std::string> getFamiliesNamesWithFilePointOfView() const throw(INTERP_KERNEL::Exception);
+    bool existsGroup(const std::string& groupName) const;
+    bool existsFamily(int famId) const;
+    bool existsFamily(const std::string& familyName) const;
+    void setFamilyId(const std::string& familyName, int id);
+    void setFamilyIdUnique(const std::string& familyName, int id);
+    void addFamily(const std::string& familyName, int id);
+    void addFamilyOnGrp(const std::string& grpName, const std::string& famName);
+    virtual void createGroupOnAll(int meshDimRelToMaxExt, const std::string& groupName);
+    virtual bool keepFamIdsOnlyOnLevs(const std::vector<int>& famIds, const std::vector<int>& levs);
+    void copyFamGrpMapsFrom(const MEDFileMesh& other);
+    void clearGrpMap();
+    void clearFamMap();
+    void clearFamGrpMaps();
+    const std::map<std::string,int>& getFamilyInfo() const;
+    const std::map<std::string, std::vector<std::string> >& getGroupInfo() const;
+    std::vector<std::string> getFamiliesOnGroup(const std::string& name) const;
+    std::vector<std::string> getFamiliesOnGroups(const std::vector<std::string>& grps) const;
+    std::vector<int> getFamiliesIdsOnGroup(const std::string& name) const;
+    void setFamiliesOnGroup(const std::string& name, const std::vector<std::string>& fams);
+    void setFamiliesIdsOnGroup(const std::string& name, const std::vector<int>& famIds);
+    std::vector<std::string> getGroupsOnFamily(const std::string& name) const;
+    void setGroupsOnFamily(const std::string& famName, const std::vector<std::string>& grps);
+    std::vector<std::string> getGroupsNames() const;
+    std::vector<std::string> getFamiliesNames() const;
+    std::vector<std::string> getGroupsOnSpecifiedLev(int meshDimRelToMaxExt) const;
+    std::vector<int> getGrpNonEmptyLevelsExt(const std::string& grp) const;
+    std::vector<int> getGrpNonEmptyLevels(const std::string& grp) const;
+    std::vector<int> getFamsNonEmptyLevels(const std::vector<std::string>& fams) const;
+    std::vector<int> getFamsNonEmptyLevelsExt(const std::vector<std::string>& fams) const;
+    std::vector<int> getGrpsNonEmptyLevels(const std::vector<std::string>& grps) const;
+    std::vector<int> getGrpsNonEmptyLevelsExt(const std::vector<std::string>& grps) const;
+    std::vector<int> getFamNonEmptyLevels(const std::string& fam) const;
+    std::vector<int> getFamNonEmptyLevelsExt(const std::string& fam) const;
+    std::vector<std::string> getFamiliesNamesWithFilePointOfView() const;
     static std::string GetMagicFamilyStr();
-    void assignFamilyNameWithGroupName() throw(INTERP_KERNEL::Exception);
-    std::vector<std::string> removeEmptyGroups() throw(INTERP_KERNEL::Exception);
-    void removeGroupAtLevel(int meshDimRelToMaxExt, const std::string& name) throw(INTERP_KERNEL::Exception);
-    void removeGroup(const std::string& name) throw(INTERP_KERNEL::Exception);
-    void removeFamily(const std::string& name) throw(INTERP_KERNEL::Exception);
-    std::vector<std::string> removeOrphanGroups() throw(INTERP_KERNEL::Exception);
-    std::vector<std::string> removeOrphanFamilies() throw(INTERP_KERNEL::Exception);
-    void removeFamiliesReferedByNoGroups() throw(INTERP_KERNEL::Exception);
-    void rearrangeFamilies() throw(INTERP_KERNEL::Exception);
-    void checkOrphanFamilyZero() const throw(INTERP_KERNEL::Exception);
-    void changeGroupName(const std::string& oldName, const std::string& newName) throw(INTERP_KERNEL::Exception);
-    void changeFamilyName(const std::string& oldName, const std::string& newName) throw(INTERP_KERNEL::Exception);
-    void changeFamilyId(int oldId, int newId) throw(INTERP_KERNEL::Exception);
-    void changeAllGroupsContainingFamily(const std::string& familyNameToChange, const std::vector<std::string>& newFamiliesNames) throw(INTERP_KERNEL::Exception);
+    void assignFamilyNameWithGroupName();
+    std::vector<std::string> removeEmptyGroups();
+    void removeGroupAtLevel(int meshDimRelToMaxExt, const std::string& name);
+    void removeGroup(const std::string& name);
+    void removeFamily(const std::string& name);
+    std::vector<std::string> removeOrphanGroups();
+    std::vector<std::string> removeOrphanFamilies();
+    void removeFamiliesReferedByNoGroups();
+    void rearrangeFamilies();
+    void checkOrphanFamilyZero() const;
+    void changeGroupName(const std::string& oldName, const std::string& newName);
+    void changeFamilyName(const std::string& oldName, const std::string& newName);
+    void changeFamilyId(int oldId, int newId);
+    void changeAllGroupsContainingFamily(const std::string& familyNameToChange, const std::vector<std::string>& newFamiliesNames);
     void setFamilyInfo(const std::map<std::string,int>& info);
     void setGroupInfo(const std::map<std::string, std::vector<std::string> >&info);
-    int getFamilyId(const std::string& name) const throw(INTERP_KERNEL::Exception);
-    int getMaxAbsFamilyId() const throw(INTERP_KERNEL::Exception);
-    int getMaxFamilyId() const throw(INTERP_KERNEL::Exception);
-    int getMinFamilyId() const throw(INTERP_KERNEL::Exception);
-    int getTheMaxAbsFamilyId() const throw(INTERP_KERNEL::Exception);
-    int getTheMaxFamilyId() const throw(INTERP_KERNEL::Exception);
-    int getTheMinFamilyId() const throw(INTERP_KERNEL::Exception);
-    virtual int getMaxAbsFamilyIdInArrays() const throw(INTERP_KERNEL::Exception);
-    virtual int getMaxFamilyIdInArrays() const throw(INTERP_KERNEL::Exception);
-    virtual int getMinFamilyIdInArrays() const throw(INTERP_KERNEL::Exception);
-    DataArrayInt *getAllFamiliesIdsReferenced() const throw(INTERP_KERNEL::Exception);
-    DataArrayInt *computeAllFamilyIdsInUse() const throw(INTERP_KERNEL::Exception);
-    std::vector<int> getFamiliesIds(const std::vector<std::string>& famNames) const throw(INTERP_KERNEL::Exception);
-    std::string getFamilyNameGivenId(int id) const throw(INTERP_KERNEL::Exception);
-    bool ensureDifferentFamIdsPerLevel() throw(INTERP_KERNEL::Exception);
-    void normalizeFamIdsTrio() throw(INTERP_KERNEL::Exception);
-    void normalizeFamIdsMEDFile() throw(INTERP_KERNEL::Exception);
-    virtual int getMeshDimension() const throw(INTERP_KERNEL::Exception);
-    virtual std::string simpleRepr() const throw(INTERP_KERNEL::Exception);
-    virtual std::string advancedRepr() const throw(INTERP_KERNEL::Exception);
+    int getFamilyId(const std::string& name) const;
+    int getMaxAbsFamilyId() const;
+    int getMaxFamilyId() const;
+    int getMinFamilyId() const;
+    int getTheMaxAbsFamilyId() const;
+    int getTheMaxFamilyId() const;
+    int getTheMinFamilyId() const;
+    virtual int getMaxAbsFamilyIdInArrays() const;
+    virtual int getMaxFamilyIdInArrays() const;
+    virtual int getMinFamilyIdInArrays() const;
+    DataArrayInt *getAllFamiliesIdsReferenced() const;
+    DataArrayInt *computeAllFamilyIdsInUse() const;
+    std::vector<int> getFamiliesIds(const std::vector<std::string>& famNames) const;
+    std::string getFamilyNameGivenId(int id) const;
+    bool ensureDifferentFamIdsPerLevel();
+    void normalizeFamIdsTrio();
+    void normalizeFamIdsMEDFile();
+    virtual int getMeshDimension() const;
+    virtual std::string simpleRepr() const;
+    virtual std::string advancedRepr() const;
     //
-    virtual MEDCouplingMesh *getMeshAtLevel(int meshDimRelToMax, bool renum=false) const throw(INTERP_KERNEL::Exception);
-    virtual void setFamilyFieldArr(int meshDimRelToMaxExt, DataArrayInt *famArr) throw(INTERP_KERNEL::Exception);
-    virtual void setRenumFieldArr(int meshDimRelToMaxExt, DataArrayInt *renumArr) throw(INTERP_KERNEL::Exception);
-    virtual void setNameFieldAtLevel(int meshDimRelToMaxExt, DataArrayAsciiChar *nameArr) throw(INTERP_KERNEL::Exception);
-    virtual void setGlobalNumFieldAtLevel(int meshDimRelToMaxExt, DataArrayInt *globalNumArr) throw(INTERP_KERNEL::Exception);
-    virtual void addNodeGroup(const DataArrayInt *ids) throw(INTERP_KERNEL::Exception);
-    virtual void addGroup(int meshDimRelToMaxExt, const DataArrayInt *ids) throw(INTERP_KERNEL::Exception);
-    virtual DataArrayInt *getFamiliesArr(int meshDimRelToMaxExt, const std::vector<std::string>& fams, bool renum=false) const throw(INTERP_KERNEL::Exception);
-    virtual DataArrayInt *getGroupsArr(int meshDimRelToMaxExt, const std::vector<std::string>& grps, bool renum=false) const throw(INTERP_KERNEL::Exception);
-    virtual DataArrayInt *getGroupArr(int meshDimRelToMaxExt, const std::string& grp, bool renum=false) const throw(INTERP_KERNEL::Exception);
-    virtual DataArrayInt *getFamilyArr(int meshDimRelToMaxExt, const std::string& fam, bool renum=false) const throw(INTERP_KERNEL::Exception);
-    virtual DataArrayInt *getNodeGroupArr(const std::string& grp, bool renum=false) const throw(INTERP_KERNEL::Exception);
-    virtual DataArrayInt *getNodeGroupsArr(const std::vector<std::string>& grps, bool renum=false) const throw(INTERP_KERNEL::Exception);
-    virtual DataArrayInt *getNodeFamilyArr(const std::string& fam, bool renum=false) const throw(INTERP_KERNEL::Exception);
-    virtual DataArrayInt *getNodeFamiliesArr(const std::vector<std::string>& fams, bool renum=false) const throw(INTERP_KERNEL::Exception);
+    virtual MEDCouplingMesh *getMeshAtLevel(int meshDimRelToMax, bool renum=false) const;
+    virtual void setFamilyFieldArr(int meshDimRelToMaxExt, DataArrayInt *famArr);
+    virtual void setRenumFieldArr(int meshDimRelToMaxExt, DataArrayInt *renumArr);
+    virtual void setNameFieldAtLevel(int meshDimRelToMaxExt, DataArrayAsciiChar *nameArr);
+    virtual void setGlobalNumFieldAtLevel(int meshDimRelToMaxExt, DataArrayInt *globalNumArr);
+    virtual void addNodeGroup(const DataArrayInt *ids);
+    virtual void addGroup(int meshDimRelToMaxExt, const DataArrayInt *ids);
+    virtual DataArrayInt *getFamiliesArr(int meshDimRelToMaxExt, const std::vector<std::string>& fams, bool renum=false) const;
+    virtual DataArrayInt *getGroupsArr(int meshDimRelToMaxExt, const std::vector<std::string>& grps, bool renum=false) const;
+    virtual DataArrayInt *getGroupArr(int meshDimRelToMaxExt, const std::string& grp, bool renum=false) const;
+    virtual DataArrayInt *getFamilyArr(int meshDimRelToMaxExt, const std::string& fam, bool renum=false) const;
+    virtual DataArrayInt *getNodeGroupArr(const std::string& grp, bool renum=false) const;
+    virtual DataArrayInt *getNodeGroupsArr(const std::vector<std::string>& grps, bool renum=false) const;
+    virtual DataArrayInt *getNodeFamilyArr(const std::string& fam, bool renum=false) const;
+    virtual DataArrayInt *getNodeFamiliesArr(const std::vector<std::string>& fams, bool renum=false) const;
     int getNumberOfJoints();
     MEDFileJoints *getJoints();
     void setJoints( MEDFileJoints* joints );
     void initializeEquivalences();
     void killEquivalences();
-    bool presenceOfStructureElements() const throw(INTERP_KERNEL::Exception);
-    void killStructureElements() throw(INTERP_KERNEL::Exception);
+    bool presenceOfStructureElements() const;
+    void killStructureElements();
     %extend
        {
-         std::string __str__() const throw(INTERP_KERNEL::Exception)
+         std::string __str__() const
          {
            return self->simpleRepr();
          }
 
-         MEDCouplingMesh *__getitem__(int meshDimRelToMaxExt) const throw(INTERP_KERNEL::Exception)
+         MEDCouplingMesh *__getitem__(int meshDimRelToMaxExt) const
          {
            return self->getMeshAtLevel(meshDimRelToMaxExt,false);
          }
 
-         PyObject *getTime() throw(INTERP_KERNEL::Exception)
+         PyObject *getTime()
          {
            int tmp1,tmp2;
            double tmp0=self->getTime(tmp1,tmp2);
@@ -1191,7 +1191,7 @@ namespace MEDCoupling
            return res;
          }
 
-         virtual PyObject *isEqual(const MEDFileMesh *other, double eps) const throw(INTERP_KERNEL::Exception)
+         virtual PyObject *isEqual(const MEDFileMesh *other, double eps) const
          {
            std::string what;
            bool ret0=self->isEqual(other,eps,what);
@@ -1203,14 +1203,14 @@ namespace MEDCoupling
            return res;
          }
 
-         void setGroupsAtLevel(int meshDimRelToMaxExt, PyObject *li, bool renum=false) throw(INTERP_KERNEL::Exception)
+         void setGroupsAtLevel(int meshDimRelToMaxExt, PyObject *li, bool renum=false)
          {
            std::vector<const DataArrayInt *> grps;
            convertFromPyObjVectorOfObj<const MEDCoupling::DataArrayInt *>(li,SWIGTYPE_p_MEDCoupling__DataArrayInt,"DataArrayInt",grps);
            self->setGroupsAtLevel(meshDimRelToMaxExt,grps,renum);
          }
          
-         PyObject *areFamsEqual(const MEDFileMesh *other) const throw(INTERP_KERNEL::Exception)
+         PyObject *areFamsEqual(const MEDFileMesh *other) const
          {
            std::string what;
            bool ret0=self->areFamsEqual(other,what);
@@ -1222,7 +1222,7 @@ namespace MEDCoupling
            return res;
          }
 
-         PyObject *areGrpsEqual(const MEDFileMesh *other) const throw(INTERP_KERNEL::Exception)
+         PyObject *areGrpsEqual(const MEDFileMesh *other) const
          {
            std::string what;
            bool ret0=self->areGrpsEqual(other,what);
@@ -1234,7 +1234,7 @@ namespace MEDCoupling
            return res;
          }
 
-         PyObject *getAllGeoTypes() const throw(INTERP_KERNEL::Exception)
+         PyObject *getAllGeoTypes() const
          {
            std::vector<INTERP_KERNEL::NormalizedCellType> result(self->getAllGeoTypes());
            std::vector<INTERP_KERNEL::NormalizedCellType>::const_iterator iL=result.begin();
@@ -1244,7 +1244,7 @@ namespace MEDCoupling
            return res;
          }
 
-         PyObject *getGeoTypesAtLevel(int meshDimRelToMax) const throw(INTERP_KERNEL::Exception)
+         PyObject *getGeoTypesAtLevel(int meshDimRelToMax) const
          {
            std::vector<INTERP_KERNEL::NormalizedCellType> result(self->getGeoTypesAtLevel(meshDimRelToMax));
            std::vector<INTERP_KERNEL::NormalizedCellType>::const_iterator iL=result.begin();
@@ -1254,7 +1254,7 @@ namespace MEDCoupling
            return res;
          }
 
-         PyObject *getFamilyFieldAtLevel(int meshDimRelToMaxExt) const throw(INTERP_KERNEL::Exception)
+         PyObject *getFamilyFieldAtLevel(int meshDimRelToMaxExt) const
          {
            const DataArrayInt *tmp=self->getFamilyFieldAtLevel(meshDimRelToMaxExt);
            if(tmp)
@@ -1262,7 +1262,7 @@ namespace MEDCoupling
            return SWIG_NewPointerObj(SWIG_as_voidptr(tmp),SWIGTYPE_p_MEDCoupling__DataArrayInt, SWIG_POINTER_OWN | 0 );
          }
 
-         PyObject *getOrCreateAndGetFamilyFieldAtLevel(int meshDimRelToMaxExt) throw(INTERP_KERNEL::Exception)
+         PyObject *getOrCreateAndGetFamilyFieldAtLevel(int meshDimRelToMaxExt)
          {
            const DataArrayInt *tmp=self->getOrCreateAndGetFamilyFieldAtLevel(meshDimRelToMaxExt);
            if(tmp)
@@ -1270,7 +1270,7 @@ namespace MEDCoupling
            return SWIG_NewPointerObj(SWIG_as_voidptr(tmp),SWIGTYPE_p_MEDCoupling__DataArrayInt, SWIG_POINTER_OWN | 0 );
          }
 
-         PyObject *getNumberFieldAtLevel(int meshDimRelToMaxExt) const throw(INTERP_KERNEL::Exception)
+         PyObject *getNumberFieldAtLevel(int meshDimRelToMaxExt) const
          {
            const DataArrayInt *tmp=self->getNumberFieldAtLevel(meshDimRelToMaxExt);
            if(tmp)
@@ -1278,7 +1278,7 @@ namespace MEDCoupling
            return SWIG_NewPointerObj(SWIG_as_voidptr(tmp),SWIGTYPE_p_MEDCoupling__DataArrayInt, SWIG_POINTER_OWN | 0 );
          }
 
-         PyObject *getRevNumberFieldAtLevel(int meshDimRelToMaxExt) const throw(INTERP_KERNEL::Exception)
+         PyObject *getRevNumberFieldAtLevel(int meshDimRelToMaxExt) const
          {
            const DataArrayInt *tmp=self->getRevNumberFieldAtLevel(meshDimRelToMaxExt);
            if(tmp)
@@ -1286,7 +1286,7 @@ namespace MEDCoupling
            return SWIG_NewPointerObj(SWIG_as_voidptr(tmp),SWIGTYPE_p_MEDCoupling__DataArrayInt, SWIG_POINTER_OWN | 0 );
          }
          
-         PyObject *getNameFieldAtLevel(int meshDimRelToMaxExt) const throw(INTERP_KERNEL::Exception)
+         PyObject *getNameFieldAtLevel(int meshDimRelToMaxExt) const
          {
            const DataArrayAsciiChar *tmp=self->getNameFieldAtLevel(meshDimRelToMaxExt);
            if(tmp)
@@ -1294,7 +1294,7 @@ namespace MEDCoupling
            return SWIG_NewPointerObj(SWIG_as_voidptr(tmp),SWIGTYPE_p_MEDCoupling__DataArrayAsciiChar, SWIG_POINTER_OWN | 0 );
          }
 
-         PyObject *findOrCreateAndGiveFamilyWithId(int id, bool& created) throw(INTERP_KERNEL::Exception)
+         PyObject *findOrCreateAndGiveFamilyWithId(int id, bool& created)
          {
            bool ret1;
            std::string ret0=self->findOrCreateAndGiveFamilyWithId(id,ret1);
@@ -1304,7 +1304,7 @@ namespace MEDCoupling
            return ret;
          }
          
-         PyObject *unPolyze() throw(INTERP_KERNEL::Exception)
+         PyObject *unPolyze()
          {
            DataArrayInt *ret3=0;
            std::vector<int> ret1,ret2;
@@ -1338,14 +1338,14 @@ namespace MEDCoupling
            return ret;
          }
 
-         MEDFileEquivalences *getEquivalences() throw(INTERP_KERNEL::Exception)
+         MEDFileEquivalences *getEquivalences()
          {
            MEDFileEquivalences *ret(self->getEquivalences());
            if(ret) ret->incrRef();
            return ret;
          }
 
-         virtual DataArrayInt *getGlobalNumFieldAtLevel(int meshDimRelToMaxExt) const throw(INTERP_KERNEL::Exception)
+         virtual DataArrayInt *getGlobalNumFieldAtLevel(int meshDimRelToMaxExt) const
          {
            MCAuto<DataArrayInt> ret(self->getGlobalNumFieldAtLevel(meshDimRelToMaxExt));
            return ret.retn();
@@ -1356,63 +1356,63 @@ namespace MEDCoupling
   class MEDFileUMesh : public MEDFileMesh
   {
   public:
-    static MEDFileUMesh *New(const std::string& fileName, const std::string& mName, int dt=-1, int it=-1, MEDFileMeshReadSelector *mrs=0) throw(INTERP_KERNEL::Exception);
-    static MEDFileUMesh *New(const std::string& fileName, MEDFileMeshReadSelector *mrs=0) throw(INTERP_KERNEL::Exception);
-    static MEDFileUMesh *New(const MEDCouplingMappedExtrudedMesh *mem) throw(INTERP_KERNEL::Exception);
-    static MEDFileUMesh *New(DataArrayByte *db) throw(INTERP_KERNEL::Exception);
+    static MEDFileUMesh *New(const std::string& fileName, const std::string& mName, int dt=-1, int it=-1, MEDFileMeshReadSelector *mrs=0);
+    static MEDFileUMesh *New(const std::string& fileName, MEDFileMeshReadSelector *mrs=0);
+    static MEDFileUMesh *New(const MEDCouplingMappedExtrudedMesh *mem);
+    static MEDFileUMesh *New(DataArrayByte *db);
     static MEDFileUMesh *New();
     static const char *GetSpeStr4ExtMesh();
     ~MEDFileUMesh();
-    int getSpaceDimension() const throw(INTERP_KERNEL::Exception);
-    int getRelativeLevOnGeoType(INTERP_KERNEL::NormalizedCellType gt) const throw(INTERP_KERNEL::Exception);
-    void checkConsistency() const throw(INTERP_KERNEL::Exception);
-    void checkSMESHConsistency() const throw(INTERP_KERNEL::Exception);
+    int getSpaceDimension() const;
+    int getRelativeLevOnGeoType(INTERP_KERNEL::NormalizedCellType gt) const;
+    void checkConsistency() const;
+    void checkSMESHConsistency() const;
     void clearNodeAndCellNumbers();
     //
-    MEDCouplingUMesh *getGroup(int meshDimRelToMaxExt, const std::string& grp, bool renum=false) const throw(INTERP_KERNEL::Exception);
-    MEDCouplingUMesh *getGroups(int meshDimRelToMaxExt, const std::vector<std::string>& grps, bool renum=false) const throw(INTERP_KERNEL::Exception);
-    MEDCouplingUMesh *getFamily(int meshDimRelToMaxExt, const std::string& fam, bool renum=false) const throw(INTERP_KERNEL::Exception);
-    MEDCouplingUMesh *getFamilies(int meshDimRelToMaxExt, const std::vector<std::string>& fams, bool renum=false) const throw(INTERP_KERNEL::Exception);
-    DataArrayInt *getNodeGroupsArr(const std::vector<std::string>& grps, bool renum=false) const throw(INTERP_KERNEL::Exception);
-    MEDCouplingUMesh *getLevel0Mesh(bool renum=false) const throw(INTERP_KERNEL::Exception);
-    MEDCouplingUMesh *getLevelM1Mesh(bool renum=false) const throw(INTERP_KERNEL::Exception);
-    MEDCouplingUMesh *getLevelM2Mesh(bool renum=false) const throw(INTERP_KERNEL::Exception);
-    MEDCouplingUMesh *getLevelM3Mesh(bool renum=false) const throw(INTERP_KERNEL::Exception);
-    void forceComputationOfParts() const throw(INTERP_KERNEL::Exception);
+    MEDCouplingUMesh *getGroup(int meshDimRelToMaxExt, const std::string& grp, bool renum=false) const;
+    MEDCouplingUMesh *getGroups(int meshDimRelToMaxExt, const std::vector<std::string>& grps, bool renum=false) const;
+    MEDCouplingUMesh *getFamily(int meshDimRelToMaxExt, const std::string& fam, bool renum=false) const;
+    MEDCouplingUMesh *getFamilies(int meshDimRelToMaxExt, const std::vector<std::string>& fams, bool renum=false) const;
+    DataArrayInt *getNodeGroupsArr(const std::vector<std::string>& grps, bool renum=false) const;
+    MEDCouplingUMesh *getLevel0Mesh(bool renum=false) const;
+    MEDCouplingUMesh *getLevelM1Mesh(bool renum=false) const;
+    MEDCouplingUMesh *getLevelM2Mesh(bool renum=false) const;
+    MEDCouplingUMesh *getLevelM3Mesh(bool renum=false) const;
+    void forceComputationOfParts() const;
     //
-    void setFamilyNameAttachedOnId(int id, const std::string& newFamName) throw(INTERP_KERNEL::Exception);
-    void setCoords(DataArrayDouble *coords) throw(INTERP_KERNEL::Exception);
-    void setCoordsForced(DataArrayDouble *coords) throw(INTERP_KERNEL::Exception);
-    void eraseGroupsAtLevel(int meshDimRelToMaxExt) throw(INTERP_KERNEL::Exception);
-    void removeMeshAtLevel(int meshDimRelToMax) throw(INTERP_KERNEL::Exception);
-    void setMeshAtLevel(int meshDimRelToMax, MEDCoupling1GTUMesh *m) throw(INTERP_KERNEL::Exception);
-    void setMeshAtLevel(int meshDimRelToMax, MEDCouplingUMesh *m, bool newOrOld=false) throw(INTERP_KERNEL::Exception);
-    void optimizeFamilies() throw(INTERP_KERNEL::Exception);
-    DataArrayInt *zipCoords() throw(INTERP_KERNEL::Exception);
-    DataArrayInt *extractFamilyFieldOnGeoType(INTERP_KERNEL::NormalizedCellType gt) const throw(INTERP_KERNEL::Exception);
-    DataArrayInt *extractNumberFieldOnGeoType(INTERP_KERNEL::NormalizedCellType gt) const throw(INTERP_KERNEL::Exception);
-    MEDFileUMesh *buildExtrudedMesh(const MEDCouplingUMesh *m1D, int policy) const throw(INTERP_KERNEL::Exception);
-    MEDFileUMesh *linearToQuadratic(int conversionType=0, double eps=1e-12) const throw(INTERP_KERNEL::Exception);
-    MEDFileUMesh *quadraticToLinear(double eps=1e-12) const throw(INTERP_KERNEL::Exception);
-    MEDCouplingMappedExtrudedMesh *convertToExtrudedMesh() const throw(INTERP_KERNEL::Exception);
+    void setFamilyNameAttachedOnId(int id, const std::string& newFamName);
+    void setCoords(DataArrayDouble *coords);
+    void setCoordsForced(DataArrayDouble *coords);
+    void eraseGroupsAtLevel(int meshDimRelToMaxExt);
+    void removeMeshAtLevel(int meshDimRelToMax);
+    void setMeshAtLevel(int meshDimRelToMax, MEDCoupling1GTUMesh *m);
+    void setMeshAtLevel(int meshDimRelToMax, MEDCouplingUMesh *m, bool newOrOld=false);
+    void optimizeFamilies();
+    DataArrayInt *zipCoords();
+    DataArrayInt *extractFamilyFieldOnGeoType(INTERP_KERNEL::NormalizedCellType gt) const;
+    DataArrayInt *extractNumberFieldOnGeoType(INTERP_KERNEL::NormalizedCellType gt) const;
+    MEDFileUMesh *buildExtrudedMesh(const MEDCouplingUMesh *m1D, int policy) const;
+    MEDFileUMesh *linearToQuadratic(int conversionType=0, double eps=1e-12) const;
+    MEDFileUMesh *quadraticToLinear(double eps=1e-12) const;
+    MEDCouplingMappedExtrudedMesh *convertToExtrudedMesh() const;
     %extend
        { 
-         MEDFileUMesh(const std::string& fileName, const std::string& mName, int dt=-1, int it=-1, MEDFileMeshReadSelector *mrs=0) throw(INTERP_KERNEL::Exception)
+         MEDFileUMesh(const std::string& fileName, const std::string& mName, int dt=-1, int it=-1, MEDFileMeshReadSelector *mrs=0)
          {
            return MEDFileUMesh::New(fileName,mName,dt,it,mrs);
          }
 
-         MEDFileUMesh(const std::string& fileName, MEDFileMeshReadSelector *mrs=0) throw(INTERP_KERNEL::Exception)
+         MEDFileUMesh(const std::string& fileName, MEDFileMeshReadSelector *mrs=0)
          {
            return MEDFileUMesh::New(fileName,mrs);
          }
 
-         MEDFileUMesh(const MEDCouplingMappedExtrudedMesh *mem) throw(INTERP_KERNEL::Exception)
+         MEDFileUMesh(const MEDCouplingMappedExtrudedMesh *mem)
          {
            return MEDFileUMesh::New(mem);
          }
 
-         MEDFileUMesh(DataArrayByte *db) throw(INTERP_KERNEL::Exception)
+         MEDFileUMesh(DataArrayByte *db)
          {
            return MEDFileUMesh::New(db);
          }
@@ -1422,7 +1422,7 @@ namespace MEDCoupling
            return MEDFileUMesh::New();
          }
 
-         static MEDFileUMesh *LoadPartOf(const std::string& fileName, const std::string& mName, PyObject *types, const std::vector<int>& slicPerTyp, int dt=-1, int it=-1, MEDFileMeshReadSelector *mrs=0) throw(INTERP_KERNEL::Exception)
+         static MEDFileUMesh *LoadPartOf(const std::string& fileName, const std::string& mName, PyObject *types, const std::vector<int>& slicPerTyp, int dt=-1, int it=-1, MEDFileMeshReadSelector *mrs=0)
          {
            std::vector<int> typesCpp1;
            convertPyToNewIntArr3(types,typesCpp1);
@@ -1433,7 +1433,7 @@ namespace MEDCoupling
            return MEDFileUMesh::LoadPartOf(fileName,mName,typesCpp2,slicPerTyp,dt,it,mrs);
          }
 
-         PyObject *__getstate__() throw(INTERP_KERNEL::Exception)
+         PyObject *__getstate__()
          {
            std::vector<double> a0;
            std::vector<int> a1;
@@ -1466,7 +1466,7 @@ namespace MEDCoupling
            return ret;
          }
 
-         void __setstate__(PyObject *inp) throw(INTERP_KERNEL::Exception)
+         void __setstate__(PyObject *inp)
          {
            static const char MSG[]="MEDFileUMesh.__setstate__ : expected input is a tuple of size 4 !";
            if(!PyTuple_Check(inp))
@@ -1509,7 +1509,7 @@ namespace MEDCoupling
            }
          }
 
-         void __setitem__(int meshDimRelToMax, MEDCouplingPointSet *mesh) throw(INTERP_KERNEL::Exception)
+         void __setitem__(int meshDimRelToMax, MEDCouplingPointSet *mesh)
          {
            if(!mesh)
              throw INTERP_KERNEL::Exception("MEDFileUMesh::__setitem__ : Input mesh is NULL !");
@@ -1528,12 +1528,12 @@ namespace MEDCoupling
            throw INTERP_KERNEL::Exception("MEDFileUMesh::__setitem__ : Not recognized input mesh !");
          }
 
-         void __delitem__(int meshDimRelToMax) throw(INTERP_KERNEL::Exception)
+         void __delitem__(int meshDimRelToMax)
          {
            self->removeMeshAtLevel(meshDimRelToMax);
          }
 
-         MEDFileUMesh *symmetry3DPlane(PyObject *point, PyObject *normalVector) const throw(INTERP_KERNEL::Exception)
+         MEDFileUMesh *symmetry3DPlane(PyObject *point, PyObject *normalVector) const
          {
            const char msg[]="Python wrap of MEDFileUMesh::symmetry3DPlane : ";
            double val,val2;
@@ -1547,7 +1547,7 @@ namespace MEDCoupling
            return ret.retn();
          }
 
-         static MEDFileUMesh *Aggregate(PyObject *meshes) throw(INTERP_KERNEL::Exception)
+         static MEDFileUMesh *Aggregate(PyObject *meshes)
          {
            std::vector<const MEDFileUMesh *> meshesCpp;
            convertFromPyObjVectorOfObj<const MEDCoupling::MEDFileUMesh *>(meshes,SWIGTYPE_p_MEDCoupling__MEDFileUMesh,"MEDFileUMesh",meshesCpp);
@@ -1555,48 +1555,48 @@ namespace MEDCoupling
            return ret.retn();
          }
 
-         PyObject *getAllDistributionOfTypes() const throw(INTERP_KERNEL::Exception)
+         PyObject *getAllDistributionOfTypes() const
          {
            std::vector< std::pair<int,int> > ret(self->getAllDistributionOfTypes());
            return convertVecPairIntToPy(ret);
          }
          
-         DataArrayInt *deduceNodeSubPartFromCellSubPart(PyObject *extractDef) const throw(INTERP_KERNEL::Exception)
+         DataArrayInt *deduceNodeSubPartFromCellSubPart(PyObject *extractDef) const
          {
            std::map<int, MCAuto<DataArrayInt> > extractDefCpp;
            convertToMapIntDataArrayInt(extractDef,extractDefCpp);
            return self->deduceNodeSubPartFromCellSubPart(extractDefCpp);
          }
 
-         MEDFileUMesh *extractPart(PyObject *extractDef) const throw(INTERP_KERNEL::Exception)
+         MEDFileUMesh *extractPart(PyObject *extractDef) const
          {
            std::map<int, MCAuto<DataArrayInt> > extractDefCpp;
            convertToMapIntDataArrayInt(extractDef,extractDefCpp);
            return self->extractPart(extractDefCpp);
          }
 
-         void setMeshes(PyObject *li, bool renum=false) throw(INTERP_KERNEL::Exception)
+         void setMeshes(PyObject *li, bool renum=false)
          {
            std::vector<const MEDCouplingUMesh *> ms;
            convertFromPyObjVectorOfObj<const MEDCoupling::MEDCouplingUMesh *>(li,SWIGTYPE_p_MEDCoupling__MEDCouplingUMesh,"MEDCouplingUMesh",ms);
            self->setMeshes(ms,renum);
          }
 
-         void setGroupsFromScratch(int meshDimRelToMax, PyObject *li, bool renum=false) throw(INTERP_KERNEL::Exception)
+         void setGroupsFromScratch(int meshDimRelToMax, PyObject *li, bool renum=false)
          {
            std::vector<const MEDCouplingUMesh *> ms;
            convertFromPyObjVectorOfObj<const MEDCoupling::MEDCouplingUMesh *>(li,SWIGTYPE_p_MEDCoupling__MEDCouplingUMesh,"MEDCouplingUMesh",ms);
            self->setGroupsFromScratch(meshDimRelToMax,ms,renum);
          }
          
-         void setGroupsOnSetMesh(int meshDimRelToMax, PyObject *li, bool renum=false) throw(INTERP_KERNEL::Exception)
+         void setGroupsOnSetMesh(int meshDimRelToMax, PyObject *li, bool renum=false)
          {
            std::vector<const MEDCouplingUMesh *> ms;
            convertFromPyObjVectorOfObj<const MEDCoupling::MEDCouplingUMesh *>(li,SWIGTYPE_p_MEDCoupling__MEDCouplingUMesh,"MEDCouplingUMesh",ms);
            self->setGroupsOnSetMesh(meshDimRelToMax,ms,renum);
          }
 
-         DataArrayDouble *getCoords() const throw(INTERP_KERNEL::Exception)
+         DataArrayDouble *getCoords() const
          {
            DataArrayDouble *ret=self->getCoords();
            if(ret)
@@ -1604,7 +1604,7 @@ namespace MEDCoupling
            return ret;
          }
 
-         PartDefinition *getPartDefAtLevel(int meshDimRelToMaxExt, INTERP_KERNEL::NormalizedCellType gt=INTERP_KERNEL::NORM_ERROR) const throw(INTERP_KERNEL::Exception)
+         PartDefinition *getPartDefAtLevel(int meshDimRelToMaxExt, INTERP_KERNEL::NormalizedCellType gt=INTERP_KERNEL::NORM_ERROR) const
          {
            const PartDefinition *ret(self->getPartDefAtLevel(meshDimRelToMaxExt,gt));
            if(ret)
@@ -1612,7 +1612,7 @@ namespace MEDCoupling
            return const_cast<PartDefinition *>(ret);
          }
 
-         PyObject *buildInnerBoundaryAlongM1Group(const std::string& grpNameM1) throw(INTERP_KERNEL::Exception)
+         PyObject *buildInnerBoundaryAlongM1Group(const std::string& grpNameM1)
          {
            DataArrayInt *ret0=0,*ret1=0,*ret2=0;
            self->buildInnerBoundaryAlongM1Group(grpNameM1,ret0,ret1,ret2);
@@ -1623,7 +1623,7 @@ namespace MEDCoupling
            return ret;
          }
          
-         MEDCoupling1GTUMesh *getDirectUndergroundSingleGeoTypeMesh(INTERP_KERNEL::NormalizedCellType gt) const throw(INTERP_KERNEL::Exception)
+         MEDCoupling1GTUMesh *getDirectUndergroundSingleGeoTypeMesh(INTERP_KERNEL::NormalizedCellType gt) const
          {
            MEDCoupling1GTUMesh *ret(self->getDirectUndergroundSingleGeoTypeMesh(gt));
            if(ret)
@@ -1631,7 +1631,7 @@ namespace MEDCoupling
            return ret;
          }
 
-         PyObject *getDirectUndergroundSingleGeoTypeMeshes(int meshDimRelToMax) const throw(INTERP_KERNEL::Exception)
+         PyObject *getDirectUndergroundSingleGeoTypeMeshes(int meshDimRelToMax) const
          {
            std::vector<MEDCoupling1GTUMesh *> tmp(self->getDirectUndergroundSingleGeoTypeMeshes(meshDimRelToMax));
            std::size_t sz(tmp.size());
@@ -1652,7 +1652,7 @@ namespace MEDCoupling
   public:
     %extend
     {
-      MEDCoupling1SGTUMesh *getImplicitFaceMesh() const throw(INTERP_KERNEL::Exception)
+      MEDCoupling1SGTUMesh *getImplicitFaceMesh() const
       {
         MEDCoupling1SGTUMesh *ret(self->getImplicitFaceMesh());
         if(ret)
@@ -1666,11 +1666,11 @@ namespace MEDCoupling
   {
   public:
     static MEDFileCMesh *New();
-    static MEDFileCMesh *New(DataArrayByte *db) throw(INTERP_KERNEL::Exception);
-    static MEDFileCMesh *New(const std::string& fileName, MEDFileMeshReadSelector *mrs=0) throw(INTERP_KERNEL::Exception);
-    static MEDFileCMesh *New(const std::string& fileName, const std::string& mName, int dt=-1, int it=-1, MEDFileMeshReadSelector *mrs=0) throw(INTERP_KERNEL::Exception);
-    void setMesh(MEDCouplingCMesh *m) throw(INTERP_KERNEL::Exception);
-    int getSpaceDimension() const throw(INTERP_KERNEL::Exception);
+    static MEDFileCMesh *New(DataArrayByte *db);
+    static MEDFileCMesh *New(const std::string& fileName, MEDFileMeshReadSelector *mrs=0);
+    static MEDFileCMesh *New(const std::string& fileName, const std::string& mName, int dt=-1, int it=-1, MEDFileMeshReadSelector *mrs=0);
+    void setMesh(MEDCouplingCMesh *m);
+    int getSpaceDimension() const;
     %extend
        {
          MEDFileCMesh()
@@ -1678,22 +1678,22 @@ namespace MEDCoupling
            return MEDFileCMesh::New();
          }
 
-         MEDFileCMesh(const std::string& fileName, MEDFileMeshReadSelector *mrs=0) throw(INTERP_KERNEL::Exception)
+         MEDFileCMesh(const std::string& fileName, MEDFileMeshReadSelector *mrs=0)
          {
            return MEDFileCMesh::New(fileName,mrs);
          }
 
-         MEDFileCMesh(const std::string& fileName, const std::string& mName, int dt=-1, int it=-1, MEDFileMeshReadSelector *mrs=0) throw(INTERP_KERNEL::Exception)
+         MEDFileCMesh(const std::string& fileName, const std::string& mName, int dt=-1, int it=-1, MEDFileMeshReadSelector *mrs=0)
          {
            return MEDFileCMesh::New(fileName,mName,dt,it,mrs);
          }
 
-         MEDFileCMesh(DataArrayByte *db) throw(INTERP_KERNEL::Exception)
+         MEDFileCMesh(DataArrayByte *db)
          {
            return MEDFileCMesh::New(db);
          }
          
-         PyObject *getMesh() const throw(INTERP_KERNEL::Exception)
+         PyObject *getMesh() const
          {
            const MEDCouplingCMesh *tmp=self->getMesh();
            if(tmp)
@@ -1707,10 +1707,10 @@ namespace MEDCoupling
   {
   public:
     static MEDFileCurveLinearMesh *New();
-    static MEDFileCurveLinearMesh *New(DataArrayByte *db) throw(INTERP_KERNEL::Exception);
-    static MEDFileCurveLinearMesh *New(const std::string& fileName, MEDFileMeshReadSelector *mrs=0) throw(INTERP_KERNEL::Exception);
-    static MEDFileCurveLinearMesh *New(const std::string& fileName, const std::string& mName, int dt=-1, int it=-1, MEDFileMeshReadSelector *mrs=0) throw(INTERP_KERNEL::Exception);
-    void setMesh(MEDCouplingCurveLinearMesh *m) throw(INTERP_KERNEL::Exception);
+    static MEDFileCurveLinearMesh *New(DataArrayByte *db);
+    static MEDFileCurveLinearMesh *New(const std::string& fileName, MEDFileMeshReadSelector *mrs=0);
+    static MEDFileCurveLinearMesh *New(const std::string& fileName, const std::string& mName, int dt=-1, int it=-1, MEDFileMeshReadSelector *mrs=0);
+    void setMesh(MEDCouplingCurveLinearMesh *m);
     %extend
        {
          MEDFileCurveLinearMesh()
@@ -1718,22 +1718,22 @@ namespace MEDCoupling
            return MEDFileCurveLinearMesh::New();
          }
 
-         MEDFileCurveLinearMesh(const std::string& fileName, MEDFileMeshReadSelector *mrs=0) throw(INTERP_KERNEL::Exception)
+         MEDFileCurveLinearMesh(const std::string& fileName, MEDFileMeshReadSelector *mrs=0)
          {
            return MEDFileCurveLinearMesh::New(fileName,mrs);
          }
 
-         MEDFileCurveLinearMesh(const std::string& fileName, const std::string& mName, int dt=-1, int it=-1, MEDFileMeshReadSelector *mrs=0) throw(INTERP_KERNEL::Exception)
+         MEDFileCurveLinearMesh(const std::string& fileName, const std::string& mName, int dt=-1, int it=-1, MEDFileMeshReadSelector *mrs=0)
          {
            return MEDFileCurveLinearMesh::New(fileName,mName,dt,it,mrs);
          }
 
-         MEDFileCurveLinearMesh(DataArrayByte *db) throw(INTERP_KERNEL::Exception)
+         MEDFileCurveLinearMesh(DataArrayByte *db)
          {
            return MEDFileCurveLinearMesh::New(db);
          }
          
-         PyObject *getMesh() const throw(INTERP_KERNEL::Exception)
+         PyObject *getMesh() const
          {
            const MEDCouplingCurveLinearMesh *tmp=self->getMesh();
            if(tmp)
@@ -1747,12 +1747,12 @@ namespace MEDCoupling
   {
   public:
     static MEDFileMeshMultiTS *New();
-    static MEDFileMeshMultiTS *New(const std::string& fileName) throw(INTERP_KERNEL::Exception);
-    static MEDFileMeshMultiTS *New(const std::string& fileName, const std::string& mName) throw(INTERP_KERNEL::Exception);
-    MEDFileMeshMultiTS *deepCopy() const throw(INTERP_KERNEL::Exception);
-    std::string getName() const throw(INTERP_KERNEL::Exception);
-    void setOneTimeStep(MEDFileMesh *mesh1TimeStep) throw(INTERP_KERNEL::Exception);
-    void cartesianizeMe() throw(INTERP_KERNEL::Exception);
+    static MEDFileMeshMultiTS *New(const std::string& fileName);
+    static MEDFileMeshMultiTS *New(const std::string& fileName, const std::string& mName);
+    MEDFileMeshMultiTS *deepCopy() const;
+    std::string getName() const;
+    void setOneTimeStep(MEDFileMesh *mesh1TimeStep);
+    void cartesianizeMe();
     %extend
        { 
          MEDFileMeshMultiTS()
@@ -1760,17 +1760,17 @@ namespace MEDCoupling
            return MEDFileMeshMultiTS::New();
          }
 
-         MEDFileMeshMultiTS(const std::string& fileName) throw(INTERP_KERNEL::Exception)
+         MEDFileMeshMultiTS(const std::string& fileName)
          {
            return MEDFileMeshMultiTS::New(fileName);
          }
 
-         MEDFileMeshMultiTS(const std::string& fileName, const std::string& mName) throw(INTERP_KERNEL::Exception)
+         MEDFileMeshMultiTS(const std::string& fileName, const std::string& mName)
          {
            return MEDFileMeshMultiTS::New(fileName,mName);
          }
 
-         MEDFileMesh *getOneTimeStep() const throw(INTERP_KERNEL::Exception)
+         MEDFileMesh *getOneTimeStep() const
            {
              MEDFileMesh *ret=self->getOneTimeStep();
              if(ret)
@@ -1785,7 +1785,7 @@ namespace MEDCoupling
   public:
     %extend
     {
-      PyObject *next() throw(INTERP_KERNEL::Exception)
+      PyObject *next()
       {
         MEDFileMesh *ret=self->nextt();
         if(ret)
@@ -1806,18 +1806,18 @@ namespace MEDCoupling
   {
   public:
     static MEDFileMeshes *New();
-    static MEDFileMeshes *New(DataArrayByte *db) throw(INTERP_KERNEL::Exception);
-    MEDFileMeshes *deepCopy() const throw(INTERP_KERNEL::Exception);
-    int getNumberOfMeshes() const throw(INTERP_KERNEL::Exception);
-    std::vector<std::string> getMeshesNames() const throw(INTERP_KERNEL::Exception);
+    static MEDFileMeshes *New(DataArrayByte *db);
+    MEDFileMeshes *deepCopy() const;
+    int getNumberOfMeshes() const;
+    std::vector<std::string> getMeshesNames() const;
     //
-    void resize(int newSize) throw(INTERP_KERNEL::Exception);
-    void pushMesh(MEDFileMesh *mesh) throw(INTERP_KERNEL::Exception);
-    void setMeshAtPos(int i, MEDFileMesh *mesh) throw(INTERP_KERNEL::Exception);
-    void destroyMeshAtPos(int i) throw(INTERP_KERNEL::Exception);
-    void cartesianizeMe() throw(INTERP_KERNEL::Exception);
-    bool presenceOfStructureElements() const throw(INTERP_KERNEL::Exception);
-    void killStructureElements() throw(INTERP_KERNEL::Exception);
+    void resize(int newSize);
+    void pushMesh(MEDFileMesh *mesh);
+    void setMeshAtPos(int i, MEDFileMesh *mesh);
+    void destroyMeshAtPos(int i);
+    void cartesianizeMe();
+    bool presenceOfStructureElements() const;
+    void killStructureElements();
     %extend
        {
          MEDFileMeshes()
@@ -1825,22 +1825,22 @@ namespace MEDCoupling
            return MEDFileMeshes::New();
          }
 
-         MEDFileMeshes(const std::string& fileName) throw(INTERP_KERNEL::Exception)
+         MEDFileMeshes(const std::string& fileName)
          {
            return MEDFileMeshes::New(fileName);
          }
 
-         MEDFileMeshes(DataArrayByte *db) throw(INTERP_KERNEL::Exception)
+         MEDFileMeshes(DataArrayByte *db)
          {
            return MEDFileMeshes::New(db);
          }
 
-         std::string __str__() const throw(INTERP_KERNEL::Exception)
+         std::string __str__() const
            {
              return self->simpleRepr();
            }
 
-         MEDFileMesh *__getitem__(PyObject *obj) throw(INTERP_KERNEL::Exception)
+         MEDFileMesh *__getitem__(PyObject *obj)
          {
            static const char msg[]="MEDFileMeshes::__getitem__ : only integer or string with meshname supported !";
              if(PyInt_Check(obj))
@@ -1856,30 +1856,30 @@ namespace MEDCoupling
            return ret;
          }
 
-         MEDFileMeshes *__setitem__(int obj, MEDFileMesh *mesh) throw(INTERP_KERNEL::Exception)
+         MEDFileMeshes *__setitem__(int obj, MEDFileMesh *mesh)
          {
            self->setMeshAtPos(obj,mesh);
            return self;
          }
 
-         MEDFileMeshesIterator *__iter__() throw(INTERP_KERNEL::Exception)
+         MEDFileMeshesIterator *__iter__()
          {
            return self->iterator();
          }
 
-         int __len__() const throw(INTERP_KERNEL::Exception)
+         int __len__() const
          {
            return self->getNumberOfMeshes();
          }
          
-         MEDFileMesh *getMeshAtPos(int i) const throw(INTERP_KERNEL::Exception)
+         MEDFileMesh *getMeshAtPos(int i) const
            {
              MEDFileMesh *ret=self->getMeshAtPos(i);
              if(ret)
                ret->incrRef();
              return ret;
            }
-         MEDFileMesh *getMeshWithName(const std::string& mname) const throw(INTERP_KERNEL::Exception)
+         MEDFileMesh *getMeshWithName(const std::string& mname) const
            {
              MEDFileMesh *ret=self->getMeshWithName(mname);
              if(ret)
@@ -1899,10 +1899,10 @@ namespace MEDCoupling
     const std::vector<double>& getRefCoords() const;
     const std::vector<double>& getGaussCoords() const;
     const std::vector<double>& getGaussWeights() const;
-    bool isEqual(const MEDFileFieldLoc& other, double eps) const throw(INTERP_KERNEL::Exception);
+    bool isEqual(const MEDFileFieldLoc& other, double eps) const;
   %extend
     {
-      std::string __str__() const throw(INTERP_KERNEL::Exception)
+      std::string __str__() const
       {
         return self->repr();
       }
@@ -1913,37 +1913,37 @@ namespace MEDCoupling
   {
   public:
     void resetContent();
-    void shallowCpyGlobs(const MEDFileFieldGlobsReal& other) throw(INTERP_KERNEL::Exception);
-    void deepCpyGlobs(const MEDFileFieldGlobsReal& other) throw(INTERP_KERNEL::Exception);
-    void shallowCpyOnlyUsedGlobs(const MEDFileFieldGlobsReal& other) throw(INTERP_KERNEL::Exception);
-    void deepCpyOnlyUsedGlobs(const MEDFileFieldGlobsReal& other) throw(INTERP_KERNEL::Exception);
-    void appendGlobs(const MEDFileFieldGlobsReal& other, double eps) throw(INTERP_KERNEL::Exception);
-    void checkGlobsCoherency() const throw(INTERP_KERNEL::Exception);
-    void checkGlobsPflsPartCoherency() const throw(INTERP_KERNEL::Exception);
-    void checkGlobsLocsPartCoherency() const throw(INTERP_KERNEL::Exception);
-    std::vector<std::string> getPfls() const throw(INTERP_KERNEL::Exception);
-    std::vector<std::string> getLocs() const throw(INTERP_KERNEL::Exception);
-    bool existsPfl(const std::string& pflName) const throw(INTERP_KERNEL::Exception);
-    bool existsLoc(const std::string& locName) const throw(INTERP_KERNEL::Exception);
-    std::string createNewNameOfPfl() const throw(INTERP_KERNEL::Exception);
-    std::string createNewNameOfLoc() const throw(INTERP_KERNEL::Exception);
-    std::vector< std::vector<int> > whichAreEqualProfiles() const throw(INTERP_KERNEL::Exception);
-    std::vector< std::vector<int> > whichAreEqualLocs(double eps) const throw(INTERP_KERNEL::Exception);
-    virtual std::vector<std::string> getPflsReallyUsed() const throw(INTERP_KERNEL::Exception);
-    virtual std::vector<std::string> getLocsReallyUsed() const throw(INTERP_KERNEL::Exception);
-    virtual std::vector<std::string> getPflsReallyUsedMulti() const throw(INTERP_KERNEL::Exception);
-    virtual std::vector<std::string> getLocsReallyUsedMulti() const throw(INTERP_KERNEL::Exception);
-    void killProfileIds(const std::vector<int>& pflIds) throw(INTERP_KERNEL::Exception);
-    void killLocalizationIds(const std::vector<int>& locIds) throw(INTERP_KERNEL::Exception);
-    void changePflName(const std::string& oldName, const std::string& newName) throw(INTERP_KERNEL::Exception);
-    void changeLocName(const std::string& oldName, const std::string& newName) throw(INTERP_KERNEL::Exception);
-    int getNbOfGaussPtPerCell(int locId) const throw(INTERP_KERNEL::Exception);
-    int getLocalizationId(const std::string& loc) const throw(INTERP_KERNEL::Exception);
-    int getProfileId(const std::string& pfl) const throw(INTERP_KERNEL::Exception);
-    void killStructureElementsInGlobs() throw(INTERP_KERNEL::Exception);
+    void shallowCpyGlobs(const MEDFileFieldGlobsReal& other);
+    void deepCpyGlobs(const MEDFileFieldGlobsReal& other);
+    void shallowCpyOnlyUsedGlobs(const MEDFileFieldGlobsReal& other);
+    void deepCpyOnlyUsedGlobs(const MEDFileFieldGlobsReal& other);
+    void appendGlobs(const MEDFileFieldGlobsReal& other, double eps);
+    void checkGlobsCoherency() const;
+    void checkGlobsPflsPartCoherency() const;
+    void checkGlobsLocsPartCoherency() const;
+    std::vector<std::string> getPfls() const;
+    std::vector<std::string> getLocs() const;
+    bool existsPfl(const std::string& pflName) const;
+    bool existsLoc(const std::string& locName) const;
+    std::string createNewNameOfPfl() const;
+    std::string createNewNameOfLoc() const;
+    std::vector< std::vector<int> > whichAreEqualProfiles() const;
+    std::vector< std::vector<int> > whichAreEqualLocs(double eps) const;
+    virtual std::vector<std::string> getPflsReallyUsed() const;
+    virtual std::vector<std::string> getLocsReallyUsed() const;
+    virtual std::vector<std::string> getPflsReallyUsedMulti() const;
+    virtual std::vector<std::string> getLocsReallyUsedMulti() const;
+    void killProfileIds(const std::vector<int>& pflIds);
+    void killLocalizationIds(const std::vector<int>& locIds);
+    void changePflName(const std::string& oldName, const std::string& newName);
+    void changeLocName(const std::string& oldName, const std::string& newName);
+    int getNbOfGaussPtPerCell(int locId) const;
+    int getLocalizationId(const std::string& loc) const;
+    int getProfileId(const std::string& pfl) const;
+    void killStructureElementsInGlobs();
   %extend
      {
-       PyObject *getProfile(const std::string& pflName) const throw(INTERP_KERNEL::Exception)
+       PyObject *getProfile(const std::string& pflName) const
        {
          const DataArrayInt *ret=self->getProfile(pflName);
          if(ret)
@@ -1951,7 +1951,7 @@ namespace MEDCoupling
          return SWIG_NewPointerObj(SWIG_as_voidptr(ret),SWIGTYPE_p_MEDCoupling__DataArrayInt, SWIG_POINTER_OWN | 0 );
        }
 
-       PyObject *getProfileFromId(int pflId) const throw(INTERP_KERNEL::Exception)
+       PyObject *getProfileFromId(int pflId) const
        {
          const DataArrayInt *ret=self->getProfileFromId(pflId);
          if(ret)
@@ -1959,7 +1959,7 @@ namespace MEDCoupling
          return SWIG_NewPointerObj(SWIG_as_voidptr(ret),SWIGTYPE_p_MEDCoupling__DataArrayInt, SWIG_POINTER_OWN | 0 );
        }
 
-       PyObject *getLocalizationFromId(int locId) const throw(INTERP_KERNEL::Exception)
+       PyObject *getLocalizationFromId(int locId) const
        {
          const MEDFileFieldLoc *loc=&self->getLocalizationFromId(locId);
          if(loc)
@@ -1967,7 +1967,7 @@ namespace MEDCoupling
          return SWIG_NewPointerObj(SWIG_as_voidptr(loc),SWIGTYPE_p_MEDCoupling__MEDFileFieldLoc, SWIG_POINTER_OWN | 0 );
        }
        
-       PyObject *getLocalization(const std::string& locName) const throw(INTERP_KERNEL::Exception)
+       PyObject *getLocalization(const std::string& locName) const
        {
          const MEDFileFieldLoc *loc=&self->getLocalization(locName);
          if(loc)
@@ -1975,55 +1975,55 @@ namespace MEDCoupling
          return SWIG_NewPointerObj(SWIG_as_voidptr(loc),SWIGTYPE_p_MEDCoupling__MEDFileFieldLoc, SWIG_POINTER_OWN | 0 );
        }
        
-       PyObject *zipPflsNames() throw(INTERP_KERNEL::Exception)
+       PyObject *zipPflsNames()
        {
          std::vector< std::pair<std::vector<std::string>, std::string > > ret=self->zipPflsNames();
          return convertVecPairVecStToPy(ret);
        }
 
-       PyObject *zipLocsNames(double eps) throw(INTERP_KERNEL::Exception)
+       PyObject *zipLocsNames(double eps)
        {
          std::vector< std::pair<std::vector<std::string>, std::string > > ret=self->zipLocsNames(eps);
          return convertVecPairVecStToPy(ret);
        }
 
-       void changePflsNames(PyObject *li) throw(INTERP_KERNEL::Exception)
+       void changePflsNames(PyObject *li)
        {
          std::vector< std::pair<std::vector<std::string>, std::string > > v=convertVecPairVecStFromPy(li);
          self->changePflsNames(v);
        }
 
-       void changePflsRefsNamesGen(PyObject *li) throw(INTERP_KERNEL::Exception)
+       void changePflsRefsNamesGen(PyObject *li)
        {
          std::vector< std::pair<std::vector<std::string>, std::string > > v=convertVecPairVecStFromPy(li);
          self->changePflsRefsNamesGen(v);
        }
 
-       void changePflsNamesInStruct(PyObject *li) throw(INTERP_KERNEL::Exception)
+       void changePflsNamesInStruct(PyObject *li)
        {
          std::vector< std::pair<std::vector<std::string>, std::string > > v=convertVecPairVecStFromPy(li);
          self->changePflsNamesInStruct(v);
        }
 
-       void changeLocsNames(PyObject *li) throw(INTERP_KERNEL::Exception)
+       void changeLocsNames(PyObject *li)
        {
          std::vector< std::pair<std::vector<std::string>, std::string > > v=convertVecPairVecStFromPy(li);
          self->changeLocsNames(v);
        }
 
-       void changeLocsRefsNamesGen(PyObject *li) throw(INTERP_KERNEL::Exception)
+       void changeLocsRefsNamesGen(PyObject *li)
        {
          std::vector< std::pair<std::vector<std::string>, std::string > > v=convertVecPairVecStFromPy(li);
          self->changeLocsRefsNamesGen(v);
        }
        
-       void changeLocsNamesInStruct(PyObject *li) throw(INTERP_KERNEL::Exception)
+       void changeLocsNamesInStruct(PyObject *li)
        {
          std::vector< std::pair<std::vector<std::string>, std::string > > v=convertVecPairVecStFromPy(li);
          self->changeLocsNamesInStruct(v);
        }
 
-       std::string simpleReprGlobs() const throw(INTERP_KERNEL::Exception)
+       std::string simpleReprGlobs() const
        {
          std::ostringstream oss;
          self->simpleReprGlobs(oss);
@@ -2037,7 +2037,7 @@ namespace MEDCoupling
   public:
     %extend
       {
-        static MEDFileEntities *BuildFrom(PyObject *entities) throw(INTERP_KERNEL::Exception)
+        static MEDFileEntities *BuildFrom(PyObject *entities)
         {
           std::vector< std::pair<TypeOfField,INTERP_KERNEL::NormalizedCellType> > inp;
           std::vector< std::pair<int,int> > inp0(convertTimePairIdsFromPy(entities));
@@ -2057,36 +2057,36 @@ namespace MEDCoupling
   class MEDFileAnyTypeField1TS : public RefCountObject, public MEDFileFieldGlobsReal, public MEDFileWritableStandAlone
   {
   public:
-    static MEDFileAnyTypeField1TS *New(const std::string& fileName, bool loadAll=true) throw(INTERP_KERNEL::Exception);
-    static MEDFileAnyTypeField1TS *New(const std::string& fileName, const std::string& fieldName, bool loadAll=true) throw(INTERP_KERNEL::Exception);
-    static MEDFileAnyTypeField1TS *New(const std::string& fileName, const std::string& fieldName, int iteration, int order, bool loadAll=true) throw(INTERP_KERNEL::Exception);
-    static MEDFileAnyTypeField1TS *NewAdv(const std::string& fileName, const std::string& fieldName, int iteration, int order, bool loadAll, const MEDFileEntities *entities) throw(INTERP_KERNEL::Exception);
-    void loadArrays() throw(INTERP_KERNEL::Exception);
-    void loadArraysIfNecessary() throw(INTERP_KERNEL::Exception);
-    void unloadArrays() throw(INTERP_KERNEL::Exception);
-    void unloadArraysWithoutDataLoss() throw(INTERP_KERNEL::Exception);
-    int getDimension() const throw(INTERP_KERNEL::Exception);
-    int getIteration() const throw(INTERP_KERNEL::Exception);
-    int getOrder() const throw(INTERP_KERNEL::Exception);
-    std::string getName() throw(INTERP_KERNEL::Exception);
-    void setName(const std::string& name) throw(INTERP_KERNEL::Exception);
-    std::string getMeshName() throw(INTERP_KERNEL::Exception);
-    void setMeshName(const std::string& newMeshName) throw(INTERP_KERNEL::Exception);
-    int getMeshIteration() const throw(INTERP_KERNEL::Exception);
-    int getMeshOrder() const throw(INTERP_KERNEL::Exception);
-    int getNumberOfComponents() const throw(INTERP_KERNEL::Exception);
-    bool isDealingTS(int iteration, int order) const throw(INTERP_KERNEL::Exception);
-    void setInfo(const std::vector<std::string>& infos) throw(INTERP_KERNEL::Exception);
-    const std::vector<std::string>& getInfo() const throw(INTERP_KERNEL::Exception);
-    bool presenceOfMultiDiscPerGeoType() const throw(INTERP_KERNEL::Exception);
-    void setTime(int iteration, int order, double val) throw(INTERP_KERNEL::Exception);
-    virtual MEDFileAnyTypeField1TS *shallowCpy() const throw(INTERP_KERNEL::Exception);
-    MEDFileAnyTypeField1TS *deepCopy() const throw(INTERP_KERNEL::Exception);
-    std::string getDtUnit() const throw(INTERP_KERNEL::Exception);
-    void setDtUnit(const std::string& dtUnit) throw(INTERP_KERNEL::Exception);
+    static MEDFileAnyTypeField1TS *New(const std::string& fileName, bool loadAll=true);
+    static MEDFileAnyTypeField1TS *New(const std::string& fileName, const std::string& fieldName, bool loadAll=true);
+    static MEDFileAnyTypeField1TS *New(const std::string& fileName, const std::string& fieldName, int iteration, int order, bool loadAll=true);
+    static MEDFileAnyTypeField1TS *NewAdv(const std::string& fileName, const std::string& fieldName, int iteration, int order, bool loadAll, const MEDFileEntities *entities);
+    void loadArrays();
+    void loadArraysIfNecessary();
+    void unloadArrays();
+    void unloadArraysWithoutDataLoss();
+    int getDimension() const;
+    int getIteration() const;
+    int getOrder() const;
+    std::string getName();
+    void setName(const std::string& name);
+    std::string getMeshName();
+    void setMeshName(const std::string& newMeshName);
+    int getMeshIteration() const;
+    int getMeshOrder() const;
+    int getNumberOfComponents() const;
+    bool isDealingTS(int iteration, int order) const;
+    void setInfo(const std::vector<std::string>& infos);
+    const std::vector<std::string>& getInfo() const;
+    bool presenceOfMultiDiscPerGeoType() const;
+    void setTime(int iteration, int order, double val);
+    virtual MEDFileAnyTypeField1TS *shallowCpy() const;
+    MEDFileAnyTypeField1TS *deepCopy() const;
+    std::string getDtUnit() const;
+    void setDtUnit(const std::string& dtUnit);
     %extend
     {
-      PyObject *getTime() throw(INTERP_KERNEL::Exception)
+      PyObject *getTime()
       {
         int tmp1,tmp2;
         double tmp0=self->getTime(tmp1,tmp2);
@@ -2097,7 +2097,7 @@ namespace MEDCoupling
         return res;
       }
 
-      PyObject *getDtIt() const throw(INTERP_KERNEL::Exception)
+      PyObject *getDtIt() const
       {
         std::pair<int,int> res=self->getDtIt();
         PyObject *elt=PyTuple_New(2);
@@ -2106,23 +2106,23 @@ namespace MEDCoupling
         return elt;
       }
 
-      void setProfileNameOnLeaf(INTERP_KERNEL::NormalizedCellType typ, int locId, const std::string& newPflName, bool forceRenameOnGlob=false) throw(INTERP_KERNEL::Exception)
+      void setProfileNameOnLeaf(INTERP_KERNEL::NormalizedCellType typ, int locId, const std::string& newPflName, bool forceRenameOnGlob=false)
       {
         self->setProfileNameOnLeaf(0,typ,locId,newPflName,forceRenameOnGlob);
       }
       
-      void setLocNameOnLeaf(INTERP_KERNEL::NormalizedCellType typ, int locId, const std::string& newLocName, bool forceRenameOnGlob=false) throw(INTERP_KERNEL::Exception)
+      void setLocNameOnLeaf(INTERP_KERNEL::NormalizedCellType typ, int locId, const std::string& newLocName, bool forceRenameOnGlob=false)
       {
         self->setLocNameOnLeaf(0,typ,locId,newLocName,forceRenameOnGlob);
       }
 
-      bool changeMeshNames(PyObject *li) throw(INTERP_KERNEL::Exception)
+      bool changeMeshNames(PyObject *li)
       {
         std::vector< std::pair<std::string,std::string> > modifTab=convertVecPairStStFromPy(li);
         return self->changeMeshNames(modifTab);
       }
       
-      PyObject *getTypesOfFieldAvailable() const throw(INTERP_KERNEL::Exception)
+      PyObject *getTypesOfFieldAvailable() const
       {
         std::vector<TypeOfField> ret=self->getTypesOfFieldAvailable();
         PyObject *ret2=PyList_New(ret.size());
@@ -2131,7 +2131,7 @@ namespace MEDCoupling
         return ret2;
       }
 
-      PyObject *getNonEmptyLevels(const std::string& mname=std::string()) const throw(INTERP_KERNEL::Exception)
+      PyObject *getNonEmptyLevels(const std::string& mname=std::string()) const
       {
         std::vector<int> ret1;
         int ret0=self->getNonEmptyLevels(mname,ret1);
@@ -2141,7 +2141,7 @@ namespace MEDCoupling
         return elt;
       }
 
-      PyObject *getFieldSplitedByType(const std::string& mname=std::string()) const throw(INTERP_KERNEL::Exception)
+      PyObject *getFieldSplitedByType(const std::string& mname=std::string()) const
       {
         std::vector<INTERP_KERNEL::NormalizedCellType> types;
         std::vector< std::vector<TypeOfField> > typesF;
@@ -2176,7 +2176,7 @@ namespace MEDCoupling
            return ret2;
       }
 
-      PyObject *splitComponents() const throw(INTERP_KERNEL::Exception)
+      PyObject *splitComponents() const
       {
         std::vector< MCAuto< MEDFileAnyTypeField1TS > > ret=self->splitComponents();
         std::size_t sz=ret.size();
@@ -2186,7 +2186,7 @@ namespace MEDCoupling
         return retPy;
       }
 
-      PyObject *splitDiscretizations() const throw(INTERP_KERNEL::Exception)
+      PyObject *splitDiscretizations() const
       {
         std::vector< MCAuto< MEDFileAnyTypeField1TS > > ret=self->splitDiscretizations();
         std::size_t sz=ret.size();
@@ -2196,7 +2196,7 @@ namespace MEDCoupling
         return retPy;
       }
 
-      PyObject *splitMultiDiscrPerGeoTypes() const throw(INTERP_KERNEL::Exception)
+      PyObject *splitMultiDiscrPerGeoTypes() const
       {
         std::vector< MCAuto< MEDFileAnyTypeField1TS > > ret=self->splitMultiDiscrPerGeoTypes();
         std::size_t sz=ret.size();
@@ -2206,7 +2206,7 @@ namespace MEDCoupling
         return retPy;
       }
 
-      MEDFileAnyTypeField1TS *extractPart(PyObject *extractDef, MEDFileMesh *mm) const throw(INTERP_KERNEL::Exception)
+      MEDFileAnyTypeField1TS *extractPart(PyObject *extractDef, MEDFileMesh *mm) const
       {
         std::map<int, MCAuto<DataArrayInt> > extractDefCpp;
         convertToMapIntDataArrayInt(extractDef,extractDefCpp);
@@ -2218,43 +2218,43 @@ namespace MEDCoupling
   class MEDFileField1TS : public MEDFileAnyTypeField1TS
   {
   public:
-    static MEDFileField1TS *New(const std::string& fileName, const std::string& fieldName, int iteration, int order, bool loadAll=true) throw(INTERP_KERNEL::Exception);
-    static MEDFileField1TS *New(const std::string& fileName, const std::string& fieldName, bool loadAll=true) throw(INTERP_KERNEL::Exception);
-    static MEDFileField1TS *New(const std::string& fileName, bool loadAll=true) throw(INTERP_KERNEL::Exception);
-    static MEDFileField1TS *New(DataArrayByte *db) throw(INTERP_KERNEL::Exception);
+    static MEDFileField1TS *New(const std::string& fileName, const std::string& fieldName, int iteration, int order, bool loadAll=true);
+    static MEDFileField1TS *New(const std::string& fileName, const std::string& fieldName, bool loadAll=true);
+    static MEDFileField1TS *New(const std::string& fileName, bool loadAll=true);
+    static MEDFileField1TS *New(DataArrayByte *db);
     static MEDFileField1TS *New();
-    MEDCoupling::MEDFileIntField1TS *convertToInt(bool isDeepCpyGlobs=true) const throw(INTERP_KERNEL::Exception);
-    void copyTimeInfoFrom(MEDCouplingFieldDouble *mcf) throw(INTERP_KERNEL::Exception);
-    MEDCouplingFieldDouble *field(const MEDFileMesh *mesh) const throw(INTERP_KERNEL::Exception);
-    MEDCouplingFieldDouble *getFieldAtLevel(TypeOfField type, int meshDimRelToMax, int renumPol=0) const throw(INTERP_KERNEL::Exception);
-    MEDCouplingFieldDouble *getFieldAtTopLevel(TypeOfField type, int renumPol=0) const throw(INTERP_KERNEL::Exception);
-    MEDCouplingFieldDouble *getFieldOnMeshAtLevel(TypeOfField type, const MEDCouplingMesh *mesh, int renumPol=0) const throw(INTERP_KERNEL::Exception);
-    MEDCouplingFieldDouble *getFieldOnMeshAtLevel(TypeOfField type, int meshDimRelToMax, const MEDFileMesh *mesh, int renumPol=0) const throw(INTERP_KERNEL::Exception);
-    MEDCouplingFieldDouble *getFieldAtLevelOld(TypeOfField type, const std::string& mname, int meshDimRelToMax, int renumPol=0) const throw(INTERP_KERNEL::Exception);
+    MEDCoupling::MEDFileIntField1TS *convertToInt(bool isDeepCpyGlobs=true) const;
+    void copyTimeInfoFrom(MEDCouplingFieldDouble *mcf);
+    MEDCouplingFieldDouble *field(const MEDFileMesh *mesh) const;
+    MEDCouplingFieldDouble *getFieldAtLevel(TypeOfField type, int meshDimRelToMax, int renumPol=0) const;
+    MEDCouplingFieldDouble *getFieldAtTopLevel(TypeOfField type, int renumPol=0) const;
+    MEDCouplingFieldDouble *getFieldOnMeshAtLevel(TypeOfField type, const MEDCouplingMesh *mesh, int renumPol=0) const;
+    MEDCouplingFieldDouble *getFieldOnMeshAtLevel(TypeOfField type, int meshDimRelToMax, const MEDFileMesh *mesh, int renumPol=0) const;
+    MEDCouplingFieldDouble *getFieldAtLevelOld(TypeOfField type, const std::string& mname, int meshDimRelToMax, int renumPol=0) const;
     //
-    void setFieldNoProfileSBT(const MEDCouplingFieldDouble *field) throw(INTERP_KERNEL::Exception);
-    void setFieldProfile(const MEDCouplingFieldDouble *field, const MEDFileMesh *mesh, int meshDimRelToMax, const DataArrayInt *profile) throw(INTERP_KERNEL::Exception);
-    void setFieldProfileFlatly(const MEDCouplingFieldDouble *field, const MEDFileMesh *mesh, int meshDimRelToMax, const DataArrayInt *profile) throw(INTERP_KERNEL::Exception);
-    void setProfileNameOnLeaf(const std::string& mName, INTERP_KERNEL::NormalizedCellType typ, int locId, const std::string& newPflName, bool forceRenameOnGlob=false) throw(INTERP_KERNEL::Exception);
-    void setLocNameOnLeaf(const std::string& mName, INTERP_KERNEL::NormalizedCellType typ, int locId, const std::string& newLocName, bool forceRenameOnGlob=false) throw(INTERP_KERNEL::Exception);
+    void setFieldNoProfileSBT(const MEDCouplingFieldDouble *field);
+    void setFieldProfile(const MEDCouplingFieldDouble *field, const MEDFileMesh *mesh, int meshDimRelToMax, const DataArrayInt *profile);
+    void setFieldProfileFlatly(const MEDCouplingFieldDouble *field, const MEDFileMesh *mesh, int meshDimRelToMax, const DataArrayInt *profile);
+    void setProfileNameOnLeaf(const std::string& mName, INTERP_KERNEL::NormalizedCellType typ, int locId, const std::string& newPflName, bool forceRenameOnGlob=false);
+    void setLocNameOnLeaf(const std::string& mName, INTERP_KERNEL::NormalizedCellType typ, int locId, const std::string& newLocName, bool forceRenameOnGlob=false);
     %extend
        {
-         MEDFileField1TS(const std::string& fileName, bool loadAll=true) throw(INTERP_KERNEL::Exception)
+         MEDFileField1TS(const std::string& fileName, bool loadAll=true)
          {
            return MEDFileField1TS::New(fileName,loadAll);
          }
          
-         MEDFileField1TS(const std::string& fileName, const std::string& fieldName, bool loadAll=true) throw(INTERP_KERNEL::Exception)
+         MEDFileField1TS(const std::string& fileName, const std::string& fieldName, bool loadAll=true)
          {
            return MEDFileField1TS::New(fileName,fieldName,loadAll);
          }
 
-         MEDFileField1TS(const std::string& fileName, const std::string& fieldName, int iteration, int order, bool loadAll=true) throw(INTERP_KERNEL::Exception)
+         MEDFileField1TS(const std::string& fileName, const std::string& fieldName, int iteration, int order, bool loadAll=true)
          {
            return MEDFileField1TS::New(fileName,fieldName,iteration,order,loadAll);
          }
 
-         MEDFileField1TS(DataArrayByte *db) throw(INTERP_KERNEL::Exception)
+         MEDFileField1TS(DataArrayByte *db)
          {
            return MEDFileField1TS::New(db);
          }
@@ -2264,7 +2264,7 @@ namespace MEDCoupling
            return MEDFileField1TS::New();
          }
          
-         void copyTinyInfoFrom(const MEDCouplingFieldDouble *field) throw(INTERP_KERNEL::Exception)
+         void copyTinyInfoFrom(const MEDCouplingFieldDouble *field)
          {
            const DataArrayDouble *arr=0;
            if(field)
@@ -2272,17 +2272,17 @@ namespace MEDCoupling
            self->copyTinyInfoFrom(field,arr);
          }
          
-         std::string __str__() const throw(INTERP_KERNEL::Exception)
+         std::string __str__() const
          {
            return self->simpleRepr();
          }
          
-         PyObject *getFieldWithProfile(TypeOfField type, int meshDimRelToMax, const MEDFileMesh *mesh) const throw(INTERP_KERNEL::Exception)
+         PyObject *getFieldWithProfile(TypeOfField type, int meshDimRelToMax, const MEDFileMesh *mesh) const
          {
            return MEDFileField1TS_getFieldWithProfile<double>(self,type,meshDimRelToMax,mesh);
          }
 
-         PyObject *getFieldSplitedByType2(const std::string& mname=std::string()) const throw(INTERP_KERNEL::Exception)
+         PyObject *getFieldSplitedByType2(const std::string& mname=std::string()) const
          {
            std::vector<INTERP_KERNEL::NormalizedCellType> types;
            std::vector< std::vector<TypeOfField> > typesF;
@@ -2316,7 +2316,7 @@ namespace MEDCoupling
            return ret2;
          }
 
-         DataArrayDouble *getUndergroundDataArray() const throw(INTERP_KERNEL::Exception)
+         DataArrayDouble *getUndergroundDataArray() const
          {
            DataArrayDouble *ret=self->getUndergroundDataArray();
            if(ret)
@@ -2324,7 +2324,7 @@ namespace MEDCoupling
            return ret;
          }
 
-         PyObject *getUndergroundDataArrayExt() const throw(INTERP_KERNEL::Exception)
+         PyObject *getUndergroundDataArrayExt() const
          {
            return MEDFileField1TS_getUndergroundDataArrayExt<double>(self);
          }
@@ -2335,60 +2335,60 @@ namespace MEDCoupling
   {
   public:
     static MEDFileIntField1TS *New();
-    static MEDFileIntField1TS *New(const std::string& fileName, bool loadAll=true) throw(INTERP_KERNEL::Exception);
-    static MEDFileIntField1TS *New(DataArrayByte *db) throw(INTERP_KERNEL::Exception);
-    static MEDFileIntField1TS *New(const std::string& fileName, const std::string& fieldName, bool loadAll=true) throw(INTERP_KERNEL::Exception);
-    static MEDFileIntField1TS *New(const std::string& fileName, const std::string& fieldName, int iteration, int order, bool loadAll=true) throw(INTERP_KERNEL::Exception);
-    MEDCoupling::MEDFileField1TS *convertToDouble(bool isDeepCpyGlobs=true) const throw(INTERP_KERNEL::Exception);
+    static MEDFileIntField1TS *New(const std::string& fileName, bool loadAll=true);
+    static MEDFileIntField1TS *New(DataArrayByte *db);
+    static MEDFileIntField1TS *New(const std::string& fileName, const std::string& fieldName, bool loadAll=true);
+    static MEDFileIntField1TS *New(const std::string& fileName, const std::string& fieldName, int iteration, int order, bool loadAll=true);
+    MEDCoupling::MEDFileField1TS *convertToDouble(bool isDeepCpyGlobs=true) const;
     //
-    void setFieldNoProfileSBT(const MEDCouplingFieldInt *field) throw(INTERP_KERNEL::Exception);
-    void setFieldProfile(const MEDCouplingFieldInt *field, const MEDFileMesh *mesh, int meshDimRelToMax, const DataArrayInt *profile) throw(INTERP_KERNEL::Exception);
-    void setFieldProfileFlatly(const MEDCouplingFieldInt *field, const MEDFileMesh *mesh, int meshDimRelToMax, const DataArrayInt *profile) throw(INTERP_KERNEL::Exception);
-    void copyTimeInfoFrom(MEDCouplingFieldInt *mcf) throw(INTERP_KERNEL::Exception);
-    MEDCouplingFieldInt *field(const MEDFileMesh *mesh) const throw(INTERP_KERNEL::Exception);
-    MEDCouplingFieldInt *getFieldAtLevel(TypeOfField type, int meshDimRelToMax, int renumPol=0) const throw(INTERP_KERNEL::Exception);
-    MEDCouplingFieldInt *getFieldAtTopLevel(TypeOfField type, int renumPol=0) const throw(INTERP_KERNEL::Exception);
-    MEDCouplingFieldInt *getFieldOnMeshAtLevel(TypeOfField type, int meshDimRelToMax, const MEDFileMesh *mesh, int renumPol=0) const throw(INTERP_KERNEL::Exception);
-    MEDCouplingFieldInt *getFieldOnMeshAtLevel(TypeOfField type, const MEDCouplingMesh *mesh, int renumPol=0) const throw(INTERP_KERNEL::Exception);
-    MEDCouplingFieldInt *getFieldAtLevelOld(TypeOfField type, const std::string& mname, int meshDimRelToMax, int renumPol=0) const throw(INTERP_KERNEL::Exception);
+    void setFieldNoProfileSBT(const MEDCouplingFieldInt *field);
+    void setFieldProfile(const MEDCouplingFieldInt *field, const MEDFileMesh *mesh, int meshDimRelToMax, const DataArrayInt *profile);
+    void setFieldProfileFlatly(const MEDCouplingFieldInt *field, const MEDFileMesh *mesh, int meshDimRelToMax, const DataArrayInt *profile);
+    void copyTimeInfoFrom(MEDCouplingFieldInt *mcf);
+    MEDCouplingFieldInt *field(const MEDFileMesh *mesh) const;
+    MEDCouplingFieldInt *getFieldAtLevel(TypeOfField type, int meshDimRelToMax, int renumPol=0) const;
+    MEDCouplingFieldInt *getFieldAtTopLevel(TypeOfField type, int renumPol=0) const;
+    MEDCouplingFieldInt *getFieldOnMeshAtLevel(TypeOfField type, int meshDimRelToMax, const MEDFileMesh *mesh, int renumPol=0) const;
+    MEDCouplingFieldInt *getFieldOnMeshAtLevel(TypeOfField type, const MEDCouplingMesh *mesh, int renumPol=0) const;
+    MEDCouplingFieldInt *getFieldAtLevelOld(TypeOfField type, const std::string& mname, int meshDimRelToMax, int renumPol=0) const;
     %extend
     {
-      MEDFileIntField1TS() throw(INTERP_KERNEL::Exception)
+      MEDFileIntField1TS()
       {
         return MEDFileIntField1TS::New();
       }
 
-      MEDFileIntField1TS(const std::string& fileName, bool loadAll=true) throw(INTERP_KERNEL::Exception)
+      MEDFileIntField1TS(const std::string& fileName, bool loadAll=true)
       {
         return MEDFileIntField1TS::New(fileName,loadAll);
       }
 
-      MEDFileIntField1TS(const std::string& fileName, const std::string& fieldName, bool loadAll=true) throw(INTERP_KERNEL::Exception)
+      MEDFileIntField1TS(const std::string& fileName, const std::string& fieldName, bool loadAll=true)
       {
         return MEDFileIntField1TS::New(fileName,fieldName,loadAll);
       }
 
-      MEDFileIntField1TS(const std::string& fileName, const std::string& fieldName, int iteration, int order, bool loadAll=true) throw(INTERP_KERNEL::Exception)
+      MEDFileIntField1TS(const std::string& fileName, const std::string& fieldName, int iteration, int order, bool loadAll=true)
       {
         return MEDFileIntField1TS::New(fileName,fieldName,iteration,order,loadAll);
       }
 
-      MEDFileIntField1TS(DataArrayByte *db) throw(INTERP_KERNEL::Exception)
+      MEDFileIntField1TS(DataArrayByte *db)
       {
         return MEDFileIntField1TS::New(db);
       }
 
-      std::string __str__() const throw(INTERP_KERNEL::Exception)
+      std::string __str__() const
       {
         return self->simpleRepr();
       }
 
-      PyObject *getFieldWithProfile(TypeOfField type, int meshDimRelToMax, const MEDFileMesh *mesh) const throw(INTERP_KERNEL::Exception)
+      PyObject *getFieldWithProfile(TypeOfField type, int meshDimRelToMax, const MEDFileMesh *mesh) const
       {
          return MEDFileField1TS_getFieldWithProfile<int>(self,type,meshDimRelToMax,mesh);
       }
       
-      DataArrayInt *getUndergroundDataArray() const throw(INTERP_KERNEL::Exception)
+      DataArrayInt *getUndergroundDataArray() const
       {
         DataArrayInt *ret=self->getUndergroundDataArray();
         if(ret)
@@ -2396,7 +2396,7 @@ namespace MEDCoupling
         return ret;
       }
 
-      PyObject *getUndergroundDataArrayExt() const throw(INTERP_KERNEL::Exception)
+      PyObject *getUndergroundDataArrayExt() const
       {
         return MEDFileField1TS_getUndergroundDataArrayExt<int>(self);
       }
@@ -2407,60 +2407,60 @@ namespace MEDCoupling
   {
   public:
     static MEDFileFloatField1TS *New();
-    static MEDFileFloatField1TS *New(const std::string& fileName, bool loadAll=true) throw(INTERP_KERNEL::Exception);
-    static MEDFileFloatField1TS *New(DataArrayByte *db) throw(INTERP_KERNEL::Exception);
-    static MEDFileFloatField1TS *New(const std::string& fileName, const std::string& fieldName, bool loadAll=true) throw(INTERP_KERNEL::Exception);
-    static MEDFileFloatField1TS *New(const std::string& fileName, const std::string& fieldName, int iteration, int order, bool loadAll=true) throw(INTERP_KERNEL::Exception);
-    MEDCoupling::MEDFileField1TS *convertToDouble(bool isDeepCpyGlobs=true) const throw(INTERP_KERNEL::Exception);
+    static MEDFileFloatField1TS *New(const std::string& fileName, bool loadAll=true);
+    static MEDFileFloatField1TS *New(DataArrayByte *db);
+    static MEDFileFloatField1TS *New(const std::string& fileName, const std::string& fieldName, bool loadAll=true);
+    static MEDFileFloatField1TS *New(const std::string& fileName, const std::string& fieldName, int iteration, int order, bool loadAll=true);
+    MEDCoupling::MEDFileField1TS *convertToDouble(bool isDeepCpyGlobs=true) const;
     //
-    void setFieldNoProfileSBT(const MEDCouplingFieldFloat *field) throw(INTERP_KERNEL::Exception);
-    void setFieldProfile(const MEDCouplingFieldFloat *field, const MEDFileMesh *mesh, int meshDimRelToMax, const DataArrayInt *profile) throw(INTERP_KERNEL::Exception);
-    void setFieldProfileFlatly(const MEDCouplingFieldFloat *field, const MEDFileMesh *mesh, int meshDimRelToMax, const DataArrayInt *profile) throw(INTERP_KERNEL::Exception);
-    void copyTimeInfoFrom(MEDCouplingFieldFloat *mcf) throw(INTERP_KERNEL::Exception);
-    MEDCouplingFieldFloat *field(const MEDFileMesh *mesh) const throw(INTERP_KERNEL::Exception);
-    MEDCouplingFieldFloat *getFieldAtLevel(TypeOfField type, int meshDimRelToMax, int renumPol=0) const throw(INTERP_KERNEL::Exception);
-    MEDCouplingFieldFloat *getFieldAtTopLevel(TypeOfField type, int renumPol=0) const throw(INTERP_KERNEL::Exception);
-    MEDCouplingFieldFloat *getFieldOnMeshAtLevel(TypeOfField type, int meshDimRelToMax, const MEDFileMesh *mesh, int renumPol=0) const throw(INTERP_KERNEL::Exception);
-    MEDCouplingFieldFloat *getFieldOnMeshAtLevel(TypeOfField type, const MEDCouplingMesh *mesh, int renumPol=0) const throw(INTERP_KERNEL::Exception);
-    MEDCouplingFieldFloat *getFieldAtLevelOld(TypeOfField type, const std::string& mname, int meshDimRelToMax, int renumPol=0) const throw(INTERP_KERNEL::Exception);
+    void setFieldNoProfileSBT(const MEDCouplingFieldFloat *field);
+    void setFieldProfile(const MEDCouplingFieldFloat *field, const MEDFileMesh *mesh, int meshDimRelToMax, const DataArrayInt *profile);
+    void setFieldProfileFlatly(const MEDCouplingFieldFloat *field, const MEDFileMesh *mesh, int meshDimRelToMax, const DataArrayInt *profile);
+    void copyTimeInfoFrom(MEDCouplingFieldFloat *mcf);
+    MEDCouplingFieldFloat *field(const MEDFileMesh *mesh) const;
+    MEDCouplingFieldFloat *getFieldAtLevel(TypeOfField type, int meshDimRelToMax, int renumPol=0) const;
+    MEDCouplingFieldFloat *getFieldAtTopLevel(TypeOfField type, int renumPol=0) const;
+    MEDCouplingFieldFloat *getFieldOnMeshAtLevel(TypeOfField type, int meshDimRelToMax, const MEDFileMesh *mesh, int renumPol=0) const;
+    MEDCouplingFieldFloat *getFieldOnMeshAtLevel(TypeOfField type, const MEDCouplingMesh *mesh, int renumPol=0) const;
+    MEDCouplingFieldFloat *getFieldAtLevelOld(TypeOfField type, const std::string& mname, int meshDimRelToMax, int renumPol=0) const;
     %extend
     {
-      MEDFileFloatField1TS() throw(INTERP_KERNEL::Exception)
+      MEDFileFloatField1TS()
       {
         return MEDFileFloatField1TS::New();
       }
 
-      MEDFileFloatField1TS(const std::string& fileName, bool loadAll=true) throw(INTERP_KERNEL::Exception)
+      MEDFileFloatField1TS(const std::string& fileName, bool loadAll=true)
       {
         return MEDFileFloatField1TS::New(fileName,loadAll);
       }
 
-      MEDFileFloatField1TS(const std::string& fileName, const std::string& fieldName, bool loadAll=true) throw(INTERP_KERNEL::Exception)
+      MEDFileFloatField1TS(const std::string& fileName, const std::string& fieldName, bool loadAll=true)
       {
         return MEDFileFloatField1TS::New(fileName,fieldName,loadAll);
       }
 
-      MEDFileFloatField1TS(const std::string& fileName, const std::string& fieldName, int iteration, int order, bool loadAll=true) throw(INTERP_KERNEL::Exception)
+      MEDFileFloatField1TS(const std::string& fileName, const std::string& fieldName, int iteration, int order, bool loadAll=true)
       {
         return MEDFileFloatField1TS::New(fileName,fieldName,iteration,order,loadAll);
       }
 
-      MEDFileFloatField1TS(DataArrayByte *db) throw(INTERP_KERNEL::Exception)
+      MEDFileFloatField1TS(DataArrayByte *db)
       {
         return MEDFileFloatField1TS::New(db);
       }
 
-      std::string __str__() const throw(INTERP_KERNEL::Exception)
+      std::string __str__() const
       {
         return self->simpleRepr();
       }
 
-      PyObject *getFieldWithProfile(TypeOfField type, int meshDimRelToMax, const MEDFileMesh *mesh) const throw(INTERP_KERNEL::Exception)
+      PyObject *getFieldWithProfile(TypeOfField type, int meshDimRelToMax, const MEDFileMesh *mesh) const
       {
          return MEDFileField1TS_getFieldWithProfile<float>(self,type,meshDimRelToMax,mesh);
       }
       
-      DataArrayFloat *getUndergroundDataArray() const throw(INTERP_KERNEL::Exception)
+      DataArrayFloat *getUndergroundDataArray() const
       {
         DataArrayFloat *ret=self->getUndergroundDataArray();
         if(ret)
@@ -2468,7 +2468,7 @@ namespace MEDCoupling
         return ret;
       }
       
-      PyObject *getUndergroundDataArrayExt() const throw(INTERP_KERNEL::Exception)
+      PyObject *getUndergroundDataArrayExt() const
       {
         return MEDFileField1TS_getUndergroundDataArrayExt<float>(self);
       }
@@ -2480,7 +2480,7 @@ namespace MEDCoupling
   public:
     %extend
     {
-      PyObject *next() throw(INTERP_KERNEL::Exception)
+      PyObject *next()
       {
         MEDFileAnyTypeField1TS *ret=self->nextt();
         if(ret)
@@ -2497,42 +2497,42 @@ namespace MEDCoupling
   class MEDFileAnyTypeFieldMultiTS : public RefCountObject, public MEDFileFieldGlobsReal, public MEDFileWritableStandAlone
   {
   public:
-    static MEDFileAnyTypeFieldMultiTS *New(const std::string& fileName, bool loadAll=true) throw(INTERP_KERNEL::Exception);
-    static MEDFileAnyTypeFieldMultiTS *New(const std::string& fileName, const std::string& fieldName, bool loadAll=true) throw(INTERP_KERNEL::Exception);
-    MEDFileAnyTypeFieldMultiTS *deepCopy() const throw(INTERP_KERNEL::Exception);
-    virtual MEDFileAnyTypeFieldMultiTS *shallowCpy() const throw(INTERP_KERNEL::Exception);
-    std::string getName() const throw(INTERP_KERNEL::Exception);
-    void setName(const std::string& name) throw(INTERP_KERNEL::Exception);
-    std::string getDtUnit() const throw(INTERP_KERNEL::Exception);
-    void setDtUnit(const std::string& dtUnit) throw(INTERP_KERNEL::Exception);
-    std::string getMeshName() const throw(INTERP_KERNEL::Exception);
-    void setMeshName(const std::string& newMeshName) throw(INTERP_KERNEL::Exception);
-    const std::vector<std::string>& getInfo() const throw(INTERP_KERNEL::Exception);
-    bool presenceOfMultiDiscPerGeoType() const throw(INTERP_KERNEL::Exception);
-    int getNumberOfComponents() const throw(INTERP_KERNEL::Exception);
-    int getNumberOfTS() const throw(INTERP_KERNEL::Exception);
-    void eraseEmptyTS() throw(INTERP_KERNEL::Exception);
-    int getPosOfTimeStep(int iteration, int order) const throw(INTERP_KERNEL::Exception);
-    int getPosGivenTime(double time, double eps=1e-8) const throw(INTERP_KERNEL::Exception);
-    void loadArrays() throw(INTERP_KERNEL::Exception);
-    void loadArraysIfNecessary() throw(INTERP_KERNEL::Exception);
-    void unloadArrays() throw(INTERP_KERNEL::Exception);
-    void unloadArraysWithoutDataLoss() throw(INTERP_KERNEL::Exception);
+    static MEDFileAnyTypeFieldMultiTS *New(const std::string& fileName, bool loadAll=true);
+    static MEDFileAnyTypeFieldMultiTS *New(const std::string& fileName, const std::string& fieldName, bool loadAll=true);
+    MEDFileAnyTypeFieldMultiTS *deepCopy() const;
+    virtual MEDFileAnyTypeFieldMultiTS *shallowCpy() const;
+    std::string getName() const;
+    void setName(const std::string& name);
+    std::string getDtUnit() const;
+    void setDtUnit(const std::string& dtUnit);
+    std::string getMeshName() const;
+    void setMeshName(const std::string& newMeshName);
+    const std::vector<std::string>& getInfo() const;
+    bool presenceOfMultiDiscPerGeoType() const;
+    int getNumberOfComponents() const;
+    int getNumberOfTS() const;
+    void eraseEmptyTS();
+    int getPosOfTimeStep(int iteration, int order) const;
+    int getPosGivenTime(double time, double eps=1e-8) const;
+    void loadArrays();
+    void loadArraysIfNecessary();
+    void unloadArrays();
+    void unloadArraysWithoutDataLoss();
     //
-    virtual MEDFileAnyTypeField1TS *getTimeStepAtPos(int pos) const throw(INTERP_KERNEL::Exception);
-    MEDFileAnyTypeField1TS *getTimeStep(int iteration, int order) const throw(INTERP_KERNEL::Exception);
-    MEDFileAnyTypeField1TS *getTimeStepGivenTime(double time, double eps=1e-8) const throw(INTERP_KERNEL::Exception);
-    void pushBackTimeStep(MEDFileAnyTypeField1TS *f1ts) throw(INTERP_KERNEL::Exception);
-    void synchronizeNameScope() throw(INTERP_KERNEL::Exception);
-    MEDFileAnyTypeFieldMultiTS *buildNewEmpty() const throw(INTERP_KERNEL::Exception);
+    virtual MEDFileAnyTypeField1TS *getTimeStepAtPos(int pos) const;
+    MEDFileAnyTypeField1TS *getTimeStep(int iteration, int order) const;
+    MEDFileAnyTypeField1TS *getTimeStepGivenTime(double time, double eps=1e-8) const;
+    void pushBackTimeStep(MEDFileAnyTypeField1TS *f1ts);
+    void synchronizeNameScope();
+    MEDFileAnyTypeFieldMultiTS *buildNewEmpty() const;
     %extend
     {
-      int __len__() const throw(INTERP_KERNEL::Exception)
+      int __len__() const
       {
         return self->getNumberOfTS();
       }
 
-      int getTimeId(PyObject *elt0) const throw(INTERP_KERNEL::Exception)
+      int getTimeId(PyObject *elt0) const
       {
         if(elt0 && PyInt_Check(elt0))
           {//fmts[3]
@@ -2566,13 +2566,13 @@ namespace MEDCoupling
           throw INTERP_KERNEL::Exception("MEDFileAnyTypeFieldMultiTS::__getitem__ : invalid input params ! expected fmts[int], fmts[int,int] or fmts[double] to request time step !");
       }
       
-      PyObject *getIterations() const throw(INTERP_KERNEL::Exception)
+      PyObject *getIterations() const
       {
         std::vector< std::pair<int,int> > res(self->getIterations());
         return convertVecPairIntToPy(res);
       }
       
-      PyObject *getTimeSteps() const throw(INTERP_KERNEL::Exception)
+      PyObject *getTimeSteps() const
       {
         std::vector<double> ret1;
         std::vector< std::pair<int,int> > ret=self->getTimeSteps(ret1);
@@ -2589,7 +2589,7 @@ namespace MEDCoupling
         return ret2;
       }
       
-      PyObject *getTypesOfFieldAvailable() const throw(INTERP_KERNEL::Exception)
+      PyObject *getTypesOfFieldAvailable() const
       {
         std::vector< std::vector<TypeOfField> > ret=self->getTypesOfFieldAvailable();
         PyObject *ret2=PyList_New(ret.size());
@@ -2604,7 +2604,7 @@ namespace MEDCoupling
         return ret2;
       }
       
-      PyObject *getNonEmptyLevels(int iteration, int order, const std::string& mname=std::string()) const throw(INTERP_KERNEL::Exception)
+      PyObject *getNonEmptyLevels(int iteration, int order, const std::string& mname=std::string()) const
       {
         std::vector<int> ret1;
         int ret0=self->getNonEmptyLevels(iteration,order,mname,ret1);
@@ -2614,7 +2614,7 @@ namespace MEDCoupling
         return elt;
       }
       
-      PyObject *getFieldSplitedByType(int iteration, int order, const std::string& mname=std::string()) const throw(INTERP_KERNEL::Exception)
+      PyObject *getFieldSplitedByType(int iteration, int order, const std::string& mname=std::string()) const
       {
         std::vector<INTERP_KERNEL::NormalizedCellType> types;
         std::vector< std::vector<TypeOfField> > typesF;
@@ -2649,7 +2649,7 @@ namespace MEDCoupling
         return ret2;
       }
 
-      std::vector<int> getTimeIds(PyObject *elts) const throw(INTERP_KERNEL::Exception)
+      std::vector<int> getTimeIds(PyObject *elts) const
       {
         if(PyList_Check(elts))
           {
@@ -2670,7 +2670,7 @@ namespace MEDCoupling
           }
       }
       
-      void __delitem__(PyObject *elts) throw(INTERP_KERNEL::Exception)
+      void __delitem__(PyObject *elts)
       {
         if(PySlice_Check(elts))
           {
@@ -2686,7 +2686,7 @@ namespace MEDCoupling
           }
       }
       
-      void eraseTimeStepIds(PyObject *li) throw(INTERP_KERNEL::Exception)
+      void eraseTimeStepIds(PyObject *li)
       {
         int sw;
         int pos1;
@@ -2718,12 +2718,12 @@ namespace MEDCoupling
           }
       }
 
-      MEDFileAnyTypeFieldMultiTSIterator *__iter__() throw(INTERP_KERNEL::Exception)
+      MEDFileAnyTypeFieldMultiTSIterator *__iter__()
       {
         return self->iterator();
       }
 
-      PyObject *__getitem__(PyObject *elt0) const throw(INTERP_KERNEL::Exception)
+      PyObject *__getitem__(PyObject *elt0) const
       {
         if(elt0 && PyList_Check(elt0))
           {
@@ -2747,13 +2747,13 @@ namespace MEDCoupling
           return convertMEDFileField1TS(self->getTimeStepAtPos(MEDFileAnyTypeFieldMultiTSgetitemSingleTS__(self,elt0)),SWIG_POINTER_OWN | 0);
       }
 
-      bool changeMeshNames(PyObject *li) throw(INTERP_KERNEL::Exception)
+      bool changeMeshNames(PyObject *li)
       {
         std::vector< std::pair<std::string,std::string> > modifTab=convertVecPairStStFromPy(li);
         return self->changeMeshNames(modifTab);
       }
 
-      PyObject *splitComponents() const throw(INTERP_KERNEL::Exception)
+      PyObject *splitComponents() const
       {
         std::vector< MCAuto< MEDFileAnyTypeFieldMultiTS > > ret=self->splitComponents();
         std::size_t sz=ret.size();
@@ -2763,7 +2763,7 @@ namespace MEDCoupling
         return retPy;
       }
 
-      PyObject *splitDiscretizations() const throw(INTERP_KERNEL::Exception)
+      PyObject *splitDiscretizations() const
       {
         std::vector< MCAuto< MEDFileAnyTypeFieldMultiTS > > ret=self->splitDiscretizations();
         std::size_t sz=ret.size();
@@ -2773,7 +2773,7 @@ namespace MEDCoupling
         return retPy;
       }
 
-      PyObject *splitMultiDiscrPerGeoTypes() const throw(INTERP_KERNEL::Exception)
+      PyObject *splitMultiDiscrPerGeoTypes() const
       {
         std::vector< MCAuto< MEDFileAnyTypeFieldMultiTS > > ret=self->splitMultiDiscrPerGeoTypes();
         std::size_t sz=ret.size();
@@ -2783,7 +2783,7 @@ namespace MEDCoupling
         return retPy;
       }
 
-      void pushBackTimeSteps(PyObject *li) throw(INTERP_KERNEL::Exception)
+      void pushBackTimeSteps(PyObject *li)
       {
         void *argp(0);
         int status(SWIG_ConvertPtr(li,&argp,SWIGTYPE_p_MEDCoupling__MEDFileAnyTypeFieldMultiTS,0|0));
@@ -2799,14 +2799,14 @@ namespace MEDCoupling
           }
       }
 
-      MEDFileAnyTypeFieldMultiTS *extractPart(PyObject *extractDef, MEDFileMesh *mm) const throw(INTERP_KERNEL::Exception)
+      MEDFileAnyTypeFieldMultiTS *extractPart(PyObject *extractDef, MEDFileMesh *mm) const
       {
         std::map<int, MCAuto<DataArrayInt> > extractDefCpp;
         convertToMapIntDataArrayInt(extractDef,extractDefCpp);
         return self->extractPart(extractDefCpp,mm);
       }
 
-      static PyObject *MEDFileAnyTypeFieldMultiTS::SplitIntoCommonTimeSeries(PyObject *li) throw(INTERP_KERNEL::Exception)
+      static PyObject *MEDFileAnyTypeFieldMultiTS::SplitIntoCommonTimeSeries(PyObject *li)
       {
         std::vector<MEDFileAnyTypeFieldMultiTS *> vectFMTS;
         convertFromPyObjVectorOfObj<MEDCoupling::MEDFileAnyTypeFieldMultiTS *>(li,SWIGTYPE_p_MEDCoupling__MEDFileAnyTypeFieldMultiTS,"MEDFileAnyTypeFieldMultiTS",vectFMTS);
@@ -2829,7 +2829,7 @@ namespace MEDCoupling
         return retPy;
       }
       
-      static PyObject *MEDFileAnyTypeFieldMultiTS::SplitPerCommonSupport(PyObject *li, const MEDFileMesh *mesh) throw(INTERP_KERNEL::Exception)
+      static PyObject *MEDFileAnyTypeFieldMultiTS::SplitPerCommonSupport(PyObject *li, const MEDFileMesh *mesh)
       {
         std::vector<MEDFileAnyTypeFieldMultiTS *> vectFMTS;
         convertFromPyObjVectorOfObj<MEDCoupling::MEDFileAnyTypeFieldMultiTS *>(li,SWIGTYPE_p_MEDCoupling__MEDFileAnyTypeFieldMultiTS,"MEDFileAnyTypeFieldMultiTS",vectFMTS);
@@ -2868,21 +2868,21 @@ namespace MEDCoupling
   class MEDFileFieldMultiTS : public MEDFileAnyTypeFieldMultiTS
   {
   public:
-    static MEDFileFieldMultiTS *New() throw(INTERP_KERNEL::Exception);
-    static MEDFileFieldMultiTS *New(const std::string& fileName, bool loadAll=true) throw(INTERP_KERNEL::Exception);
-    static MEDFileFieldMultiTS *New(const std::string& fileName, const std::string& fieldName, bool loadAll=true) throw(INTERP_KERNEL::Exception);
-    static MEDFileFieldMultiTS *New(DataArrayByte *db) throw(INTERP_KERNEL::Exception);
+    static MEDFileFieldMultiTS *New();
+    static MEDFileFieldMultiTS *New(const std::string& fileName, bool loadAll=true);
+    static MEDFileFieldMultiTS *New(const std::string& fileName, const std::string& fieldName, bool loadAll=true);
+    static MEDFileFieldMultiTS *New(DataArrayByte *db);
     //
-    MEDCouplingFieldDouble *field(int iteration, int order, const MEDFileMesh *mesh) const throw(INTERP_KERNEL::Exception);
-    MEDCouplingFieldDouble *getFieldAtLevel(TypeOfField type, int iteration, int order, int meshDimRelToMax, int renumPol=0) const throw(INTERP_KERNEL::Exception);
-    MEDCouplingFieldDouble *getFieldAtTopLevel(TypeOfField type, int iteration, int order, int renumPol=0) const throw(INTERP_KERNEL::Exception);
-    MEDCouplingFieldDouble *getFieldOnMeshAtLevel(TypeOfField type, int iteration, int order, int meshDimRelToMax, const MEDFileMesh *mesh, int renumPol=0) const throw(INTERP_KERNEL::Exception);
-    MEDCouplingFieldDouble *getFieldOnMeshAtLevel(TypeOfField type, int iteration, int order, const MEDCouplingMesh *mesh, int renumPol=0) const throw(INTERP_KERNEL::Exception);
-    MEDCouplingFieldDouble *getFieldAtLevelOld(TypeOfField type, int iteration, int order, const std::string& mname, int meshDimRelToMax, int renumPol=0) const throw(INTERP_KERNEL::Exception);
+    MEDCouplingFieldDouble *field(int iteration, int order, const MEDFileMesh *mesh) const;
+    MEDCouplingFieldDouble *getFieldAtLevel(TypeOfField type, int iteration, int order, int meshDimRelToMax, int renumPol=0) const;
+    MEDCouplingFieldDouble *getFieldAtTopLevel(TypeOfField type, int iteration, int order, int renumPol=0) const;
+    MEDCouplingFieldDouble *getFieldOnMeshAtLevel(TypeOfField type, int iteration, int order, int meshDimRelToMax, const MEDFileMesh *mesh, int renumPol=0) const;
+    MEDCouplingFieldDouble *getFieldOnMeshAtLevel(TypeOfField type, int iteration, int order, const MEDCouplingMesh *mesh, int renumPol=0) const;
+    MEDCouplingFieldDouble *getFieldAtLevelOld(TypeOfField type, int iteration, int order, const std::string& mname, int meshDimRelToMax, int renumPol=0) const;
     //
-    void appendFieldNoProfileSBT(const MEDCouplingFieldDouble *field) throw(INTERP_KERNEL::Exception);
-    void appendFieldProfile(const MEDCouplingFieldDouble *field, const MEDFileMesh *mesh, int meshDimRelToMax, const DataArrayInt *profile) throw(INTERP_KERNEL::Exception);
-    MEDFileIntFieldMultiTS *convertToInt(bool isDeepCpyGlobs=true) const throw(INTERP_KERNEL::Exception);
+    void appendFieldNoProfileSBT(const MEDCouplingFieldDouble *field);
+    void appendFieldProfile(const MEDCouplingFieldDouble *field, const MEDFileMesh *mesh, int meshDimRelToMax, const DataArrayInt *profile);
+    MEDFileIntFieldMultiTS *convertToInt(bool isDeepCpyGlobs=true) const;
     %extend
        {
          MEDFileFieldMultiTS()
@@ -2890,17 +2890,17 @@ namespace MEDCoupling
            return MEDFileFieldMultiTS::New();
          }
 
-         MEDFileFieldMultiTS(const std::string& fileName, bool loadAll=true) throw(INTERP_KERNEL::Exception)
+         MEDFileFieldMultiTS(const std::string& fileName, bool loadAll=true)
          {
            return MEDFileFieldMultiTS::New(fileName,loadAll);
          }
 
-         MEDFileFieldMultiTS(const std::string& fileName, const std::string& fieldName, bool loadAll=true) throw(INTERP_KERNEL::Exception)
+         MEDFileFieldMultiTS(const std::string& fileName, const std::string& fieldName, bool loadAll=true)
          {
            return MEDFileFieldMultiTS::New(fileName,fieldName,loadAll);
          }
          
-         MEDFileFieldMultiTS(DataArrayByte *db) throw(INTERP_KERNEL::Exception)
+         MEDFileFieldMultiTS(DataArrayByte *db)
          {
            return MEDFileFieldMultiTS::New(db);
          }
@@ -2918,12 +2918,12 @@ namespace MEDCoupling
            return MEDFileFieldMultiTS::LoadSpecificEntities(fileName,fieldName,entitiesCpp,loadAll);
          }
          
-         std::string __str__() const throw(INTERP_KERNEL::Exception)
+         std::string __str__() const
          {
            return self->simpleRepr();
          }
 
-         PyObject *getFieldWithProfile(TypeOfField type, int iteration, int order, int meshDimRelToMax, const MEDFileMesh *mesh) const throw(INTERP_KERNEL::Exception)
+         PyObject *getFieldWithProfile(TypeOfField type, int iteration, int order, int meshDimRelToMax, const MEDFileMesh *mesh) const
          {
            DataArrayInt *ret1=0;
            DataArrayDouble *ret0=self->getFieldWithProfile(type,iteration,order,meshDimRelToMax,mesh,ret1);
@@ -2933,7 +2933,7 @@ namespace MEDCoupling
            return ret;
          }
 
-         PyObject *getFieldSplitedByType2(int iteration, int order, const std::string& mname=std::string()) const throw(INTERP_KERNEL::Exception)
+         PyObject *getFieldSplitedByType2(int iteration, int order, const std::string& mname=std::string()) const
          {
            std::vector<INTERP_KERNEL::NormalizedCellType> types;
            std::vector< std::vector<TypeOfField> > typesF;
@@ -2966,7 +2966,7 @@ namespace MEDCoupling
              }
            return ret2;
          }
-         DataArrayDouble *getUndergroundDataArray(int iteration, int order) const throw(INTERP_KERNEL::Exception)
+         DataArrayDouble *getUndergroundDataArray(int iteration, int order) const
          {
            DataArrayDouble *ret=self->getUndergroundDataArray(iteration,order);
            if(ret)
@@ -2974,7 +2974,7 @@ namespace MEDCoupling
            return ret;
          }
          
-         PyObject *getUndergroundDataArrayExt(int iteration, int order) const throw(INTERP_KERNEL::Exception)
+         PyObject *getUndergroundDataArrayExt(int iteration, int order) const
          {
            std::vector< std::pair<std::pair<INTERP_KERNEL::NormalizedCellType,int>,std::pair<int,int> > > elt1Cpp;
            DataArrayDouble *elt0=self->getUndergroundDataArrayExt(iteration,order,elt1Cpp);
@@ -3008,7 +3008,7 @@ namespace MEDCoupling
   public:
     %extend
     {
-      PyObject *next() throw(INTERP_KERNEL::Exception)
+      PyObject *next()
       {
         MEDFileAnyTypeFieldMultiTS *ret=self->nextt();
         if(ret)
@@ -3026,19 +3026,19 @@ namespace MEDCoupling
   {
   public:
     static MEDFileIntFieldMultiTS *New();
-    static MEDFileIntFieldMultiTS *New(const std::string& fileName, bool loadAll=true) throw(INTERP_KERNEL::Exception);
-    static MEDFileIntFieldMultiTS *New(const std::string& fileName, const std::string& fieldName, bool loadAll=true) throw(INTERP_KERNEL::Exception);
-    static MEDFileIntFieldMultiTS *New(DataArrayByte *db) throw(INTERP_KERNEL::Exception);
+    static MEDFileIntFieldMultiTS *New(const std::string& fileName, bool loadAll=true);
+    static MEDFileIntFieldMultiTS *New(const std::string& fileName, const std::string& fieldName, bool loadAll=true);
+    static MEDFileIntFieldMultiTS *New(DataArrayByte *db);
     //
-    void appendFieldNoProfileSBT(const MEDCouplingFieldInt *field) throw(INTERP_KERNEL::Exception);
-    void appendFieldProfile(const MEDCouplingFieldInt *field, const MEDFileMesh *mesh, int meshDimRelToMax, const DataArrayInt *profile) throw(INTERP_KERNEL::Exception);
-    MEDCoupling::MEDFileFieldMultiTS *convertToDouble(bool isDeepCpyGlobs=true) const throw(INTERP_KERNEL::Exception);
-    MEDCouplingFieldInt *field(int iteration, int order, const MEDFileMesh *mesh) const throw(INTERP_KERNEL::Exception);
-    MEDCouplingFieldInt *getFieldAtLevel(TypeOfField type, int iteration, int order, int meshDimRelToMax, int renumPol=0) const throw(INTERP_KERNEL::Exception);
-    MEDCouplingFieldInt *getFieldAtTopLevel(TypeOfField type, int iteration, int order, int renumPol=0) const throw(INTERP_KERNEL::Exception);
-    MEDCouplingFieldInt *getFieldOnMeshAtLevel(TypeOfField type, int iteration, int order, int meshDimRelToMax, const MEDFileMesh *mesh, int renumPol=0) const throw(INTERP_KERNEL::Exception);
-    MEDCouplingFieldInt *getFieldOnMeshAtLevel(TypeOfField type, int iteration, int order, const MEDCouplingMesh *mesh, int renumPol=0) const throw(INTERP_KERNEL::Exception);
-    MEDCouplingFieldInt *getFieldAtLevelOld(TypeOfField type, int iteration, int order, const std::string& mname, int meshDimRelToMax, int renumPol=0) const throw(INTERP_KERNEL::Exception);
+    void appendFieldNoProfileSBT(const MEDCouplingFieldInt *field);
+    void appendFieldProfile(const MEDCouplingFieldInt *field, const MEDFileMesh *mesh, int meshDimRelToMax, const DataArrayInt *profile);
+    MEDCoupling::MEDFileFieldMultiTS *convertToDouble(bool isDeepCpyGlobs=true) const;
+    MEDCouplingFieldInt *field(int iteration, int order, const MEDFileMesh *mesh) const;
+    MEDCouplingFieldInt *getFieldAtLevel(TypeOfField type, int iteration, int order, int meshDimRelToMax, int renumPol=0) const;
+    MEDCouplingFieldInt *getFieldAtTopLevel(TypeOfField type, int iteration, int order, int renumPol=0) const;
+    MEDCouplingFieldInt *getFieldOnMeshAtLevel(TypeOfField type, int iteration, int order, int meshDimRelToMax, const MEDFileMesh *mesh, int renumPol=0) const;
+    MEDCouplingFieldInt *getFieldOnMeshAtLevel(TypeOfField type, int iteration, int order, const MEDCouplingMesh *mesh, int renumPol=0) const;
+    MEDCouplingFieldInt *getFieldAtLevelOld(TypeOfField type, int iteration, int order, const std::string& mname, int meshDimRelToMax, int renumPol=0) const;
     %extend
     {
       MEDFileIntFieldMultiTS()
@@ -3046,17 +3046,17 @@ namespace MEDCoupling
         return MEDFileIntFieldMultiTS::New();
       }
       
-      MEDFileIntFieldMultiTS(const std::string& fileName, bool loadAll=true) throw(INTERP_KERNEL::Exception)
+      MEDFileIntFieldMultiTS(const std::string& fileName, bool loadAll=true)
       {
         return MEDFileIntFieldMultiTS::New(fileName,loadAll);
       }
       
-      MEDFileIntFieldMultiTS(const std::string& fileName, const std::string& fieldName, bool loadAll=true) throw(INTERP_KERNEL::Exception)
+      MEDFileIntFieldMultiTS(const std::string& fileName, const std::string& fieldName, bool loadAll=true)
       {
         return MEDFileIntFieldMultiTS::New(fileName,fieldName,loadAll);
       }
 
-      MEDFileIntFieldMultiTS(DataArrayByte *db) throw(INTERP_KERNEL::Exception)
+      MEDFileIntFieldMultiTS(DataArrayByte *db)
       {
         return MEDFileIntFieldMultiTS::New(db);
       }
@@ -3068,12 +3068,12 @@ namespace MEDCoupling
         return MEDFileIntFieldMultiTS::LoadSpecificEntities(fileName,fieldName,entitiesCpp,loadAll);
       }
 
-      std::string __str__() const throw(INTERP_KERNEL::Exception)
+      std::string __str__() const
       {
         return self->simpleRepr();
       }
 
-      PyObject *getFieldWithProfile(TypeOfField type, int iteration, int order, int meshDimRelToMax, const MEDFileMesh *mesh) const throw(INTERP_KERNEL::Exception)
+      PyObject *getFieldWithProfile(TypeOfField type, int iteration, int order, int meshDimRelToMax, const MEDFileMesh *mesh) const
       {
          DataArrayInt *ret1=0;
          DataArrayInt *ret0=self->getFieldWithProfile(type,iteration,order,meshDimRelToMax,mesh,ret1);
@@ -3083,7 +3083,7 @@ namespace MEDCoupling
          return ret;
       }
 
-      DataArrayInt *getUndergroundDataArray(int iteration, int order) const throw(INTERP_KERNEL::Exception)
+      DataArrayInt *getUndergroundDataArray(int iteration, int order) const
       {
         DataArrayInt *ret=self->getUndergroundDataArray(iteration,order);
         if(ret)
@@ -3097,19 +3097,19 @@ namespace MEDCoupling
   {
   public:
     static MEDFileFloatFieldMultiTS *New();
-    static MEDFileFloatFieldMultiTS *New(const std::string& fileName, bool loadAll=true) throw(INTERP_KERNEL::Exception);
-    static MEDFileFloatFieldMultiTS *New(const std::string& fileName, const std::string& fieldName, bool loadAll=true) throw(INTERP_KERNEL::Exception);
-    static MEDFileFloatFieldMultiTS *New(DataArrayByte *db) throw(INTERP_KERNEL::Exception);
+    static MEDFileFloatFieldMultiTS *New(const std::string& fileName, bool loadAll=true);
+    static MEDFileFloatFieldMultiTS *New(const std::string& fileName, const std::string& fieldName, bool loadAll=true);
+    static MEDFileFloatFieldMultiTS *New(DataArrayByte *db);
     //
-    void appendFieldNoProfileSBT(const MEDCouplingFieldFloat *field) throw(INTERP_KERNEL::Exception);
-    void appendFieldProfile(const MEDCouplingFieldFloat *field, const MEDFileMesh *mesh, int meshDimRelToMax, const DataArrayInt *profile) throw(INTERP_KERNEL::Exception);
-    MEDCoupling::MEDFileFieldMultiTS *convertToDouble(bool isDeepCpyGlobs=true) const throw(INTERP_KERNEL::Exception);
-    MEDCouplingFieldFloat *field(int iteration, int order, const MEDFileMesh *mesh) const throw(INTERP_KERNEL::Exception);
-    MEDCouplingFieldFloat *getFieldAtLevel(TypeOfField type, int iteration, int order, int meshDimRelToMax, int renumPol=0) const throw(INTERP_KERNEL::Exception);
-    MEDCouplingFieldFloat *getFieldAtTopLevel(TypeOfField type, int iteration, int order, int renumPol=0) const throw(INTERP_KERNEL::Exception);
-    MEDCouplingFieldFloat *getFieldOnMeshAtLevel(TypeOfField type, int iteration, int order, int meshDimRelToMax, const MEDFileMesh *mesh, int renumPol=0) const throw(INTERP_KERNEL::Exception);
-    MEDCouplingFieldFloat *getFieldOnMeshAtLevel(TypeOfField type, int iteration, int order, const MEDCouplingMesh *mesh, int renumPol=0) const throw(INTERP_KERNEL::Exception);
-    MEDCouplingFieldFloat *getFieldAtLevelOld(TypeOfField type, int iteration, int order, const std::string& mname, int meshDimRelToMax, int renumPol=0) const throw(INTERP_KERNEL::Exception);
+    void appendFieldNoProfileSBT(const MEDCouplingFieldFloat *field);
+    void appendFieldProfile(const MEDCouplingFieldFloat *field, const MEDFileMesh *mesh, int meshDimRelToMax, const DataArrayInt *profile);
+    MEDCoupling::MEDFileFieldMultiTS *convertToDouble(bool isDeepCpyGlobs=true) const;
+    MEDCouplingFieldFloat *field(int iteration, int order, const MEDFileMesh *mesh) const;
+    MEDCouplingFieldFloat *getFieldAtLevel(TypeOfField type, int iteration, int order, int meshDimRelToMax, int renumPol=0) const;
+    MEDCouplingFieldFloat *getFieldAtTopLevel(TypeOfField type, int iteration, int order, int renumPol=0) const;
+    MEDCouplingFieldFloat *getFieldOnMeshAtLevel(TypeOfField type, int iteration, int order, int meshDimRelToMax, const MEDFileMesh *mesh, int renumPol=0) const;
+    MEDCouplingFieldFloat *getFieldOnMeshAtLevel(TypeOfField type, int iteration, int order, const MEDCouplingMesh *mesh, int renumPol=0) const;
+    MEDCouplingFieldFloat *getFieldAtLevelOld(TypeOfField type, int iteration, int order, const std::string& mname, int meshDimRelToMax, int renumPol=0) const;
     %extend
     {
       MEDFileFloatFieldMultiTS()
@@ -3117,17 +3117,17 @@ namespace MEDCoupling
         return MEDFileFloatFieldMultiTS::New();
       }
       
-      MEDFileFloatFieldMultiTS(const std::string& fileName, bool loadAll=true) throw(INTERP_KERNEL::Exception)
+      MEDFileFloatFieldMultiTS(const std::string& fileName, bool loadAll=true)
       {
         return MEDFileFloatFieldMultiTS::New(fileName,loadAll);
       }
       
-      MEDFileFloatFieldMultiTS(const std::string& fileName, const std::string& fieldName, bool loadAll=true) throw(INTERP_KERNEL::Exception)
+      MEDFileFloatFieldMultiTS(const std::string& fileName, const std::string& fieldName, bool loadAll=true)
       {
         return MEDFileFloatFieldMultiTS::New(fileName,fieldName,loadAll);
       }
 
-      MEDFileFloatFieldMultiTS(DataArrayByte *db) throw(INTERP_KERNEL::Exception)
+      MEDFileFloatFieldMultiTS(DataArrayByte *db)
       {
         return MEDFileFloatFieldMultiTS::New(db);
       }
@@ -3139,12 +3139,12 @@ namespace MEDCoupling
         return MEDFileFloatFieldMultiTS::LoadSpecificEntities(fileName,fieldName,entitiesCpp,loadAll);
       }
 
-      std::string __str__() const throw(INTERP_KERNEL::Exception)
+      std::string __str__() const
       {
         return self->simpleRepr();
       }
 
-      PyObject *getFieldWithProfile(TypeOfField type, int iteration, int order, int meshDimRelToMax, const MEDFileMesh *mesh) const throw(INTERP_KERNEL::Exception)
+      PyObject *getFieldWithProfile(TypeOfField type, int iteration, int order, int meshDimRelToMax, const MEDFileMesh *mesh) const
       {
          DataArrayInt *ret1=0;
          DataArrayFloat *ret0=self->getFieldWithProfile(type,iteration,order,meshDimRelToMax,mesh,ret1);
@@ -3154,7 +3154,7 @@ namespace MEDCoupling
          return ret;
       }
 
-      DataArrayFloat *getUndergroundDataArray(int iteration, int order) const throw(INTERP_KERNEL::Exception)
+      DataArrayFloat *getUndergroundDataArray(int iteration, int order) const
       {
         DataArrayFloat *ret=self->getUndergroundDataArray(iteration,order);
         if(ret)
@@ -3167,11 +3167,11 @@ namespace MEDCoupling
   class MEDFileMeshSupports : public RefCountObject, public MEDFileWritableStandAlone
   {
   public:
-    static MEDFileMeshSupports *New(const std::string& fileName) throw(INTERP_KERNEL::Exception);
-    std::vector<std::string> getSupMeshNames() const throw(INTERP_KERNEL::Exception);
+    static MEDFileMeshSupports *New(const std::string& fileName);
+    std::vector<std::string> getSupMeshNames() const;
     %extend
        {
-         MEDFileUMesh *getSupMeshWithName(const std::string& name) const throw(INTERP_KERNEL::Exception)
+         MEDFileUMesh *getSupMeshWithName(const std::string& name) const
          {
            const MEDFileUMesh *ret(self->getSupMeshWithName(name));
            MEDFileUMesh *ret2(const_cast<MEDFileUMesh *>(ret));
@@ -3185,7 +3185,7 @@ namespace MEDCoupling
   class MEDFileStructureElements : public RefCountObject, public MEDFileWritableStandAlone
   {
   public:
-    static MEDFileStructureElements *New(const std::string& fileName, const MEDFileMeshSupports *ms) throw(INTERP_KERNEL::Exception);
+    static MEDFileStructureElements *New(const std::string& fileName, const MEDFileMeshSupports *ms);
   private:
     MEDFileStructureElements();
   };
@@ -3193,37 +3193,37 @@ namespace MEDCoupling
   class MEDFileFields : public RefCountObject, public MEDFileFieldGlobsReal, public MEDFileWritableStandAlone
   {
   public:
-    static MEDFileFields *New() throw(INTERP_KERNEL::Exception);
-    static MEDFileFields *New(const std::string& fileName, bool loadAll=true) throw(INTERP_KERNEL::Exception);
-    static MEDFileFields *New(DataArrayByte *db) throw(INTERP_KERNEL::Exception);
-    static MEDFileFields *NewAdv(const std::string& fileName, bool loadAll, const MEDFileEntities *entities) throw(INTERP_KERNEL::Exception);
-    static MEDFileFields *LoadPartOf(const std::string& fileName, bool loadAll=true, const MEDFileMeshes *ms=0) throw(INTERP_KERNEL::Exception);
-    static MEDFileFields *NewWithDynGT(const std::string& fileName, const MEDFileStructureElements *se, bool loadAll=true) throw(INTERP_KERNEL::Exception);
-    MEDFileFields *deepCopy() const throw(INTERP_KERNEL::Exception);
-    MEDFileFields *shallowCpy() const throw(INTERP_KERNEL::Exception);
-    void loadArrays() throw(INTERP_KERNEL::Exception);
-    void loadArraysIfNecessary() throw(INTERP_KERNEL::Exception);
-    void unloadArrays() throw(INTERP_KERNEL::Exception);
-    void unloadArraysWithoutDataLoss() throw(INTERP_KERNEL::Exception);
+    static MEDFileFields *New();
+    static MEDFileFields *New(const std::string& fileName, bool loadAll=true);
+    static MEDFileFields *New(DataArrayByte *db);
+    static MEDFileFields *NewAdv(const std::string& fileName, bool loadAll, const MEDFileEntities *entities);
+    static MEDFileFields *LoadPartOf(const std::string& fileName, bool loadAll=true, const MEDFileMeshes *ms=0);
+    static MEDFileFields *NewWithDynGT(const std::string& fileName, const MEDFileStructureElements *se, bool loadAll=true);
+    MEDFileFields *deepCopy() const;
+    MEDFileFields *shallowCpy() const;
+    void loadArrays();
+    void loadArraysIfNecessary();
+    void unloadArrays();
+    void unloadArraysWithoutDataLoss();
     int getNumberOfFields() const;
-    std::vector<std::string> getFieldsNames() const throw(INTERP_KERNEL::Exception);
-    std::vector<std::string> getMeshesNames() const throw(INTERP_KERNEL::Exception);
+    std::vector<std::string> getFieldsNames() const;
+    std::vector<std::string> getMeshesNames() const;
     //
-    void resize(int newSize) throw(INTERP_KERNEL::Exception);
-    void pushField(MEDFileAnyTypeFieldMultiTS *field) throw(INTERP_KERNEL::Exception);
-    void setFieldAtPos(int i, MEDFileAnyTypeFieldMultiTS *field) throw(INTERP_KERNEL::Exception);
-    int getPosFromFieldName(const std::string& fieldName) const throw(INTERP_KERNEL::Exception);
-    MEDFileAnyTypeFieldMultiTS *getFieldAtPos(int i) const throw(INTERP_KERNEL::Exception);
-    MEDFileAnyTypeFieldMultiTS *getFieldWithName(const std::string& fieldName) const throw(INTERP_KERNEL::Exception);
-    MEDFileFields *partOfThisLyingOnSpecifiedMeshName(const std::string& meshName) const throw(INTERP_KERNEL::Exception);
-    bool presenceOfStructureElements() const throw(INTERP_KERNEL::Exception);
-    void aggregate(const MEDFileFields& other) throw(INTERP_KERNEL::Exception);
-    void killStructureElements() throw(INTERP_KERNEL::Exception);
-    void keepOnlyStructureElements() throw(INTERP_KERNEL::Exception);
-    void keepOnlyOnMeshSE(const std::string& meshName, const std::string& seName) throw(INTERP_KERNEL::Exception);
-    void blowUpSE(MEDFileMeshes *ms, const MEDFileStructureElements *ses) throw(INTERP_KERNEL::Exception);
-    void destroyFieldAtPos(int i) throw(INTERP_KERNEL::Exception);
-    bool removeFieldsWithoutAnyTimeStep() throw(INTERP_KERNEL::Exception);
+    void resize(int newSize);
+    void pushField(MEDFileAnyTypeFieldMultiTS *field);
+    void setFieldAtPos(int i, MEDFileAnyTypeFieldMultiTS *field);
+    int getPosFromFieldName(const std::string& fieldName) const;
+    MEDFileAnyTypeFieldMultiTS *getFieldAtPos(int i) const;
+    MEDFileAnyTypeFieldMultiTS *getFieldWithName(const std::string& fieldName) const;
+    MEDFileFields *partOfThisLyingOnSpecifiedMeshName(const std::string& meshName) const;
+    bool presenceOfStructureElements() const;
+    void aggregate(const MEDFileFields& other);
+    void killStructureElements();
+    void keepOnlyStructureElements();
+    void keepOnlyOnMeshSE(const std::string& meshName, const std::string& seName);
+    void blowUpSE(MEDFileMeshes *ms, const MEDFileStructureElements *ses);
+    void destroyFieldAtPos(int i);
+    bool removeFieldsWithoutAnyTimeStep();
     %extend
        {
          MEDFileFields()
@@ -3231,39 +3231,39 @@ namespace MEDCoupling
            return MEDFileFields::New();
          }
 
-         MEDFileFields(const std::string& fileName, bool loadAll=true) throw(INTERP_KERNEL::Exception)
+         MEDFileFields(const std::string& fileName, bool loadAll=true)
          {
            return MEDFileFields::New(fileName,loadAll);
          }
 
-         MEDFileFields(DataArrayByte *db) throw(INTERP_KERNEL::Exception)
+         MEDFileFields(DataArrayByte *db)
          {
            return MEDFileFields::New(db);
          }
 
-         MEDFileFields(const std::string& fileName, bool loadAll, const MEDFileEntities *entities) throw(INTERP_KERNEL::Exception)
+         MEDFileFields(const std::string& fileName, bool loadAll, const MEDFileEntities *entities)
          {
            return MEDFileFields::NewAdv(fileName,loadAll,entities);
          }
          
-         std::string __str__() const throw(INTERP_KERNEL::Exception)
+         std::string __str__() const
          {
            return self->simpleRepr();
          }
          
-         MEDFileFields *partOfThisOnStructureElements() const throw(INTERP_KERNEL::Exception)
+         MEDFileFields *partOfThisOnStructureElements() const
          {
            MCAuto<MEDFileFields> ret(self->partOfThisOnStructureElements());
            return ret.retn();
          }
 
-         MEDFileFields *partOfThisLyingOnSpecifiedMeshSEName(const std::string& meshName, const std::string& seName) const throw(INTERP_KERNEL::Exception)
+         MEDFileFields *partOfThisLyingOnSpecifiedMeshSEName(const std::string& meshName, const std::string& seName) const
          {
            MCAuto<MEDFileFields> ret(self->partOfThisLyingOnSpecifiedMeshSEName(meshName,seName));
            return ret.retn();
          }
          
-         static MEDFileFields *LoadSpecificEntities(const std::string& fileName, PyObject *entities, bool loadAll=true) throw(INTERP_KERNEL::Exception)
+         static MEDFileFields *LoadSpecificEntities(const std::string& fileName, PyObject *entities, bool loadAll=true)
          {
            std::vector<std::pair<int,int> > tmp(convertTimePairIdsFromPy(entities));
            std::size_t sz(tmp.size());
@@ -3276,14 +3276,14 @@ namespace MEDCoupling
            return MEDFileFields::LoadSpecificEntities(fileName,entitiesCpp,loadAll);
          }
 
-         PyObject *getMeshSENames() const throw(INTERP_KERNEL::Exception)
+         PyObject *getMeshSENames() const
          {
            std::vector< std::pair<std::string,std::string> > ps;
            self->getMeshSENames(ps);
            return convertVectPairStToPy(ps);
          }
 
-         PyObject *getCommonIterations() const throw(INTERP_KERNEL::Exception)
+         PyObject *getCommonIterations() const
          {
            bool ret1;
            std::vector< std::pair<int,int> > ret0=self->getCommonIterations(ret1);
@@ -3303,19 +3303,19 @@ namespace MEDCoupling
            return ret;
          }
 
-         MEDFileFields *partOfThisLyingOnSpecifiedTimeSteps(PyObject *timeSteps) const throw(INTERP_KERNEL::Exception)
+         MEDFileFields *partOfThisLyingOnSpecifiedTimeSteps(PyObject *timeSteps) const
          {
            std::vector< std::pair<int,int> > ts=convertTimePairIdsFromPy(timeSteps);
            return self->partOfThisLyingOnSpecifiedTimeSteps(ts);
          }
 
-         MEDFileFields *partOfThisNotLyingOnSpecifiedTimeSteps(PyObject *timeSteps) const throw(INTERP_KERNEL::Exception)
+         MEDFileFields *partOfThisNotLyingOnSpecifiedTimeSteps(PyObject *timeSteps) const
          {
            std::vector< std::pair<int,int> > ts=convertTimePairIdsFromPy(timeSteps);
            return self->partOfThisNotLyingOnSpecifiedTimeSteps(ts);
          }
          
-         PyObject *__getitem__(PyObject *obj) throw(INTERP_KERNEL::Exception)
+         PyObject *__getitem__(PyObject *obj)
          {
            if(obj && PyList_Check(obj))
              {
@@ -3333,29 +3333,29 @@ namespace MEDCoupling
              return convertMEDFileFieldMultiTS(self->getFieldAtPos(MEDFileFieldsgetitemSingleTS__(self,obj)), SWIG_POINTER_OWN | 0 );
          }
 
-         MEDFileFields *__setitem__(int obj, MEDFileFieldMultiTS *field) throw(INTERP_KERNEL::Exception)
+         MEDFileFields *__setitem__(int obj, MEDFileFieldMultiTS *field)
          {
            self->setFieldAtPos(obj,field);
            return self;
          }
 
-         int __len__() const throw(INTERP_KERNEL::Exception)
+         int __len__() const
          {
            return self->getNumberOfFields();
          }
 
-         MEDFileFieldsIterator *__iter__() throw(INTERP_KERNEL::Exception)
+         MEDFileFieldsIterator *__iter__()
          {
            return self->iterator();
          }
          
-         bool changeMeshNames(PyObject *li) throw(INTERP_KERNEL::Exception)
+         bool changeMeshNames(PyObject *li)
          {
            std::vector< std::pair<std::string,std::string> > modifTab=convertVecPairStStFromPy(li);
            return self->changeMeshNames(modifTab);
          }
 
-         int getPosOfField(PyObject *elt0) const throw(INTERP_KERNEL::Exception)
+         int getPosOfField(PyObject *elt0) const
          {
            static const char msg[]="MEDFileFields::getPosOfField : invalid input params ! expected fields[int], fields[string_of_field_name] !";
            if(!elt0)
@@ -3367,7 +3367,7 @@ namespace MEDCoupling
            return self->getPosFromFieldName(convertPyObjectToStr(elt0,msg));
          }
          
-         std::vector<int> getPosOfFields(PyObject *elts) const throw(INTERP_KERNEL::Exception)
+         std::vector<int> getPosOfFields(PyObject *elts) const
          {
            if(PyList_Check(elts))
              {
@@ -3388,14 +3388,14 @@ namespace MEDCoupling
              }
          }
 
-         void pushFields(PyObject *fields) throw(INTERP_KERNEL::Exception)
+         void pushFields(PyObject *fields)
          {
            std::vector<MEDFileAnyTypeFieldMultiTS *> tmp;
            convertFromPyObjVectorOfObj<MEDCoupling::MEDFileAnyTypeFieldMultiTS *>(fields,SWIGTYPE_p_MEDCoupling__MEDFileAnyTypeFieldMultiTS,"MEDFileAnyTypeFieldMultiTS",tmp);
            self->pushFields(tmp);
          }
          
-         void __delitem__(PyObject *elts) throw(INTERP_KERNEL::Exception)
+         void __delitem__(PyObject *elts)
          {
            if(elts && PySlice_Check(elts))
              {
@@ -3411,14 +3411,14 @@ namespace MEDCoupling
              }
          }
 
-         MEDFileFields *extractPart(PyObject *extractDef, MEDFileMesh *mm) const throw(INTERP_KERNEL::Exception)
+         MEDFileFields *extractPart(PyObject *extractDef, MEDFileMesh *mm) const
          {
            std::map<int, MCAuto<DataArrayInt> > extractDefCpp;
            convertToMapIntDataArrayInt(extractDef,extractDefCpp);
            return self->extractPart(extractDefCpp,mm);
          }
 
-         MEDFileFields *linearToQuadratic(const MEDFileMeshes *oldLin, const MEDFileMeshes *newQuad) const throw(INTERP_KERNEL::Exception)
+         MEDFileFields *linearToQuadratic(const MEDFileMeshes *oldLin, const MEDFileMeshes *newQuad) const
          {
            MCAuto<MEDFileFields> ret(self->linearToQuadratic(oldLin,newQuad));
            return ret.retn();
@@ -3442,12 +3442,12 @@ namespace MEDCoupling
   class MEDFileParameterDouble1TSWTI : public MEDFileParameter1TS
   {
   public:
-    void setValue(double val) throw(INTERP_KERNEL::Exception);
-    double getValue() const throw(INTERP_KERNEL::Exception);
-    std::string simpleRepr() const throw(INTERP_KERNEL::Exception);
+    void setValue(double val);
+    double getValue() const;
+    std::string simpleRepr() const;
     %extend
     {
-      std::string __str__() const throw(INTERP_KERNEL::Exception)
+      std::string __str__() const
       {
         return self->simpleRepr();
       }
@@ -3467,14 +3467,14 @@ namespace MEDCoupling
   {
   public:
     static MEDFileParameterDouble1TS *New();
-    static MEDFileParameterDouble1TS *New(const std::string& fileName) throw(INTERP_KERNEL::Exception);
-    static MEDFileParameterDouble1TS *New(const std::string& fileName, const std::string& paramName) throw(INTERP_KERNEL::Exception);
-    static MEDFileParameterDouble1TS *New(const std::string& fileName, const std::string& paramName, int dt, int it) throw(INTERP_KERNEL::Exception);
-    virtual MEDFileParameter1TS *deepCopy() const throw(INTERP_KERNEL::Exception);
-    virtual std::string simpleRepr() const throw(INTERP_KERNEL::Exception);
-    void setName(const std::string& name) throw(INTERP_KERNEL::Exception);
-    std::string getName() const throw(INTERP_KERNEL::Exception);
-    void write(const std::string& fileName, int mode) const throw(INTERP_KERNEL::Exception);
+    static MEDFileParameterDouble1TS *New(const std::string& fileName);
+    static MEDFileParameterDouble1TS *New(const std::string& fileName, const std::string& paramName);
+    static MEDFileParameterDouble1TS *New(const std::string& fileName, const std::string& paramName, int dt, int it);
+    virtual MEDFileParameter1TS *deepCopy() const;
+    virtual std::string simpleRepr() const;
+    void setName(const std::string& name);
+    std::string getName() const;
+    void write(const std::string& fileName, int mode) const;
     %extend
     {
       MEDFileParameterDouble1TS()
@@ -3482,27 +3482,27 @@ namespace MEDCoupling
         return MEDFileParameterDouble1TS::New();
       }
       
-      MEDFileParameterDouble1TS(const std::string& fileName) throw(INTERP_KERNEL::Exception)
+      MEDFileParameterDouble1TS(const std::string& fileName)
       {
         return MEDFileParameterDouble1TS::New(fileName);
       }
 
-      MEDFileParameterDouble1TS(const std::string& fileName, const std::string& paramName) throw(INTERP_KERNEL::Exception)
+      MEDFileParameterDouble1TS(const std::string& fileName, const std::string& paramName)
       {
         return MEDFileParameterDouble1TS::New(fileName,paramName);
       }
 
-      MEDFileParameterDouble1TS(const std::string& fileName, const std::string& paramName, int dt, int it) throw(INTERP_KERNEL::Exception)
+      MEDFileParameterDouble1TS(const std::string& fileName, const std::string& paramName, int dt, int it)
       {
         return MEDFileParameterDouble1TS::New(fileName,paramName,dt,it);
       }
 
-      std::string __str__() const throw(INTERP_KERNEL::Exception)
+      std::string __str__() const
       {
         return self->simpleRepr();
       }
 
-      PyObject *isEqual(const MEDFileParameter1TS *other, double eps) const throw(INTERP_KERNEL::Exception)
+      PyObject *isEqual(const MEDFileParameter1TS *other, double eps) const
       {
         std::string what;
         bool ret0=self->isEqual(other,eps,what);
@@ -3520,18 +3520,18 @@ namespace MEDCoupling
   {
   public:
     static MEDFileParameterMultiTS *New();
-    static MEDFileParameterMultiTS *New(const std::string& fileName) throw(INTERP_KERNEL::Exception);
-    static MEDFileParameterMultiTS *New(const std::string& fileName, const std::string& paramName) throw(INTERP_KERNEL::Exception);
+    static MEDFileParameterMultiTS *New(const std::string& fileName);
+    static MEDFileParameterMultiTS *New(const std::string& fileName, const std::string& paramName);
     std::string getName() const;
     void setName(const std::string& name);
-    MEDFileParameterMultiTS *deepCopy() const throw(INTERP_KERNEL::Exception);
-    void write(const std::string& fileName, int mode) const throw(INTERP_KERNEL::Exception);
-    std::string simpleRepr() const throw(INTERP_KERNEL::Exception);
-    void appendValue(int dt, int it, double time, double val) throw(INTERP_KERNEL::Exception);
-    double getDoubleValue(int iteration, int order) const throw(INTERP_KERNEL::Exception);
-    int getPosOfTimeStep(int iteration, int order) const throw(INTERP_KERNEL::Exception);
-    int getPosGivenTime(double time, double eps=1e-8) const throw(INTERP_KERNEL::Exception);
-    int getNumberOfTS() const throw(INTERP_KERNEL::Exception);
+    MEDFileParameterMultiTS *deepCopy() const;
+    void write(const std::string& fileName, int mode) const;
+    std::string simpleRepr() const;
+    void appendValue(int dt, int it, double time, double val);
+    double getDoubleValue(int iteration, int order) const;
+    int getPosOfTimeStep(int iteration, int order) const;
+    int getPosGivenTime(double time, double eps=1e-8) const;
+    int getNumberOfTS() const;
     %extend
     {
       MEDFileParameterMultiTS()
@@ -3549,12 +3549,12 @@ namespace MEDCoupling
         return MEDFileParameterMultiTS::New(fileName,paramName);
       }
 
-      std::string __str__() const throw(INTERP_KERNEL::Exception)
+      std::string __str__() const
       {
         return self->simpleRepr();
       }
       
-      PyObject *isEqual(const MEDFileParameterMultiTS *other, double eps) const throw(INTERP_KERNEL::Exception)
+      PyObject *isEqual(const MEDFileParameterMultiTS *other, double eps) const
       {
         std::string what;
         bool ret0=self->isEqual(other,eps,what);
@@ -3566,7 +3566,7 @@ namespace MEDCoupling
         return res;
       }
       
-      void eraseTimeStepIds(PyObject *ids) throw(INTERP_KERNEL::Exception)
+      void eraseTimeStepIds(PyObject *ids)
       {
         int sw;
         int pos1;
@@ -3598,7 +3598,7 @@ namespace MEDCoupling
           }
       }
 
-      int getTimeStepId(PyObject *elt0) const throw(INTERP_KERNEL::Exception)
+      int getTimeStepId(PyObject *elt0) const
       {
         if(elt0 && PyInt_Check(elt0))
           {//fmts[3]
@@ -3632,7 +3632,7 @@ namespace MEDCoupling
           throw INTERP_KERNEL::Exception("MEDFileParameterMultiTS::getTimeStepId : invalid input params ! expected fmts[int], fmts[int,int] or fmts[double] to request time step !");
       }
 
-      MEDFileParameter1TS *__getitem__(PyObject *elt0) const throw(INTERP_KERNEL::Exception)
+      MEDFileParameter1TS *__getitem__(PyObject *elt0) const
       {
         MEDFileParameter1TS *ret=self->getTimeStepAtPos(MEDCoupling_MEDFileParameterMultiTS_getTimeStepId(self,elt0));
         if(ret)
@@ -3640,7 +3640,7 @@ namespace MEDCoupling
         return ret;
       }
 
-      std::vector<int> getTimeStepIds(PyObject *elts) const throw(INTERP_KERNEL::Exception)
+      std::vector<int> getTimeStepIds(PyObject *elts) const
       {
         if(PyList_Check(elts))
           {
@@ -3661,14 +3661,14 @@ namespace MEDCoupling
           }
       }
 
-      void __delitem__(PyObject *elts) throw(INTERP_KERNEL::Exception)
+      void __delitem__(PyObject *elts)
       {
         std::vector<int> idsToRemove=MEDCoupling_MEDFileParameterMultiTS_getTimeStepIds(self,elts);
         if(!idsToRemove.empty())
           self->eraseTimeStepIds(&idsToRemove[0],&idsToRemove[0]+idsToRemove.size());
       }
       
-      MEDFileParameter1TS *getTimeStepAtPos(int posId) const throw(INTERP_KERNEL::Exception)
+      MEDFileParameter1TS *getTimeStepAtPos(int posId) const
       {
         MEDFileParameter1TS *ret=self->getTimeStepAtPos(posId);
         if(ret)
@@ -3676,7 +3676,7 @@ namespace MEDCoupling
         return ret;
       }
 
-      PyObject *getIterations() const throw(INTERP_KERNEL::Exception)
+      PyObject *getIterations() const
       {
         std::vector< std::pair<int,int> > res=self->getIterations();
         PyObject *ret=PyList_New(res.size());
@@ -3691,7 +3691,7 @@ namespace MEDCoupling
         return ret;
       }
 
-      PyObject *getTimeSteps() const throw(INTERP_KERNEL::Exception)
+      PyObject *getTimeSteps() const
       {
         std::vector<double> res2;
         std::vector< std::pair<int,int> > res=self->getTimeSteps(res2);
@@ -3714,17 +3714,17 @@ namespace MEDCoupling
   {
   public:
     static MEDFileParameters *New();
-    static MEDFileParameters *New(const std::string& fileName) throw(INTERP_KERNEL::Exception);
-    static MEDFileParameters *New(DataArrayByte *db) throw(INTERP_KERNEL::Exception);
-    MEDFileParameters *deepCopy() const throw(INTERP_KERNEL::Exception);
-    std::vector<std::string> getParamsNames() const throw(INTERP_KERNEL::Exception);
-    std::string simpleRepr() const throw(INTERP_KERNEL::Exception);
-    void resize(int newSize) throw(INTERP_KERNEL::Exception);
-    void pushParam(MEDFileParameterMultiTS *param) throw(INTERP_KERNEL::Exception);
-    void setParamAtPos(int i, MEDFileParameterMultiTS *param) throw(INTERP_KERNEL::Exception);
-    void destroyParamAtPos(int i) throw(INTERP_KERNEL::Exception);
-    int getPosFromParamName(const std::string& paramName) const throw(INTERP_KERNEL::Exception);
-    int getNumberOfParams() const throw(INTERP_KERNEL::Exception);
+    static MEDFileParameters *New(const std::string& fileName);
+    static MEDFileParameters *New(DataArrayByte *db);
+    MEDFileParameters *deepCopy() const;
+    std::vector<std::string> getParamsNames() const;
+    std::string simpleRepr() const;
+    void resize(int newSize);
+    void pushParam(MEDFileParameterMultiTS *param);
+    void setParamAtPos(int i, MEDFileParameterMultiTS *param);
+    void destroyParamAtPos(int i);
+    int getPosFromParamName(const std::string& paramName) const;
+    int getNumberOfParams() const;
     %extend
     {
       MEDFileParameters()
@@ -3737,17 +3737,17 @@ namespace MEDCoupling
         return MEDFileParameters::New(fileName);
       }
 
-      MEDFileParameters(DataArrayByte *db) throw(INTERP_KERNEL::Exception)
+      MEDFileParameters(DataArrayByte *db)
       {
         return MEDFileParameters::New(db);
       }
       
-      std::string __str__() const throw(INTERP_KERNEL::Exception)
+      std::string __str__() const
       {
         return self->simpleRepr();
       }
 
-      MEDFileParameterMultiTS *__getitem__(PyObject *obj) throw(INTERP_KERNEL::Exception)
+      MEDFileParameterMultiTS *__getitem__(PyObject *obj)
       {
         static const char msg[]="MEDFileParameters::__getitem__ : only integer or string with meshname supported !";
         if(PyInt_Check(obj))
@@ -3763,12 +3763,12 @@ namespace MEDCoupling
         return ret;
       }
 
-      int __len__() const throw(INTERP_KERNEL::Exception)
+      int __len__() const
       {
         return self->getNumberOfParams();
       }
       
-      MEDFileParameterMultiTS *getParamAtPos(int i) const throw(INTERP_KERNEL::Exception)
+      MEDFileParameterMultiTS *getParamAtPos(int i) const
       {
         MEDFileParameterMultiTS *ret=self->getParamAtPos(i);
         if(ret)
@@ -3776,7 +3776,7 @@ namespace MEDCoupling
         return ret;
       }
 
-      MEDFileParameterMultiTS *getParamWithName(const std::string& paramName) const throw(INTERP_KERNEL::Exception)
+      MEDFileParameterMultiTS *getParamWithName(const std::string& paramName) const
       {
         MEDFileParameterMultiTS *ret=self->getParamWithName(paramName);
         if(ret)
@@ -3784,7 +3784,7 @@ namespace MEDCoupling
         return ret;
       }
       
-      PyObject *isEqual(const MEDFileParameters *other, double eps) const throw(INTERP_KERNEL::Exception)
+      PyObject *isEqual(const MEDFileParameters *other, double eps) const
       {
         std::string what;
         bool ret0=self->isEqual(other,eps,what);
@@ -3801,31 +3801,31 @@ namespace MEDCoupling
   class MEDFileData : public RefCountObject, public MEDFileWritableStandAlone
   {
   public:
-    static MEDFileData *New(DataArrayByte *db) throw(INTERP_KERNEL::Exception);
-    static MEDFileData *New(const std::string& fileName) throw(INTERP_KERNEL::Exception);
+    static MEDFileData *New(DataArrayByte *db);
+    static MEDFileData *New(const std::string& fileName);
     static MEDFileData *New();
-    MEDFileData *deepCopy() const throw(INTERP_KERNEL::Exception);
-    void setFields(MEDFileFields *fields) throw(INTERP_KERNEL::Exception);
-    void setMeshes(MEDFileMeshes *meshes) throw(INTERP_KERNEL::Exception);
-    void setParams(MEDFileParameters *params) throw(INTERP_KERNEL::Exception);
-    int getNumberOfFields() const throw(INTERP_KERNEL::Exception);
-    int getNumberOfMeshes() const throw(INTERP_KERNEL::Exception);
-    int getNumberOfParams() const throw(INTERP_KERNEL::Exception);
+    MEDFileData *deepCopy() const;
+    void setFields(MEDFileFields *fields);
+    void setMeshes(MEDFileMeshes *meshes);
+    void setParams(MEDFileParameters *params);
+    int getNumberOfFields() const;
+    int getNumberOfMeshes() const;
+    int getNumberOfParams() const;
     //
-    bool changeMeshName(const std::string& oldMeshName, const std::string& newMeshName) throw(INTERP_KERNEL::Exception);
-    bool unPolyzeMeshes() throw(INTERP_KERNEL::Exception);
-    void dealWithStructureElements() throw(INTERP_KERNEL::Exception);
-    std::string getHeader() const throw(INTERP_KERNEL::Exception);
-    void setHeader(const std::string& header) throw(INTERP_KERNEL::Exception);
+    bool changeMeshName(const std::string& oldMeshName, const std::string& newMeshName);
+    bool unPolyzeMeshes();
+    void dealWithStructureElements();
+    std::string getHeader() const;
+    void setHeader(const std::string& header);
     //
     %extend
        {
-         MEDFileData(const std::string& fileName) throw(INTERP_KERNEL::Exception)
+         MEDFileData(const std::string& fileName)
          {
            return MEDFileData::New(fileName);
          }
 
-         MEDFileData(DataArrayByte *db) throw(INTERP_KERNEL::Exception)
+         MEDFileData(DataArrayByte *db)
          {
            return MEDFileData::New(db);
          }
@@ -3835,12 +3835,12 @@ namespace MEDCoupling
            return MEDFileData::New();
          }
 
-         std::string __str__() const throw(INTERP_KERNEL::Exception)
+         std::string __str__() const
          {
            return self->simpleRepr();
          }
 
-         MEDFileMeshes *getMeshes() const throw(INTERP_KERNEL::Exception)
+         MEDFileMeshes *getMeshes() const
          {
            MEDFileMeshes *ret=self->getMeshes();
            if(ret)
@@ -3848,7 +3848,7 @@ namespace MEDCoupling
            return ret;
          }
 
-         MEDFileParameters *getParams() const throw(INTERP_KERNEL::Exception)
+         MEDFileParameters *getParams() const
          {
            MEDFileParameters *ret=self->getParams();
            if(ret)
@@ -3856,7 +3856,7 @@ namespace MEDCoupling
            return ret;
          }
 
-         MEDFileFields *getFields() const throw(INTERP_KERNEL::Exception)
+         MEDFileFields *getFields() const
          {
            MEDFileFields *ret=self->getFields();
            if(ret)
@@ -3864,13 +3864,13 @@ namespace MEDCoupling
            return ret;
          }
 
-         bool changeMeshNames(PyObject *li) throw(INTERP_KERNEL::Exception)
+         bool changeMeshNames(PyObject *li)
          {
            std::vector< std::pair<std::string,std::string> > modifTab=convertVecPairStStFromPy(li);
            return self->changeMeshNames(modifTab);
          }
 
-         static MEDFileData *Aggregate(PyObject *mfds) throw(INTERP_KERNEL::Exception)
+         static MEDFileData *Aggregate(PyObject *mfds)
          {
            std::vector<const MEDFileData *> mfdsCpp;
            convertFromPyObjVectorOfObj<const MEDCoupling::MEDFileData *>(mfds,SWIGTYPE_p_MEDCoupling__MEDFileData,"MEDFileData",mfdsCpp);
@@ -3883,11 +3883,11 @@ namespace MEDCoupling
   class SauvReader : public RefCountObject
   {
   public:
-    static SauvReader* New(const std::string& fileName) throw(INTERP_KERNEL::Exception);
-    MEDFileData * loadInMEDFileDS() throw(INTERP_KERNEL::Exception);
+    static SauvReader* New(const std::string& fileName);
+    MEDFileData * loadInMEDFileDS();
     %extend
     {
-      SauvReader(const std::string& fileName) throw(INTERP_KERNEL::Exception)
+      SauvReader(const std::string& fileName)
       {
         return SauvReader::New(fileName);
       }
@@ -3898,13 +3898,13 @@ namespace MEDCoupling
   {
   public:
     static SauvWriter * New();
-    void setMEDFileDS(const MEDFileData* medData, unsigned meshIndex = 0) throw(INTERP_KERNEL::Exception);
-    void write(const std::string& fileName) throw(INTERP_KERNEL::Exception);
-    void setCpyGrpIfOnASingleFamilyStatus(bool status) throw(INTERP_KERNEL::Exception);
-    bool getCpyGrpIfOnASingleFamilyStatus() const throw(INTERP_KERNEL::Exception);
+    void setMEDFileDS(const MEDFileData* medData, unsigned meshIndex = 0);
+    void write(const std::string& fileName);
+    void setCpyGrpIfOnASingleFamilyStatus(bool status);
+    bool getCpyGrpIfOnASingleFamilyStatus() const;
     %extend
     {
-      SauvWriter() throw(INTERP_KERNEL::Exception)
+      SauvWriter()
       {
         return SauvWriter::New();
       }
@@ -3918,13 +3918,13 @@ namespace MEDCoupling
   class MEDFileField1TSStructItem
   {
   public:
-    static MEDFileField1TSStructItem BuildItemFrom(const MEDFileAnyTypeField1TS *ref, const MEDFileMeshStruct *meshSt) throw(INTERP_KERNEL::Exception);
+    static MEDFileField1TSStructItem BuildItemFrom(const MEDFileAnyTypeField1TS *ref, const MEDFileMeshStruct *meshSt);
   };
 
   class MEDFileMeshStruct : public RefCountObject
   {
   public:
-    static MEDFileMeshStruct *New(const MEDFileMesh *mesh) throw(INTERP_KERNEL::Exception);
+    static MEDFileMeshStruct *New(const MEDFileMesh *mesh);
   protected:
     ~MEDFileMeshStruct();
   };
@@ -3932,15 +3932,15 @@ namespace MEDCoupling
   class MEDMeshMultiLev : public RefCountObject
   {
   public:
-    virtual MEDMeshMultiLev *prepare() const throw(INTERP_KERNEL::Exception);
-    DataArray *buildDataArray(const MEDFileField1TSStructItem& fst, const MEDFileFieldGlobsReal *globs, const DataArray *vals) const throw(INTERP_KERNEL::Exception);
-    DataArrayInt *retrieveGlobalNodeIdsIfAny() const throw(INTERP_KERNEL::Exception);
+    virtual MEDMeshMultiLev *prepare() const;
+    DataArray *buildDataArray(const MEDFileField1TSStructItem& fst, const MEDFileFieldGlobsReal *globs, const DataArray *vals) const;
+    DataArrayInt *retrieveGlobalNodeIdsIfAny() const;
   protected:
     ~MEDMeshMultiLev();
   public:
     %extend
     {
-      PyObject *retrieveFamilyIdsOnCells() const throw(INTERP_KERNEL::Exception)
+      PyObject *retrieveFamilyIdsOnCells() const
       {
         DataArrayInt *famIds(0);
         bool isWithoutCopy(false);
@@ -3953,7 +3953,7 @@ namespace MEDCoupling
         return ret;
       }
 
-      PyObject *retrieveNumberIdsOnCells() const throw(INTERP_KERNEL::Exception)
+      PyObject *retrieveNumberIdsOnCells() const
       {
         DataArrayInt *numIds(0);
         bool isWithoutCopy(false);
@@ -3966,7 +3966,7 @@ namespace MEDCoupling
         return ret;
       }
       
-      PyObject *retrieveFamilyIdsOnNodes() const throw(INTERP_KERNEL::Exception)
+      PyObject *retrieveFamilyIdsOnNodes() const
       {
         DataArrayInt *famIds(0);
         bool isWithoutCopy(false);
@@ -3979,7 +3979,7 @@ namespace MEDCoupling
         return ret;
       }
 
-      PyObject *retrieveNumberIdsOnNodes() const throw(INTERP_KERNEL::Exception)
+      PyObject *retrieveNumberIdsOnNodes() const
       {
         DataArrayInt *numIds(0);
         bool isWithoutCopy(false);
@@ -3992,7 +3992,7 @@ namespace MEDCoupling
         return ret;
       }
 
-      PyObject *getGeoTypes() const throw(INTERP_KERNEL::Exception)
+      PyObject *getGeoTypes() const
       {
         std::vector< INTERP_KERNEL::NormalizedCellType > result(self->getGeoTypes());
         std::vector< INTERP_KERNEL::NormalizedCellType >::const_iterator iL(result.begin());
@@ -4011,7 +4011,7 @@ namespace MEDCoupling
   public:
     %extend
      {
-       PyObject *buildVTUArrays() const throw(INTERP_KERNEL::Exception)
+       PyObject *buildVTUArrays() const
        {
          DataArrayDouble *coords(0); DataArrayByte *types(0); DataArrayInt *cellLocations(0),*cells(0),*faceLocations(0),*faces(0);
          bool ncc(self->buildVTUArrays(coords,types,cellLocations,cells,faceLocations,faces));
@@ -4043,7 +4043,7 @@ namespace MEDCoupling
   public:
     %extend
     {
-      PyObject *buildVTUArrays() const throw(INTERP_KERNEL::Exception)
+      PyObject *buildVTUArrays() const
       {
         bool isInternal;
         std::vector< DataArrayDouble * > objs(self->buildVTUArrays(isInternal));
@@ -4068,7 +4068,7 @@ namespace MEDCoupling
   public:
     %extend
     {
-      PyObject *buildVTUArrays() const throw(INTERP_KERNEL::Exception)
+      PyObject *buildVTUArrays() const
       {
         DataArrayDouble *ret0(0);
         std::vector<int> ret1;
@@ -4092,16 +4092,16 @@ namespace MEDCoupling
   class MEDFileFastCellSupportComparator : public RefCountObject
   {
   public:
-    static MEDFileFastCellSupportComparator *New(const MEDFileMeshStruct *m, const MEDFileAnyTypeFieldMultiTS *ref) throw(INTERP_KERNEL::Exception);
-    MEDMeshMultiLev *buildFromScratchDataSetSupport(int timeStepId, const MEDFileFieldGlobsReal *globs) const throw(INTERP_KERNEL::Exception);
-    bool isDataSetSupportEqualToThePreviousOne(int timeStepId, const MEDFileFieldGlobsReal *globs) const throw(INTERP_KERNEL::Exception);
-    int getNumberOfTS() const throw(INTERP_KERNEL::Exception);
+    static MEDFileFastCellSupportComparator *New(const MEDFileMeshStruct *m, const MEDFileAnyTypeFieldMultiTS *ref);
+    MEDMeshMultiLev *buildFromScratchDataSetSupport(int timeStepId, const MEDFileFieldGlobsReal *globs) const;
+    bool isDataSetSupportEqualToThePreviousOne(int timeStepId, const MEDFileFieldGlobsReal *globs) const;
+    int getNumberOfTS() const;
   protected:
     ~MEDFileFastCellSupportComparator();
   public:
     %extend
     {
-      PyObject *getGeoTypesAt(int timeStepId, const MEDFileMesh *m) const throw(INTERP_KERNEL::Exception)
+      PyObject *getGeoTypesAt(int timeStepId, const MEDFileMesh *m) const
       {
         std::vector< INTERP_KERNEL::NormalizedCellType > result(self->getGeoTypesAt(timeStepId,m));
         std::vector< INTERP_KERNEL::NormalizedCellType >::const_iterator iL(result.begin());
index 2b036cbfb18f89d0331076480bd2087d88b5b395..5103c7e59a1848d7715dc47427cbf62eff61e54f 100644 (file)
@@ -1,5 +1,5 @@
 #  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+# Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 45a35e9419598775a8667ff9dee7cb39cd55e126..744e8f23f919a463bcb46f1208bd3e7e1a3cd4ee 100644 (file)
@@ -1,5 +1,5 @@
 #  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+# Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 575f7a0e939d9dbe8c637d992e682d48c004833f..da534c4d6df978d10244b1194ed00666c64865f4 100644 (file)
@@ -1,5 +1,5 @@
 #  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+# Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 4c9812f6eeb6e1ef83f9c58105a33523639bd5bd..af3510a771556d7c2d9abd2ff045d0cb47374cdf 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2017  CEA/DEN, EDF R&D
+// Copyright (C) 2017-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 6acbc1f18fd11d3bade41cdd153b9f20a61f1e14..5828f59b850c2a61409d73a02e8bf33589282d7a 100644 (file)
@@ -1,5 +1,5 @@
 #  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+# Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -110,7 +110,7 @@ class MEDLoaderSplitter:
             if 1 in mfm.getFamArrNonEmptyLevelsExt():
                 mlPart.setFamilyFieldArr(1,mfm.getFamilyFieldAtLevel(1)[trad])
                 pass
-            for k,v in dAddlevs.iteritems():
+            for k,v in dAddlevs.items():
                 part=v.getCellIdsFullyIncludedInNodeIds(trad)
                 mSubPart=v[part] ; mSubPart.renumberNodesInConn(trado2n) ; mSubPart.setCoords(mPart.getCoords())
                 mlPart[k]=mSubPart
index 5f6d1d7ae80dbd3768c2a83fbe0e0888cd03a703..128b12af4f7c140e95b5d28ea63947e318d3ec69 100644 (file)
@@ -1,5 +1,5 @@
 #  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+# Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -872,6 +872,27 @@ class MEDLoaderTest1(unittest.TestCase):
         self.assertRaises(Exception,MEDLoader.ReadField,MEDLoader.ON_CELLS,fname,"mesh",0,"field2",5,5) # invalid time step
         pass
 
+    def testMultiWriteFieldOnMergeableNodesMeshes(self):
+        fname="Pyfile120.med"
+        arr=MEDLoader.DataArrayDouble([(0,0),(1,0),(0,1),(0,0),(1,0),(0,1)])
+        m=MEDLoader.MEDCouplingUMesh("mesh",2)
+        m.setCoords(arr)
+        m.allocateCells()
+        m.insertNextCell(MEDLoader.NORM_TRI3,[0,4,2])
+        m.insertNextCell(MEDLoader.NORM_TRI3,[3,1,5])
+        m.setName("mesh")
+        #
+        f=MEDLoader.MEDCouplingFieldDouble(MEDLoader.ON_CELLS)
+        f.setMesh(m)
+        f.setArray(MEDLoader.DataArrayDouble([5,6]))
+        f.setName("field")
+        #
+        f.setTime(0.,0,0)
+        MEDLoader.WriteField(fname,f,True)
+        f.setTime(1.,1,0)
+        MEDLoader.WriteField(fname,f,False)
+        pass
+
     pass
 
 if __name__ == "__main__":
index 188e5cc38f20f1f534ba7231ff6db731b1db69aa..642dd973c950b3fe1ad48622f678a72244585e4e 100644 (file)
@@ -1,5 +1,5 @@
 #  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2016  CEA/DEN, EDF R&D
+# Copyright (C) 2016-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index f167679653d2fed6407796c1aaeb330b3b548350..1ef6e757b59741691c41e6d292bca528cb2a7e72 100644 (file)
@@ -1,5 +1,5 @@
 #  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+# Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 4cf592135355b04331e64bc429663442bff5c06f..11753a1a030c9de6bca9c73a70ea708ef86480e2 100644 (file)
@@ -1,5 +1,5 @@
 #  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+# Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 8c903fbdc725751b7a58a2e426b22f795985b98a..513e3384cfbfad81dd99949fe3d5d10a5fb9f3f7 100644 (file)
@@ -1,5 +1,5 @@
 #  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+# Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 77d53506d87e8558fc013fbc4c400bc03e8cf927..3c2dbc575aabff3b821a5780a0994d9255c4bd33 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -20,7 +20,7 @@
 
 #include <vector>
 
-static PyObject *convertMEDFileMesh(MEDCoupling::MEDFileMesh* mesh, int owner) throw(INTERP_KERNEL::Exception)
+static PyObject *convertMEDFileMesh(MEDCoupling::MEDFileMesh* mesh, int owner)
 {
   PyObject *ret=0;
   if(!mesh)
@@ -39,7 +39,7 @@ static PyObject *convertMEDFileMesh(MEDCoupling::MEDFileMesh* mesh, int owner) t
   return ret;
 }
 
-static PyObject *convertMEDFileParameter1TS(MEDCoupling::MEDFileParameter1TS* p1ts, int owner) throw(INTERP_KERNEL::Exception)
+static PyObject *convertMEDFileParameter1TS(MEDCoupling::MEDFileParameter1TS* p1ts, int owner)
 {
   PyObject *ret=0;
   if(!p1ts)
@@ -56,7 +56,7 @@ static PyObject *convertMEDFileParameter1TS(MEDCoupling::MEDFileParameter1TS* p1
   return ret;
 }
 
-static PyObject *convertMEDFileField1TS(MEDCoupling::MEDFileAnyTypeField1TS *p, int owner) throw(INTERP_KERNEL::Exception)
+static PyObject *convertMEDFileField1TS(MEDCoupling::MEDFileAnyTypeField1TS *p, int owner)
 {
   PyObject *ret=0;
   if(!p)
@@ -75,7 +75,7 @@ static PyObject *convertMEDFileField1TS(MEDCoupling::MEDFileAnyTypeField1TS *p,
   return ret;
 }
 
-static PyObject *convertMEDFileFieldMultiTS(MEDCoupling::MEDFileAnyTypeFieldMultiTS *p, int owner) throw(INTERP_KERNEL::Exception)
+static PyObject *convertMEDFileFieldMultiTS(MEDCoupling::MEDFileAnyTypeFieldMultiTS *p, int owner)
 {
   PyObject *ret=0;
   if(!p)
@@ -94,7 +94,7 @@ static PyObject *convertMEDFileFieldMultiTS(MEDCoupling::MEDFileAnyTypeFieldMult
   return ret;
 }
 
-static PyObject *convertMEDMeshMultiLev(MEDCoupling::MEDMeshMultiLev *p, int owner) throw(INTERP_KERNEL::Exception)
+static PyObject *convertMEDMeshMultiLev(MEDCoupling::MEDMeshMultiLev *p, int owner)
 {
   PyObject *ret=0;
   if(!p)
@@ -113,7 +113,7 @@ static PyObject *convertMEDMeshMultiLev(MEDCoupling::MEDMeshMultiLev *p, int own
   return ret;
 }
 
-static std::vector<std::pair<int,int> > convertTimePairIdsFromPy(PyObject *pyLi) throw(INTERP_KERNEL::Exception)
+static std::vector<std::pair<int,int> > convertTimePairIdsFromPy(PyObject *pyLi)
 {
   std::vector<std::pair<int,int> > ret;
   if(PyList_Check(pyLi))
@@ -328,7 +328,7 @@ std::vector< std::pair<std::vector<std::string>, std::string > > convertVecPairV
  * Called by MEDFileAnyTypeFieldMultiTS::__getitem__ when \a elt0 is neither a list nor a slice.
  * In this case a MEDFileAnyTypeField1TS object is returned.
  */
-int MEDFileAnyTypeFieldMultiTSgetitemSingleTS__(const MEDFileAnyTypeFieldMultiTS *self, PyObject *elt0) throw(INTERP_KERNEL::Exception)
+int MEDFileAnyTypeFieldMultiTSgetitemSingleTS__(const MEDFileAnyTypeFieldMultiTS *self, PyObject *elt0)
 {
   if(elt0 && PyInt_Check(elt0))
     {//fmts[3]
@@ -365,7 +365,7 @@ int MEDFileAnyTypeFieldMultiTSgetitemSingleTS__(const MEDFileAnyTypeFieldMultiTS
  * Called by MEDFileAnyTypeFieldMultiTS::__getitem__ when \a obj is neither a list nor a slice.
  * In this case a MEDFileAnyTypeField1TS object is returned.
  */
-int MEDFileFieldsgetitemSingleTS__(const MEDFileFields *self, PyObject *obj) throw(INTERP_KERNEL::Exception)
+int MEDFileFieldsgetitemSingleTS__(const MEDFileFields *self, PyObject *obj)
 {
   static const char msg[]="MEDFileFields::__getitem__ : only integer or string with fieldname supported !";
   if(PyInt_Check(obj))
index f9454b1b183c3fd765b2805dcdbe4b0db599178d..7f4dfd6af3afb12a1c1da808b8ce8c186a1d5781 100644 (file)
@@ -1,5 +1,5 @@
 #  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+# Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -322,6 +322,49 @@ class SauvLoaderTest(unittest.TestCase):
         self.assertTrue(ids1.isEqual(ids2))
         pass
 
+    @unittest.skipUnless(HasXDR(),"requires XDR")
+    def testReadSauvXDRCastem17(self):
+        """test reading Castem17 XDR sauv with 'ENREGISTREMENT DE TYPE 8'"""
+        sauvFile = os.path.join(self.__getResourcesDirectory(),"castem17_result_xdr.sauv")
+        self.assertTrue( os.access( sauvFile, os.F_OK))
+        sr=SauvReader.New(sauvFile)
+        mfd2=sr.loadInMEDFileDS()
+        mfMesh=mfd2.getMeshes()[0]
+        umesh0 = mfMesh.getMeshAtLevel(0)
+        #
+        self.assertEqual(2,umesh0.getNumberOfCellsWithType( NORM_HEXA8 ))
+        self.assertEqual(12,umesh0.getNumberOfNodes())
+        #
+        mfField=mfd2.getFields().getFieldWithName("TEMP1")
+        iterations = mfField.getIterations()
+        field0 = mfField.getFieldOnMeshAtLevel(ON_NODES, iterations[0][0],iterations[0][1],umesh0)
+        fieldArray = field0.getArray()
+        expectedValues = [238.46153846153845]*4 + [169.23076923076923]*4 + [100]*4
+        expectedArray = DataArrayDouble(expectedValues)
+        self.assertTrue( fieldArray.isEqualWithoutConsideringStr( expectedArray, 1e-12 ))
+        pass
+
+    def testReadSauvAsciiCastem17(self):
+        """test reading Castem17 ascii sauv with 'ENREGISTREMENT DE TYPE 8'"""
+        sauvFile = os.path.join(self.__getResourcesDirectory(),"castem17_result_ascii.sauv")
+        self.assertTrue( os.access( sauvFile, os.F_OK))
+        sr=SauvReader.New(sauvFile)
+        mfd2=sr.loadInMEDFileDS()
+        mfMesh=mfd2.getMeshes()[0]
+        umesh0 = mfMesh.getMeshAtLevel(0)
+        #
+        self.assertEqual(2,umesh0.getNumberOfCellsWithType( NORM_HEXA8 ))
+        self.assertEqual(12,umesh0.getNumberOfNodes())
+        #
+        mfField=mfd2.getFields().getFieldWithName("TEMP1")
+        iterations = mfField.getIterations()
+        field0 = mfField.getFieldOnMeshAtLevel(ON_NODES, iterations[0][0],iterations[0][1],umesh0)
+        fieldArray = field0.getArray()
+        expectedValues = [238.46153846153845]*4 + [169.23076923076923]*4 + [100]*4
+        expectedArray = DataArrayDouble(expectedValues)
+        self.assertTrue( fieldArray.isEqualWithoutConsideringStr( expectedArray, 1e-12 ))
+        pass
+
     def testGaussPt(self):
         """issue 22321: [CEA 933] Bug when reading a sauve file containing field on Gauss Pt.
         The problem was that a field ON_GAUSS_PT was created but no Gauss Localization
index d49a20222f733667d0ba1bbae32d108a428d328e..5188e58d97ed6aaefb28fae573524060ea70ff0a 100644 (file)
@@ -1,5 +1,5 @@
 #  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+# Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index d66efe01b9f06dfec07e89e11828c0e8a5a83be9..a8cf81a4da49412e12181329e6cb5279da634d96 100644 (file)
@@ -1,5 +1,5 @@
 #  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+# Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index cd32417cc7dfd9ec3339bebe7dbd49353f1cfa45..a572536706bb42d92600574857366e8e87ad0cb7 100755 (executable)
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+# Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 6f6400b7b90811930437ef20d57df8d5326c90e0..cfaa62abe90bdfda2174ee585c89b5c9b92afc60 100755 (executable)
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+# Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 67766e2f8dbfbf39504acdfd817b44b0e82f7cc8..6063b88539f8b10f361a43ddce8398f00304a0fb 100755 (executable)
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 # --
-# Copyright (C) 2009-2016  CEA/DEN, EDF R&D
+# Copyright (C) 2009-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index e0a3d3fb654c42c57f05453c24f8d8dbf09109b5..77da3eb2440a87c47b624be449d6a19a58434b48 100644 (file)
@@ -1,6 +1,6 @@
 # -*- coding: iso-8859-1 -*-
 # --
-# Copyright (C) 2009-2016  CEA/DEN, EDF R&D
+# Copyright (C) 2009-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index e284d82f8bcd046ae9f275e14fb96a870aa1879d..b2da4b8cf415641d861b1ab88134745651a40b97 100755 (executable)
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 # --
-# Copyright (C) 2009-2016  CEA/DEN, EDF R&D
+# Copyright (C) 2009-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 07ebe51e895b4c8d11e99b84781f27dfaf6c7bfd..975a9fd2bdf948c2f6c02177d69058dc7c441717 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2017  CEA/DEN, EDF R&D
+# Copyright (C) 2017-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index a230e8e5f8402332be00f5aaa27c6764f797b167..e65de25a4462dca74b454d78c66b6eabbfc3069c 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2016  CEA/DEN, EDF R&D
+# Copyright (C) 2012-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 86b8027b7f8cd0d7be0e4e9f786bbe9bfc22d2a3..172b9a9b1c95f55191661862e8e7855edab966dc 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2015-2016  CEA/DEN, EDF R&D
+# Copyright (C) 2015-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 1219b7b25e73cada08b45f1c6ca047ff8f415479..b3284e9be9fd57119c1a623da37cedbe9922a77e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 3feff63173a077ddc9c2cdc428785d1360205a7f..a0bdce1b6f21bf5e72e9840bafd84e849feaa40b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 9d24ecaf9f8ac49046e167d8310fa1bff81ce7f3..94fb1953d661293622ae0ab7f30afe349224561c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 81ccc1b21d774a85254a1a325b5b574603a01059..fd7528d4d8ca934ce7ee78d5dc211ca3a5b9d619 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 0372794f677e61fed70e90bd213c3cf292e24e29..26ae515a5c6cebe947969f0893d704048722a5bc 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 79b217ccb93b65ee88ceda99dd75261bf3f1b972..0abf7701eeaa36046d145440c65c8926de073f18 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 3708d287f79cd533ffff4beb7955e0d7424a29a2..9f27daa1677c256d7cf9482522be54371bb1141e 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2016  CEA/DEN, EDF R&D
+# Copyright (C) 2012-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
old mode 100755 (executable)
new mode 100644 (file)
index 1be1ae7..f96fdbb
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 3a1c9ce67c2624d8cf8d0d39f25cc7894d7ffb72..7297e48b67c4ef1042e878c60c9f2dbd3842c96c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 0c51ac8e22d60e377a6b04cd5ef4d586b516d34e..ea4ffd3fb954d5c6638a1e06fa64c75953398327 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 8037cf6940e9a030dcad662f0d9654ff5b031dd2..51e7ee7af5bc3ba7407d5862eedc53de08c71daf 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 60a5595388cea50931655d27ba27e365c866f543..605718bd988095cbf7057f6763ff0cf3e77dc6b3 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 5836662a6a9993b418c42567042df7b175313d5d..9e02fd968a976344ff9c3449591addd184472d39 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 8728ce9e025ab33937106cc85464186f15579d37..a83d3449ac5309399433059662e59d897978451a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index d368cf23658a75ee03093c9fd03a83e8812b816e..d5e84c0a0b5674366f905ad34e81b7eea29754ba 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index b5fc3cc29278c8753d04f70433d31df5e304f519..e020b731cac88a7890b5aabea090a004a34029f1 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 272303a1c2cb7320936dfa622b1435ac5970ff28..130ffc701b1ea3f7cbc6a9b44bf64e4c21cd861b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 644e9e68e3b599689fd1cdd66f78f6de3e936872..c20901c84be6b7ce5d424b07768c20e19af747a4 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 335746d0c6b6a684b935b4481f558f7802261629..d01d9e0680c6f7328bf77bc331deecfd191b78fa 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index ca67f9a0331c0a3fc055a13d3323816f02f256a0..ad27239088d69f71f5a0903a05a085f82a83410c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 81231dacedab16984cd180146375669fca7d3132..3da899e5fe5f7da1eacabe6b0f6da0e7208a6831 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 099e0fb3e5351d5e167cb8752be84a4e7696ed8f..eae0f17f5725777c2d082ea509401e509ee6df6c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 811fd0c336913aac73e6819376f0b13d0d595deb..ba130e9b512fd0d2cfc117a56fa9579fe8ec421d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index e0ee8cc1a9acaca15e869aefa2830d0953e2995b..640db473ac316be28e4db2bba013a40cccae5b2e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index ff67136bf24975e0711cb18e095ec38f8a1e08df..561d366ec68b2fc4ff7b4a65a99349f2052d8d31 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 9ad99274c293e23b7b0f31aded0768d06ee52089..cac6823f43c7369e72a09fab685c1128f5d43483 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index e06fb85999dabc9b16f273e6ebd41d4efe5f009c..9a23993945d4d800f9d35507933aad1651801ed3 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2017  CEA/DEN, EDF R&D
+// Copyright (C) 2017-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index cb1599b4ed8c8465ad89c3094e106091148b6922..986d8abecbd98b5427b02ee8f79973cf6ed947aa 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2017  CEA/DEN, EDF R&D
+// Copyright (C) 2017-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 8ff1f85fbcc1971c93ac8d6e66eb388fef7038c0..1dc6919c587b5e82dda2bc1605e970a8afa9763a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index e72e21c178b46e0ea423780b813a48fa26ef106e..2d441fb5887e68de37fd3b0e86b65e03bac06aa7 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index e496ace68626a97ad442856adf3dae384258f64c..2557c0e3a2fb5ca228bbd03917d496eeefeed51d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 9fde64b3f06db20f0368e0cc347723ed80c59d54..9a371e498cc5372a8395f93f0d7ca9ce4accc8b8 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index beb9c471c9494dd28389cdd5aa3fd88261b5da37..99c62b4a91c1fe26fcdf3be0d978126e5e7186e7 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index ce4805e0ab2481239bfae869ea03f214e4c7eba2..c60bc070225b863ffb7aae0dfc37f7a5b5c2b262 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index a0d4686bd6c969f18cf1bb26edf3b1d033ab7243..8718430a36711059c5513589944c05f13ac1dd96 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index cbab99edcc343dca871e7bd2a0e8605763ecbd1d..6134067b1c86c76815c9fedfac336990814f11a6 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 693331b29f74d234e64d956b5d4d2d38dd074496..6197f4ed6f9586ac92a3f739e670b39d937608cb 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 364f7e9f6ed49a503fe2f77e9cc58694cac2e6d9..b00d29eb3bf919ec07ba654f2e2ce446a344c6b1 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index e77dbbaa63773d7b9dcc6e453e5a076c24953dec..dff8e0d2ed3002bb299c62f375578b8f1312e995 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index e7b2146b1731b02dec89bede7bcad7cce319ad3a..581c353699be52b0c794e317387b20dc9402a9ac 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index d69d10fe60390d1101ed32ec28da129c12472905..3b00ab7bf0b8cdf6c051f8081a6d839a87eac9a6 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index ec036bbef1968bab8d0d88a9ed52f58ec162f650..fcd43eaadaf329b2d385269f9a458e659183bfaf 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 0b372f4e6d573d185292ef0f0b5ecba8aad3d710..31dc0055868030985ee3c04354981cff3f7d725c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 10535218778dc743509c2996592c8b4ed3cd6991..1ad1a358d8ff8ae6a8e51ac6b2653540f255db7f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 14a9799e67b35e57a8e1ff65097599465ae45e4d..b2717f27923879129f12e2a19e2c1aa49be51cbc 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2016  CEA/DEN, EDF R&D
+# Copyright (C) 2012-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 46dadc4bff4854af0dc2d0714c33624d6af2ffcb..044e8154f7c9d9b1d5d5da0ece76ece01a3a85d0 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2015-2016  CEA/DEN, EDF R&D
+# Copyright (C) 2015-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 6b25be16ffe5d92cb7a849678bcbaa56bd717ec7..1c1b781020ee9a0c717ce76678915b3910c190e1 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -1367,7 +1367,7 @@ void MEDPARTITIONERTest::testCreateBoundaryFaces2D()
 
     int nbv=coor.size()/2; //nb of vertices
     DataArrayDouble *myCoords=DataArrayDouble::New();
-    myCoords->useArray( &coor[0], /*ownership=*/false, CPP_DEALLOC, nbv, 2 );
+    myCoords->useArray( &coor[0], /*ownership=*/false, DeallocType::CPP_DEALLOC, nbv, 2 );
     mesh->setCoords(myCoords);
     mesh->setName("FacesIn2D");
     myCoords->decrRef();
index f3721c7056d8ff0228ac8aa338d791fbef95dad7..7c48ad8659356f4b5b0c70fb89e6a0766dc4d49c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index a54bbaa33d7021dd7edc8b398703b86dbc6b3bad..8c65237703d8c3b95d42c00c5ef72782fc3ec5de 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index cf5417a588452c64a2ed9b8dd1ea0b5ccd53de56..eed7adf28e767addf51c3c4aff6e6ea2eeabf547 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 7df608ef91ff4aec4ffebc8d5510e9217369f2e9..adc4f374227528254ec9edb08684e75f0f350752 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 6e0d4f2bf58ebf370b9b35f56c24d043b4448210..0f9521ef9c210c27fbc8ff35a84bad40cfb46755 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 3a8e3986c961c6f24680e522b9c7bdfd2b04d6ea..0c39e70a74583a68813a8683635e562761d3ac18 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2016  CEA/DEN, EDF R&D
+# Copyright (C) 2012-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index a7063f2511b53fd462dafb7660231e22e29fb4fa..b5b7444d35dc87e54071e424078d548da2a9d16d 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2015-2016  CEA/DEN, EDF R&D
+# Copyright (C) 2015-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 5967231a42d9db6d73215688472aeff391357ed2..0c83940052f9696cefc8b99966a7abcddf58ac69 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index a876aeb70b5dbd18f4fbba9d9489cc65274987d3..af3b40b2d5ecf75db4967921482a3dbd9f2457bb 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -40,7 +40,7 @@ namespace MEDPARTITIONER
   public:
     typedef enum {METIS,SCOTCH,PTSCOTCH} splitter_type;
   public:
-    virtual void partGraph(int ndomain, const std::string& options_string="", ParaDomainSelector *sel=0) throw(INTERP_KERNEL::Exception);
+    virtual void partGraph(int ndomain, const std::string& options_string="", ParaDomainSelector *sel=0);
     MEDCoupling::MEDCouplingSkyLineArray *getGraph() const
     {
       const MEDCoupling::MEDCouplingSkyLineArray *ret(self->getGraph());
@@ -61,14 +61,14 @@ namespace MEDPARTITIONER
   class MEDPartitioner
   {
   public:
-    MEDPartitioner(const std::string& filename, int ndomains=1, const std::string& library="metis",bool create_boundary_faces=false, bool create_joints=false, bool mesure_memory=false) throw(INTERP_KERNEL::Exception);
-    MEDPartitioner(const MEDCoupling::MEDFileData* fileData, int ndomains=1, const std::string& library="metis",bool create_boundary_faces=false, bool create_joints=false, bool mesure_memory=false) throw(INTERP_KERNEL::Exception);
-    MEDPartitioner(const MEDCoupling::MEDFileData* fileData, Graph* graph, bool create_boundary_faces=false, bool create_joints=false, bool mesure_memory=false) throw(INTERP_KERNEL::Exception);
-    static MEDPARTITIONER::Graph* Graph(MEDCoupling::MEDCouplingSkyLineArray* graph, Graph::splitter_type split=Graph::METIS, int* edgeweight=0, MEDCoupling::DataArrayInt* vlbloctab=0) throw(INTERP_KERNEL::Exception);
+    MEDPartitioner(const std::string& filename, int ndomains=1, const std::string& library="metis",bool create_boundary_faces=false, bool create_joints=false, bool mesure_memory=false);
+    MEDPartitioner(const MEDCoupling::MEDFileData* fileData, int ndomains=1, const std::string& library="metis",bool create_boundary_faces=false, bool create_joints=false, bool mesure_memory=false);
+    MEDPartitioner(const MEDCoupling::MEDFileData* fileData, Graph* graph, bool create_boundary_faces=false, bool create_joints=false, bool mesure_memory=false);
+    static MEDPARTITIONER::Graph* Graph(MEDCoupling::MEDCouplingSkyLineArray* graph, Graph::splitter_type split=Graph::METIS, int* edgeweight=0, MEDCoupling::DataArrayInt* vlbloctab=0);
     static std::vector<std::string> AvailableAlgorithms();
     static std::vector<std::string> AllAlgorithms();
-    MEDCoupling::MEDFileData* getMEDFileData() throw(INTERP_KERNEL::Exception);
-    void write(const std::string& filename) throw(INTERP_KERNEL::Exception);
+    MEDCoupling::MEDFileData* getMEDFileData();
+    void write(const std::string& filename);
   };
 }
 
index 93657cabf1d3cdd763a2bf8f00e6226669c07e7e..4414b2286edf2ad7051b2533c1cedceddf1a605f 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2016  CEA/DEN, EDF R&D
+# Copyright (C) 2012-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 46753e9a96a61ba2c707c23be5c1d126b12bf626..1bf934ecddae5ad316a01e213e88c9874ecb6f97 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2016  CEA/DEN, EDF R&D
+# Copyright (C) 2012-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index bb0dac70e6a063b4438739a7192e6776dea66215..dbf9c110390b1d5ea8184df30d6d718ba78f0ff3 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index c4bb6ba95a6b43184a141c8c9c464c4ef60477fd..1a56684d143a95e13308089130dcf8fb55f13929 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 997213baf408c454c725816ceac1e809bb37dfec..4c72d0be98297773258b469bbaeeeed0d03f9357 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 0b2c7b16fe8d8837fa705e77498620e269852d80..51c7543360e0f6cb7cf297dca47a8a7f698d400c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index dbb8226a501f637b9b3501bf524f395bbfbb5ac3..5471c596459947153e1a7a8bea3f00c6d1733a2e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 98470ee91d4de113551b4e3fad8dd7ec4ef35565..9ca24ed173e711b8508eb93d1f1a634a79d47ca1 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index dbc4d8d977ff5624252027851709de04b11a7e0a..98aa37d054302e1d7f68ff556c84a553413d3ff1 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2016  CEA/DEN, EDF R&D
+# Copyright (C) 2012-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 92780d7ef3915ab2685a987b4daeced766f608fc..d5cf6d5507243b4f44572c4e1255684d12a1cfd1 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 4055c56914e0995aaf5f535f01231548b3439b88..c24c4fcfc06398690314fe5d7478c3784becceea 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index da5bf9ccc92697e74fbca8e7f2b29ff8bc93dab4..1f2768176c50b7b163f31612d8ce0120deea61ab 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 3a5613cb92b6d788a9dc8e005db558c46ce7c56f..429bac2367e16910e48f92475f0be55060453b79 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 94991ab2be7cfa1292a7ef93face9da7c0977f80..440ecdcb15b46e4c1e6a4cd77e595fb584415984 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 09fa7364893f329f6db0cfd403ec99e947d6b0e4..3f3f3c4fb87797f62d9d14c562f7781e88626c78 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 4083f58289437da52f1e86663363827a78e9422c..9ad9dfe5d6596cd946cd5ddfeadc573c57bfd5e3 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index df1876589351f36bc10dfdb333b75da5a672149a..28b4b1dcedcb70fb8785240f334ae56b1b9556ce 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 8cf754248277a529f7c4c470bf6b01e48b012e9b..21142017b25a75bee18c6a0dee7df844d6e02b43 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 3c1f9d4264a9e986ccc338d9991dfe60e8352f42..6f09ce2dc47be2a183fd2f7af9ea2a650a6427ec 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index b873cd9e58752d02c3b7fb92f7ee6e814633a3fa..f5704949fba3f8ada6279c204184e3e3f7aa31e8 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 32a59f463bf481b1ac98d4d80d1c8d532f14f503..d0e0abed85a959d002c9cd631f98beca2da09158 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -423,7 +423,7 @@ namespace MEDCoupling
           value[ielem*ncomp+icomp]=_recvbuffer[counters[iproc]*ncomp+icomp];
         counters[iproc]++;
       }  
-    _local_field->getField()->getArray()->useArray(value,true,CPP_DEALLOC,nb_local,_topotarget->getNbComponents());
+    _local_field->getField()->getArray()->useArray(value,true,DeallocType::CPP_DEALLOC,nb_local,_topotarget->getNbComponents());
   }
 
   void ExplicitCoincidentDEC::sendData()
index bb2a3147c325c39a6a867cd507923ea337b48a1b..9231a9a7dcb9ee39dd252b576a75f6beb4f81d10 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 1f89d8ba90ddd5a8c0e3b4ff739519af6c5aad6e..7eff1780d8609dc67b3b0eea13d1d1c0a4556329 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 65ac5edf88246823e5cc1cfcf1d569e23bfc164b..dcd69cf7eb11fc4952c91f0f5a78a9a33775551c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 3812db4f9c3c21a789989c6ac61cb231858a77a2..d6cf32c83fcb66295971bddbce99dd00ca05a5d0 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 1dbedf084d4fe3ef67c608e37c599d72669fbaa4..6f2d42bc80c7321c55b8eec0b885382895ef7402 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 59dfbe9a92587999b7923bda8c617a749647a17e..5d87ac87302fb33da60f657c4e5fe22a24a436af 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index f0ff0ff9fe8f098ee7f5d500bd90d6c2db179c0a..9250330a6afb68953ac089bf1e6de5e4f23c88eb 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index cf256fa7ec4e32c11f53ae4d01c8f61463b0b884..c3d813dd97060bbabb54dcbd41e3e30afe198303 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index a9dcef734557f0e80f71727d257312480ec1ea22..050ffcf4a766345120ebc6bdd3795ad31cf57e3d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index de500ca6a60c1d8ac480834baadbe2d4f5d5d9c0..8cb624e3d07c8cb3e4025b398990e3c1fb7f2b4f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index bf867ade664b9164145b682475c2a78a0405ab5a..856eff3fe6025715b97899b5e2e4bda65712b4b4 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 1bb3dcf8a9a57443a23a1fcf04beff0d896a2a8b..8b5878dc939d18b4b7d541609801d7176a29da23 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index f43a68d0312793a4f0748b3258c066b6a88451b0..782c68a253df158ca6e73f99b9f3335ec2623106 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 5ea795f6b67fa82d7ddbf52f521715fc26025240..5c74dbec7acf0a4d9e8e6b320c639be9638d162d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index d928140f1f28b81ccf75a7a3664a1f048064d412..998f6e8c62cd78c3c471bb8ed3b9484987436a82 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 6e13d8502ff3222be94fdc90ac112182c0ba4bcf..7cbdb769204297e7a9d286b1ce6922c5d3f752f1 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 25eff81c998200ceb5634034c1f0683ef7e611d5..b1375dd3ceaccd7f10153d3de7baf1509f68a136 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 5648dfe1d84cb92620da70e42a61d7558025134d..b7d561304f6a23d323365f41675e063039714a44 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 0c95c6ae7bd35f9e2ba67127f700b1c8cb5b335d..c19493db2f7cab8d51676591ba705388b01bd490 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 9c62a6b6b0ca67b66c863f89110536c02a510f8f..ec90149eb9d9a7df8ff4e04ff9123d05e2510c63 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 8eeda1bbbe3d9357321061b8f0da5799721dab00..e63e2be73e91f725fc31ee67fafb97c2b0469f5c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index b52717449a177a03e85336707c5650c264ec816e..fe06c5290979b152e82f2d38142630ef78aa6f8f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index c510617f336b0107dbee8e08bcaaeacfbe054dbd..6e161171e29d0831f3da46688b56ca778f3f8f53 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 6a50eb114c34f5ee59392c759012dae74cde79df..0138eec6e06e59137b5dd3e38c9e5bd74b9a0797 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 4b37b31bf5ede7dbc3d1b3758cf25cb1a6ccf0e3..fff82010fee63fed1b226684d4f2b90bfea4f3d6 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 6fdc35ff7e28c25e95ec03e84eb8a2e87e2f5a9c..5e03f9d6a42f2755c4911ccc590c70f1391cebcc 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 6543044b6fb4905de5867436ac720cd90d3ba5f4..89715ec74517f223e5d95f3248ea2d2f2ff1f543 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 4be5c883a7f6e73e13e64372730c602667f24c60..3a68b78e6d610dbf33911afdb62a57f6c9c0ad35 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 03d0d7f8a3c37862eab375557994cfa52044f4f0..ef3ed4c49018797d93861612cdf4532a56785cd3 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 1cdcfd821129b5d90fce96e175e59b67131cbdfa..e1e1886fc75ce0696e37642c8587a550de86678e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index fa5f8bca8d9e21529c8ad0f3f404fcc6051c83eb..afdfbc0073694b54d74f1e2093b4dfb08998006f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 4bd8ea08a643db5ff3bc56c2b8e593f6201a06cc..51292d180905705bd943a0ebe799855092d81780 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 1f6fe94cc23bcdb81002d5e9569af35b103015c5..3348c07dc54f71f2b9acaa43ad51d34fa47c52ae 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 65ae2ddeb06e8e87d5d0c956fb48af523ca73454..cc559819404c7cbb5bc90244ad6fcb68813892be 100644 (file)
@@ -1,5 +1,5 @@
 //
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index b669ac980daeac362a9d866e1f1931ea451392cc..d66fe0f4cb5bde79ad228ba6847c47926825aaf7 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 69883624b80db759ca1c5ff05bff0f1bd71bdce9..fe168677aa1846d1e195f3d28b715c7f51ff04f6 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index f53feb95ba86a028d75be6d60157c0765c595b60..2b10a21844614198f730dbb2d2f934b2df9ac2e2 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index a7f0f61b557e278bad0ffdc9694cb60f53e0186a..2a8acfc2903a60752eecaad14311a05bf543afe2 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 03beee430fff25258093b16372ae31c4edaaad3b..ce05c774058cfd21a3536d7c1951a6e0d068dd50 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 137a0d854d5408af0a23bf657c8b1bd4e49b56bc..ab19e8630a6dcbfdf2866061dde0a8d8954c0e6a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 630d2cbc59525e0547f9d34d2799ca5726651305..862b4f009949fc4b18b3ef616b6b85fa363edb51 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 01da27c3b32e063858c6c1d446536f3cc083986f..571209db8d2fd5d79bae574cbfb1539e8cf77f7b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 6aaaa525a6f4e825a2de997223661f8a24c8d272..101ecbbe0e136af61872a5458c7d3afa1327ba9f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 7c376fb6c89d7d9b02abed4345e886f2fd983372..1812266dae5dee9bee5ab190055e052d405b51b9 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2016  CEA/DEN, EDF R&D
+# Copyright (C) 2012-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index f68206f1494d91f6c5beca72eff41e776f30319a..de2d1f787e3a6275e76b5fb30aa5ad39e1da5dd2 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index e6ee328b328080f0f331e8339760e56605a60a24..823c258c51406cf3eff09b19e0b3f29f0e99dde9 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 69a011fdc8c2d1e172c0ea79f7f301caf4971a7b..45eacbb1ba4605de73e648f4dd6b9ec512f99dda 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index b850f6110373ace37b92d89902fd9ff824ebe9d8..9a3310a4a37c67ab27208346b8a5e15de68ad2da 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index f917ec0bd9c7dcb8191dbeb59f97c53dab745046..938d123de6d3e575cc8714ea39e70b9d7ce4d0a3 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index dee18a0e57b9268fc6a544c5dcd9fb113a754cce..e9de80fcca55f7361cc14338955b778e2dd7c91c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 9428e73c932869392ab0d344b8b9fb087472dd13..4930de9324044470aa92daae1d4f4d642df0f05e 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 829ee8654e37d72f29b58429df867d56871963e2..f157864faa58a59d12a0dfa905c52ad04fcf3c5c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 0f535bb420775a14de4b52d9b5f00e273c6a2463..4dcc70e730cd74004f69f0470220e42e50555365 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 23b298606e23fafe0d18153320fa1cd4e2558464..cb3725380754485f6e9726ac7b1520b0d8759d03 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index acc3588141f14490c322eee5c91a6ecd6f84f597..29265f665ce2e701d2ab2e19e5d93c20b0005908 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 618fe95b5234cfe0d1ce55dfaf632563e84000e0..c8521a8cb4a0caf7c8e587e7fc2599fd34f47731 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index ff0f759a06c92abf6dc5e0bb93841fe1a4fa006c..6e3d5a80c2f6fb11ea059e82aec265822e9b3d47 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 587a73a97baa7a761a96aacc551ae38f826676ac..5c05af4fa4f9600913393667158b5ed5ad7140d7 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 480c0d54f0b003a79e8731b5aebb37b700593939..46b42b8ca80a92ccabcff46dddfa0b1a8ec2a4b9 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 7f6ef3893a9a0646a50b5a5a8e4a018cc9b5001e..7be3eb00351c727bb3d1d074963472de237a9870 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -1477,7 +1477,7 @@ void ParaMEDMEMTest::testInterpKernelDECNonOverlapp_2D_P0P1P1P0()
           paramesh=new ParaMESH(mesh,*target_group,targetMeshName);
           DataArrayInt *da=DataArrayInt::New();
           const int globalNumberingP2[5]={0,1,2,3,4};
-          da->useArray(globalNumberingP2,false,CPP_DEALLOC,5,1);
+          da->useArray(globalNumberingP2,false,DeallocType::CPP_DEALLOC,5,1);
           paramesh->setNodeGlobal(da);
           da->decrRef();
         }
@@ -1498,7 +1498,7 @@ void ParaMEDMEMTest::testInterpKernelDECNonOverlapp_2D_P0P1P1P0()
           paramesh=new ParaMESH(mesh,*target_group,targetMeshName);
           DataArrayInt *da=DataArrayInt::New();
           const int globalNumberingP3[3]={4,2,5};
-          da->useArray(globalNumberingP3,false,CPP_DEALLOC,3,1);
+          da->useArray(globalNumberingP3,false,DeallocType::CPP_DEALLOC,3,1);
           paramesh->setNodeGlobal(da);
           da->decrRef();
         }
@@ -1520,7 +1520,7 @@ void ParaMEDMEMTest::testInterpKernelDECNonOverlapp_2D_P0P1P1P0()
           paramesh=new ParaMESH(mesh,*target_group,targetMeshName);
           DataArrayInt *da=DataArrayInt::New();
           const int globalNumberingP4[6]={3,6,7,4,8,5};
-          da->useArray(globalNumberingP4,false,CPP_DEALLOC,6,1);
+          da->useArray(globalNumberingP4,false,DeallocType::CPP_DEALLOC,6,1);
           paramesh->setNodeGlobal(da);
           da->decrRef();
         }
index 4a12c86cbfde837a6f28955dccf5bd43b069ecbc..c19ec5c9b7138fb6f230c8cd0eed48b032edbe9a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 8e9add8b721b3a7cdd05bbbd6fb5e9106ea80dbd..46955b642e42791aeb7125fe0b8e1a59f0f96ad3 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index e3926ce722ca56e21cf6f92b862af5230cbe8f40..83de0ed134b678c40e4065d3860c1aeff2c79f29 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 5969e2be045dd6abf0e4323310cbcc06d827cb73..410b5ce6a3a6ca6154e8c6f0c6b9298f3b621c00 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 8f509f771f4c2fa7c4540a489226ff00c1d85c48..b538f7317c6c5ed895fdd15f032ce78306d3f195 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index e697c61a16f9a7c8aa3ffd332d53c7b74e2676c1..2276eb317665aed8b6e37b5ccb4ce1d0098c3b7b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index fad1172be0f06da9125508afa2bd3717a6473d0f..87e0442e91e2c5c4b0038e16cfbbad6b5c2041fe 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 2d5ed029a1331b728e33856c0921cb48fc46e437..89c598c922453b1bfaa6a5fdbecf28f210b24865 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 12914c3c9f4bebc5f61e5423aa128613f874b876..8fb419130ab1b5bbf4681ccf2afc4f3ad4497ac6 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index f3220f60f125dfc9845156145e276f9c6ed362a0..9e4d017b01d6adb4c3a74a001424c69f31959c57 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index f63c4779e32ae98aa108de50daccca2ddedc8e52..76d25ecaa031931a99c4ee4b82e1f6fd7476ec0c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 348899465e803e106e7ee616fb3f8dff8ab3a87a..56dcbfb634a1fa7cfca54099a7fab9348a141d21 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 67dc8f632131ebf51433b5cca22fc160e00607ae..6177856f1edffedeaede9f60ea882842c587eed3 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 50a159da670c06c99c92c12677dce03dab2a9da4..aede4ceece7ac8ccfcaa0d1294096cb897eaacf6 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index d86d35438cf035375e29ab75aef661e8906ab5f6..fac37628b18d13add5ab9495cefdc8ab99493008 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index c4daa2f5f3e02a2f7ea3641a955e443d32dce215..baf411aed3aea0ea24caaa696c81ba73c20cac05 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 653b68627c54e3f4b7ff29ac257f98f3df66d582..bbe5a0671c47fa030f73dca6848dd8b1f6f35099 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 91d2d1576108d89b97f433f1ace75da3ffa128be..c9af055ad8ffdebf4c2305d084cefd86526ea024 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 5eea76f5cafd943f0d0578dd406f74b30c3f5708..e67779d7ef6d21abc47514bb3549b3adbca75058 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 32b375f505ed450bd69539797fa5c48b7f82acc1..91ac08544e508ecda47d68ff3491830e5f297c29 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 0925eb5096db962ff57cb7d719a80d585aea914f..739c3953f93963e72ac0bc4e7ddcda5d3a05d898 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index d940e82501fd896281b98fd050614e8950200a8a..0b2d44139a544251f36bdf80b21e4e2b706c413f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 01c7cc3e8d847176817ce1d61e8eb265a6c10521..abed9328716378f8832763f80fa67dfcf0a62a6c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 20a1696095f67b5717b25f67b0a85982a1fa73a9..295b602dbe74007b2740940a6cf196badeb025df 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 7bcad79880d91c9d16fbce50bb5018c7aabb49e6..57a64e16f33e270a4620ed886e3f9c1f204da317 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index c7553750377bbaa9a6029c41762322afd37b766c..99cb1f0171ad312d46b6f3d71b8c4c2a15c0e5ef 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 73d0e6ce9159ab7820acb4b808961ffa46e766b4..82a7da4ef2807a668eed0fa525955237c6ce6092 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 4d7dd6d886b69108c34d19a2ae9f83ca6ab1e615..78eba155167a93008732cf98caeb6fcb484e7480 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index b3563aa88d398d9cb54d55515f05e2094491f49d..2ca88cb88c19bb52fc02067b29ddd402195d5163 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index f93436fb8fd5f8879ef6de07628d109f92167f97..1e77d563232b7dd301aee6fadecc1a5c4f7320e2 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2016  CEA/DEN, EDF R&D
+# Copyright (C) 2012-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 3f8ba08bbffb3c4b25e18e817bdbfbb0debbdaff..66266c53833c1e9815ad8f5b4fcb2dcda690407f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index c5b760a542bec7a85334808878b95b6c5e15637d..ce712e1f9752e641854dfdad59c989458a7ff8b2 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2017  CEA/DEN, EDF R&D
+// Copyright (C) 2017-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 539d452c7972044994d963326b50d8eb1df0f810..a65c4638cd0073da05336a9647f66e62cd8b446c 100755 (executable)
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+# Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 5df6ca3637c1f32d548b20e19f7c939a509868b0..3b927d8e7bb1fcfd83713188d6b6837b9364a1aa 100755 (executable)
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+# Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 48cfb7c2116339896184eba93b7690f743eb9a64..9f4d12d9a9b18a7df78a0e87b2761dd3fe35cae6 100755 (executable)
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+# Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 1ec4528c062cdba04c10ba035d8027cfe1e4e067..da2744526364be45a34beb7132d8ce1a1ece34c3 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2017  CEA/DEN, EDF R&D
+# Copyright (C) 2017-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 0e2eb7f6b95e858908a48f839d3c4db78dc81a7f..8603958d0b83db72ba0b3d4627c108391d640349 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2017  CEA/DEN, EDF R&D
+# Copyright (C) 2017-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 79a2b6d18ca9a92dbbee5ecfad6ece73086091ed..551df46891f235137a8d70255d887f998b5656a3 100644 (file)
@@ -1,5 +1,5 @@
 #  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2017  CEA/DEN, EDF R&D
+# Copyright (C) 2017-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index c97318d5b366b7baf6bdee822caa4aa6a5130304..72032a3a470d8629dbb660b85007d36fdad47aeb 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2017  CEA/DEN, EDF R&D
+// Copyright (C) 2017-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index d2e6c7df92dfd972f7dc5845f1a394671f2450e5..05794b32a5a509a8c4a75c969f2bff093ee5b116 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2017  CEA/DEN, EDF R&D
+// Copyright (C) 2017-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 4cabfc492757d44afff483078eb343e5127ee6e0..80a3a842d346056dce18fe16400be73750d395cf 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2017  CEA/DEN, EDF R&D
+# Copyright (C) 2017-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index d260bf274d8c76d7726bd2eb9488679bd1dabe7f..1b9b419b69561942e8fe80fc493b5f44ba85631f 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2016  CEA/DEN, EDF R&D
+# Copyright (C) 2012-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
old mode 100755 (executable)
new mode 100644 (file)
index 13b7506..9aca3ba
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 05572e77077481f8cb98fbf9620ce3860787344f..094446a650d7b0920375ef6183a72570641547f8 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index a9b58ab9d5f95b2f7e11dab4431456cdec8b1a87..f82bab2a73c255a49d29689f98bc251163dd055d 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index b89d793e53ffa61f68b41239a5f2dc0a87abfc95..3fb90960e6cda8a991937ab8acc6ad14038a0eda 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 78de7cf4c8e4801ee9061d678061a43ff3c6a255..c29dd241992198ff22bee475bdb928bc1a4bc3a5 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index f022594a723a0c82410e99e3a5c46b80649da04d..e7fc122279f41ba66117c0213ab277a17f455de1 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 2654193c8001fea753e350505b583df15e4e559b..12e034b494ce618a395b5d33d245cb166e924a9a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 2da7cde909324327eeecc7c95a356728094397ef..6f05fae660c5c4df0872a2babbc6c2adedc1d2a3 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 8e3b65d399c6617524001c4be047fe2ac19ca896..ee9feb57e87e588336c0c2bf5b98e7c3c2d86254 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index f3fcec95ee872e831c3fff12df6c905189f736cd..50d78d78e73ba9a8b6bf65ad8c106522608bfdaa 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index ca09ecb8ffd50151d3239cff42b0eae0a1430713..7d3cb81b7b8775dd4e4e6e36f2c9bcf4295aedd9 100755 (executable)
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+# Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index fac3ae3a0ff02ee94cfcee5874991f8925165b40..ed6342403ed3d174da06c8da7ab6e25e320cd98a 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2016  CEA/DEN, EDF R&D
+# Copyright (C) 2012-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index febe92def22c0196a09d160f48ad0a3eb502b29c..b1ff7db290c50d397a1fd47f62a46c356c1ce347 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2015-2016  CEA/DEN, EDF R&D
+# Copyright (C) 2015-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 5c6a3646f3fa41c7a09b342325a84cbc6c5ca887..2060dd0e1cd11a46d60886821e139293a81eece8 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index dbcae633e7c03153d949e858122f2aa46459ffd5..2224e52f08f989fe5f5581cc3babf8b8683e1b7a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
index 489a8a3b5d92397a064ca432bc2a415e0b0547b5..21c5c8e9d88dbffe517feecb01e28b527f0ca284 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2017  CEA/DEN, EDF R&D
+// Copyright (C) 2017-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -32,7 +32,7 @@ class Renumbering
 public:
   %extend
   {
-    virtual PyObject *renumber(const MEDCoupling::DataArrayInt *graph, const MEDCoupling::DataArrayInt *index_graph) throw(INTERP_KERNEL::Exception)
+    virtual PyObject *renumber(const MEDCoupling::DataArrayInt *graph, const MEDCoupling::DataArrayInt *index_graph)
     {
       if(!graph || !index_graph)
         throw INTERP_KERNEL::Exception("wrap of Renumbering::renumber : One of the input arrays is NULL !");
@@ -51,7 +51,7 @@ public:
 
 namespace MED_RENUMBER
 {
-  Renumbering *RenumberingFactory(const std::string& s) throw(INTERP_KERNEL::Exception);
+  Renumbering *RenumberingFactory(const std::string& s);
   std::vector<std::string> RenumberAvailableMethods();
   std::vector<std::string> AllRenumberMethods();
 }
index ba44c08463f8fcd4e319902e6566af842ef96477..a842039d40c81a19498a9ff344c71f34609629d3 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2016  CEA/DEN, EDF R&D
+# Copyright (C) 2012-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index 6713ba7cabe1e94e741a08f7abd724e3f942b385..63b66c9ff045c855ed5146e0ba05ecf25417ba2a 100644 (file)
@@ -1,5 +1,5 @@
 #  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+# Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -23,7 +23,7 @@ import sys
 if sys.platform == "win32":
     from MEDCouplingCompat import *
 else:
-    from MEDCoupling import *
+    from medcoupling import *
 
 from math import pi, sqrt
 
index fde91aa336b8eed0d9360b432535fb66bf1e0c33..f3f230c9c40127a0fcb8eda8e358150031e65527 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2016  CEA/DEN, EDF R&D
+# Copyright (C) 2012-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
index b387e5303e739ea56fdf87fc98c3edcc175daf77..a3c41fee827d272b79aebbd4b2637d26aa262288 100644 (file)
@@ -1,3 +1,22 @@
+# Copyright (C) 2016-2019  CEA/DEN, EDF R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
 import os
 rep=("namespace ParaMEDMEM","namespace MEDCoupling")
 rep=("ParaMEDMEM::","MEDCoupling::")
index f3044a3b6700d0b1614d850ea3a8fd5170f3390f..a06a4f5988d26c0da2af85150fb5d4ad225c9cb2 100755 (executable)
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+# Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public